diff --git a/rma_sale/migrations/15.0.1.0.1/post-migration.py b/rma_sale/migrations/15.0.1.0.1/post-migration.py new file mode 100644 index 00000000..0082eb17 --- /dev/null +++ b/rma_sale/migrations/15.0.1.0.1/post-migration.py @@ -0,0 +1,31 @@ +# Part of Hibou Suite Professional. See LICENSE_PROFESSIONAL file for full copyright and licensing details. + +import odoo + + +def migrate(cr, version): + """ + Update sale_line_id on existing RMA lines to allow completing the RMA + """ + cr.execute(""" + UPDATE rma_line AS rl + SET sale_line_id = order_line.id + FROM ( + SELECT rma_line.id, rma_line.rma_id, rma_line.product_id, + rank() OVER (PARTITION BY rma_line.rma_id, rma_line.product_id ORDER BY rma_line.id) AS rline + FROM rma_line + WHERE rma_line.sale_line_id IS NULL + ) AS rma_line + INNER JOIN rma_rma rma + ON rma.id = rma_line.rma_id + INNER JOIN ( + SELECT ol.id, ol.order_id, ol.product_id, + rank() OVER (PARTITION BY ol.order_id, ol.product_id ORDER BY ol.id) AS oline + FROM sale_order_line ol + ) AS order_line + ON order_line.order_id = rma.sale_order_id + AND order_line.product_id = rma_line.product_id + AND order_line.oline = rma_line.rline + WHERE rma.sale_order_id IS NOT NULL + AND rma_line.id = rl.id + """)