diff --git a/mrp_production_raw_material_procurement_group/README.rst b/mrp_production_raw_material_procurement_group/README.rst index 1d45e58fc..46c844805 100644 --- a/mrp_production_raw_material_procurement_group/README.rst +++ b/mrp_production_raw_material_procurement_group/README.rst @@ -59,6 +59,7 @@ Contributors ------------ * Andhitia Rama +* Lois Rilo Maintainer ---------- diff --git a/mrp_production_raw_material_procurement_group/models/mrp_production.py b/mrp_production_raw_material_procurement_group/models/mrp_production.py index 1e917783c..ee1bb964f 100644 --- a/mrp_production_raw_material_procurement_group/models/mrp_production.py +++ b/mrp_production_raw_material_procurement_group/models/mrp_production.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- # Copyright 2016 OpenSynergy Indonesia +# Copyright 2016 Eficent Business and IT Consulting Services, S.L. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from openerp import models, fields, api @@ -12,6 +13,7 @@ class MrpProduction(models.Model): string="Raw Material Procurement Group", comodel_name="procurement.group", readonly=True, + copy=False, states={ "draft": [("readonly", False)], }, @@ -37,9 +39,8 @@ class MrpProduction(models.Model): "procurement.group"] if self.auto_create_procurement_group and \ not self.raw_material_procurement_group_id: - obj_group.create({ - "name": self.name, - }) + self.raw_material_procurement_group_id = obj_group.create({ + "name": self.name}) @api.model def _make_consume_line_from_data( @@ -59,3 +60,16 @@ class MrpProduction(models.Model): move.write( {"group_id": production.raw_material_procurement_group_id.id}) return move_id + + @api.model + def _create_previous_move(self, move_id, product, source_location_id, + dest_location_id): + move_id2 = super(MrpProduction, self)._create_previous_move( + move_id, product, source_location_id, dest_location_id) + move1 = self.env['stock.move'].browse(move_id) + move2 = self.env['stock.move'].browse(move_id2) + if move1.raw_material_production_id.raw_material_procurement_group_id: + move2.group_id = \ + move1.raw_material_production_id.\ + raw_material_procurement_group_id + return move2.id diff --git a/mrp_production_raw_material_procurement_group/tests/test_mrp_production.py b/mrp_production_raw_material_procurement_group/tests/test_mrp_production.py index 767960e26..fa15e3c68 100644 --- a/mrp_production_raw_material_procurement_group/tests/test_mrp_production.py +++ b/mrp_production_raw_material_procurement_group/tests/test_mrp_production.py @@ -147,3 +147,56 @@ class MrpProductionCase(TransactionCase): self.assertEqual( raw.group_id, mo.raw_material_procurement_group_id) + + def test_copy_mo_1(self): + # Create MO + group1 = self._create_procurement_group( + "X 001") + mo = self._create_mo( + group=group1.id) + mo2 = mo.copy() + + self.assertNotEqual( + mo.raw_material_procurement_group_id, + mo2.raw_material_procurement_group_id) + + self.assertEqual( + mo2.raw_material_procurement_group_id.id, False) + + def test_copy_mo_2(self): + # Create MO + mo = self._create_mo(auto=True) + # Click confirm button + mo.signal_workflow("button_confirm") + + self.assertNotEqual( + mo.raw_material_procurement_group_id.id, False) + + self.assertEqual( + mo.raw_material_procurement_group_id.name, mo.name) + + def test_routing(self): + location = self.env['stock.location'].create({ + 'name': 'Shop floor', + }) + routing = self.env['mrp.routing'].create({ + 'name': 'test', + 'location_id': location.id, + }) + self.bom1.write({ + "routing_id": routing.id}) + # Create MO + mo = self._create_mo(auto=True) + mo2 = self._create_mo(auto=True) + # Click confirm button + mo.signal_workflow("button_confirm") + mo2.signal_workflow("button_confirm") + + # Check that the pickings are split by procurement group + pick = self.env['stock.picking'].search( + [('group_id', '=', mo.raw_material_procurement_group_id.id)]) + self.assertNotEqual(pick, False) + + pick2 = self.env['stock.picking'].search( + [('group_id', '=', mo2.raw_material_procurement_group_id.id)]) + self.assertNotEqual(pick2, False)