From 99b9874ab3c09b41a1b7439bba92420ad9170357 Mon Sep 17 00:00:00 2001
From: Simon Lejeune <sle@openerp.com>
Date: Thu, 9 Nov 2017 14:07:00 +0100
Subject: [PATCH] [FIX] mrp, purchase_mrp: purchase_line_id also with kits

When confirming a move for a kit, it is basically unlinked and replaced
by moves for its component. The link to the purchase line was kept in
v10, but since rev[1] it is not anymore. Make an helper to get the
values and override it in purchase_mrp to add the purchase line link.

[1] https://github.com/odoo/odoo/commit/8248f0e153ae5fcc1449d0d05149b61df615ad4f

opw 779497
---
 addons/mrp/models/stock_move.py            | 19 +++++++++++--------
 addons/purchase_mrp/models/purchase_mrp.py | 11 +++++++++++
 2 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/addons/mrp/models/stock_move.py b/addons/mrp/models/stock_move.py
index 8641c6cf8299..670ba2881653 100644
--- a/addons/mrp/models/stock_move.py
+++ b/addons/mrp/models/stock_move.py
@@ -173,16 +173,19 @@ class StockMove(models.Model):
         self.sudo().unlink()
         return processed_moves
 
+    def _prepare_phantom_move_values(self, bom_line, quantity):
+        return {
+            'picking_id': self.picking_id.id if self.picking_id else False,
+            'product_id': bom_line.product_id.id,
+            'product_uom': bom_line.product_uom_id.id,
+            'product_uom_qty': quantity,
+            'state': 'draft',  # will be confirmed below
+            'name': self.name,
+        }
+
     def _generate_move_phantom(self, bom_line, quantity):
         if bom_line.product_id.type in ['product', 'consu']:
-            return self.copy(default={
-                'picking_id': self.picking_id.id if self.picking_id else False,
-                'product_id': bom_line.product_id.id,
-                'product_uom': bom_line.product_uom_id.id,
-                'product_uom_qty': quantity,
-                'state': 'draft',  # will be confirmed below
-                'name': self.name,
-            })
+            return self.copy(default=self._prepare_phantom_move_values(bom_line, quantity))
         return self.env['stock.move']
 
     def _generate_consumed_move_line(self, qty_to_add, final_lot, lot=False):
diff --git a/addons/purchase_mrp/models/purchase_mrp.py b/addons/purchase_mrp/models/purchase_mrp.py
index 25bfef78e858..776b1e460467 100644
--- a/addons/purchase_mrp/models/purchase_mrp.py
+++ b/addons/purchase_mrp/models/purchase_mrp.py
@@ -28,3 +28,14 @@ class PurchaseOrderLine(models.Model):
                 return self.product_qty
             else:
                 return 0.0
+
+
+class StockMove(models.Model):
+    _inherit = 'stock.move'
+
+    def _prepare_phantom_move_values(self, bom_line, quantity):
+        vals = super(StockMove, self)._prepare_phantom_move_values(bom_line, quantity)
+        if self.purchase_line_id:
+            vals['purchase_line_id'] = self.purchase_line_id.id
+        return vals
+
-- 
GitLab