внутреннее соединение с инвойсом - PullRequest
0 голосов
/ 23 ноября 2018

Я сделал этот запрос SQL и получил необходимые заказы на продажу, но мне все еще нужно присоединиться к этим заказам на продажу с их счетами и отфильтровать только те заказы на продажу, которые имеют счета с state != 'draft'.

, но могутНе могу найти способ объединиться с заказами на продажу по счетам.

Я думаю, что есть таблица с именем sale_order_invoice_rel, но не могу понять, как правильно объединить и отфильтровать

SELECT DISTINCT so.id

FROM stock_picking sp

INNER JOIN stock_move sm

ON sp.id = sm.picking_id

INNER JOIN procurement_order po

ON sm.procurement_id = po.id

INNER JOIN sale_order_line sol

ON po.sale_line_id = sol.id

INNER JOIN sale_order so

ON sol.order_id = so.id

WHERE so.invoice_status = 'to invoice' and sp.state = 'done'
ORDER BY so.id ASC

1 Ответ

0 голосов
/ 23 ноября 2018

Вы можете присоединиться к ним следующим образом.

    FROM stock_picking sp
                       INNER JOIN stock_move sm ON sp.id = sm.picking_id
                       INNER JOIN procurement_order po ON sm.procurement_id = po.id
                       INNER JOIN sale_order_line sol ON po.sale_line_id = sol.id 
                       INNER JOIN sale_order so ON sol.order_id = so.id
                       -- keep join them like this
                       INNER JOIN sale_order_invoice_rel so_inv_rel on so.id = so_inv_rel.order_id
                       INNER JOIN account_invoice inv on so_inv_rel.invoice_id = inv.id

    WHERE 

            so.invoice_status = 'to invoice'
            and sp.state = 'done'       
            and inv.state != 'draft'        

Использование INNER JOIN покажет только заказ на продажу, имеющий счет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...