[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
This commit is contained in:
david
2021-11-23 13:36:15 +01:00
committed by Ernesto Tejeda
parent bdbe7cdf6a
commit aa61d9fa87
2 changed files with 12 additions and 3 deletions

View File

@@ -3,7 +3,7 @@
{
"name": "Valued picking linked with MRP Kits",
"summary": "Allow to summarize the picking related with the selled kits",
"version": "13.0.1.0.2",
"version": "13.0.1.0.3",
"development_status": "Beta",
"category": "Warehouse Management",
"website": "https://github.com/OCA/stock-logistics-reporting",

View File

@@ -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]