Kategorien
odoo Software Tutorials

Neuer Report in odoo

Wenn wir die Berichte für Kunden maßschneidern, erstellen wir für gewöhnlich ein Modul mit dem Namen des Unternehmens.

In diesem Modul (App) finden sich dann nicht nur Reports, sondern auch für das Unternehmen spezifische Einstellungen bzw. weitere Felder. Sofern es nötig ist, können mehrere Module für ein Unternehmen erstellt werden. Beispielsweise eins für die Reports und eins welches das Modul „Projekt“ erweitert.

App erstellen (Scaffolding)

Am sinnvollsten ist es, „scaffold“ zu benutzen:

$ odoo-bin scaffold <module name> <where to put it>

Mehr dazu unter https://www.odoo.com/documentation/13.0/howtos/backend.html

Es werden einige benötigte Dateien mit Platzhaltern erstellt. Diese müssen noch angepasst werden. Gerade die Bereiche „name“ und „depends“ sollten angepasst werden!

Versionsverwaltung (git)

Es macht auch Sinn, dieses Modul gleich in eine Versionsverwaltung aufzunehmen.

$ git init .
$ git commit -m "initial commit"

Angebot / Auftrag (Sales Order)

In unserem Beispiel ändern wir den Report für Angebot bzw. Auftrag. Odoo gibt die Verzeichnisstruktur vor, wobei es unerheblich ist, welche genutzt wird.

Quelle: odoo github

In einem Ordner report landen alle Berichte die später z. B. zu einer PDF umgewandelt werden sollen. Wir nennen unseren Bericht „report_saleorder_document.xml“. Um hier schnell Erfolge zu erzielen, ist es am einfachsten, den vorhandenen Report als Vorlage zu nehmen:

https://github.com/odoo/odoo/blob/cd9c071c9357cef14635ef094a9f14fc5431956c/addons/sale/report/sale_report_templates.xml

Zwingend muss aber der Tag <template id=“report_saleorder“> angepasst werden. Jede Id wäre denkbar, aber wir nehmen als Beispiel:

testfirma.report_saleorder bzw. report_saleorder_testfirma

Jetzt können schon die ersten Änderungen vorgenommen werden.

Die __manifest__.py enthält alle zu ladenden Dateien. Im Bereich „data“ können wir nun den erstellten Report bekanntmachen.

Anschließend muss die App in der odoo.conf bekanntgemacht werden und ein Serverneustart erfolgen.

Die App ist jetzt unter Apps verfügbar und kann installiert werden.

Nach der Installation lässt sich der Bericht am schnellsten mit folgender URL testen:

http://localhost:8069/report/html/testfirma.report_saleorder/1

Der letzte URL-Parameter (1) bezieht sich auf die Datensatz-Id im Model sale.order.

Wenn nun Änderungen vorgenommen werden, muss die App neu geladen werden. Dies geschieht über Apps – Name der App und dann „Aktualisieren“ bzw. „Upgrade“.

Druckschaltfläche

Um den Report aufrufen zu können, benötigt die entsprechende Ansicht eine Schaltfläche. Diese wird in einer weiteren XML-Datei abgelegt. Wir nennen sie action_sale_report.xml.

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <data>
        <record id="testfirma.action_report_saleorder" model="ir.actions.report">
            <field name="name">Angebot - Auftrag</field>
            <field name="model">sale.order</field>
            <field name="report_type">qweb-pdf</field>
            <field name="report_name">testfirma.report_saleorder</field>
            <field name="report_file">testfirma.report_saleorder</field>
            <field name="print_report_name">(object.state in ('draft', 'sent') and 'Angebot - %s' % (object.name)) or 'Auftrag - %s' % (object.name)</field>
            <field name="binding_model_id" ref="model_sale_order"/>
            <field name="binding_type">report</field>
        </record>
    </data>
</odoo>