From d824d809f941f9e89b07f1e3aa3ada168e6fff83 Mon Sep 17 00:00:00 2001 From: david Date: Tue, 23 Nov 2021 13:36:15 +0100 Subject: [PATCH] [FIX] stock_picking_report_valued_sale_mrp: multipicking When the recordset comes from multiple picking we could get a wrong calculation of the mrp lines in the report when the conditions of same component for the same order line would apply. So for every picking we have to compute the kits valuations independently. TT33076 --- .../models/stock_move_line.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/stock_picking_report_valued_sale_mrp/models/stock_move_line.py b/stock_picking_report_valued_sale_mrp/models/stock_move_line.py index 718d3c1..f8a8d3a 100644 --- a/stock_picking_report_valued_sale_mrp/models/stock_move_line.py +++ b/stock_picking_report_valued_sale_mrp/models/stock_move_line.py @@ -37,13 +37,22 @@ class StockMoveLine(models.Model): amounts according to the corresponding delivered kits""" super()._compute_sale_order_line_fields() pickings = self.mapped("picking_id") - kit_lines = pickings.move_line_ids.filtered("phantom_product_id") pickings.move_line_ids.update( {"phantom_line": False, "phantom_delivered_qty": 0.0} ) + for picking in pickings: + self.filtered( + lambda x: x.picking_id == picking + )._compute_sale_order_line_fields_by_picking() + + def _compute_sale_order_line_fields_by_picking(self): + """We want to compute the lines value by picking to avoid mixing lines + if they weren't shipped altogether. + """ + kit_lines = self.filtered("phantom_product_id") for sale_line in kit_lines.mapped("sale_line"): move_lines = kit_lines.filtered(lambda x: x.sale_line == sale_line) - # Deduct the kit quantity from the first component in the picking. + # Deduce the kit quantity from the first component in the picking. # If the the kit is partially delivered, this could lead to an # unacurate value. phantom_line = move_lines[:1]