Odoo 8 - Datenbank-Verknüpfungen - Verkaufsauftrag / Lieferscheine / Rechungen
In diesem Artikel soll kurz aufgezeigt werden, wie man ausgehend von einem Verkaufsauftrag auf Datenbank-Ebene (SQL) die Lieferscheine und auch Rechnungen selektieren kann.
Ausgangspunkt ist die Tabelle: sale_order
Hierzu gibt es eine Many-to-many Beziehungstabelle: sale_order_invoice_rel bei der man über die order_id und die invoice_id die jeweiligen Datensätze joinen kann:
SELECT SO.* FROM sale_order SO JOIN sale_order_invoice_rel SOR ON SO.id = SOR.order_id JOIN account_invoice AI ON AI.id = SOR.invoice_id
Um die entsprechenden Auslieferungsaufträge (Lieferscheine) zu einem Verkaufsauftrag zu ermitteln muss man einen gänzlich anderen Weg gehen.
Odoo generiert eine Beschaffungsgruppe, die für die Verknüpfung genutzt werden kann. Hierfür verknüft man die procurement_group_id der sale_order mit der group_id des stock_picking:
SELECT SO.* FROM sale_order SO JOIN stock_picking SP ON SP.group_id = SO.procurement_group_id
Das folgende Statement ermittelt alle stock_move (Auslieferungsauftrag-Positionen) zu einer Rechnungsposition. Wichtig: Es gibt keine direkte Verknüpfung. Man kann lediglich feststellen, welche Auslieferungsauftrag-Positionen das gleich Produkt besitzen. Bei Teillieferungen bekommt man mehrere (stock_move)-Positionen pro Rechnungsposition ausgegeben:
SELECT SM.* FROM account_invoice_line AIL JOIN sale_order_invoice_rel SOR ON SOR.invoice_id = AIL.invoice_id JOIN sale_order SO ON SO.id = SOR.order_id JOIN stock_picking SP ON SP.group_id = SO.procurement_group_id JOIN stock_move SM ON SM.picking_id = SP.id AND SM.product_id = AIL.product_id WHERE AIL.id = 12345