From 096a39b3e9b6427fd14b6bfa0f1fa612cdb0a485 Mon Sep 17 00:00:00 2001
From: Simon Lejeune <sle@openerp.com>
Date: Tue, 26 Sep 2017 11:48:52 +0200
Subject: [PATCH] [FIX] stock, mrp: _get_similar_move_lines

try to make it work actually.
---
 addons/mrp/models/stock_move.py        | 11 +++++++----
 addons/stock/models/stock_move_line.py |  5 +++--
 2 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/addons/mrp/models/stock_move.py b/addons/mrp/models/stock_move.py
index 4ed7b64dcd6d..757f242aff14 100644
--- a/addons/mrp/models/stock_move.py
+++ b/addons/mrp/models/stock_move.py
@@ -20,11 +20,14 @@ class StockMoveLine(models.Model):
     def _get_similar_move_lines(self):
         lines = super(StockMoveLine, self)._get_similar_move_lines()
         if self.move_id.production_id:
-            lines |= self.move_id.production_id.move_finished_ids.mapped('move_line_ids').filtered(lambda l: l.lot_id)
+            finished_moves = self.move_id.production_id.move_finished_ids
+            finished_move_lines = finished_moves.mapped('move_line_ids')
+            lines |= finished_move_lines.filtered(lambda ml: ml.product_id == self.product_id and (ml.lot_id or ml.lot_name))
         if self.move_id.raw_material_production_id:
-            lines |= self.move_id.raw_material_production_id.move_raw_ids.mapped('move_line_ids').filtered(lambda l: l.lot_id)
-        if self.workorder_id:
-            lines |= self.workorder_id.active_move_line_ids
+            raw_moves = self.move_id.raw_material_production_id.move_raw_ids
+            raw_moves_lines = raw_moves.mapped('move_line_ids')
+            raw_moves_lines |= self.move_id.active_move_line_ids
+            lines |= raw_moves_lines.filtered(lambda ml: ml.product_id == self.product_id and (ml.lot_id or ml.lot_name))
         return lines
 
     @api.multi
diff --git a/addons/stock/models/stock_move_line.py b/addons/stock/models/stock_move_line.py
index aa7ce69233cc..03874b0308dd 100644
--- a/addons/stock/models/stock_move_line.py
+++ b/addons/stock/models/stock_move_line.py
@@ -128,8 +128,9 @@ class StockMoveLine(models.Model):
     def _get_similar_move_lines(self):
         self.ensure_one()
         lines = self.env['stock.move.line']
-        if self.move_id.picking_id:
-            lines |= self.move_id.picking_id.move_line_ids.filtered(lambda ml: ml.product_id == self.product_id and (ml.lot_id or ml.lot_name))
+        picking_id = self.move_id.picking_id if self.move_id else self.picking_id
+        if picking_id:
+            lines |= picking_id.move_line_ids.filtered(lambda ml: ml.product_id == self.product_id and (ml.lot_id or ml.lot_name))
         return lines
 
     def _check_for_duplicated_serial_numbers(self):
-- 
GitLab