diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/mrp/tests/common.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/mrp/tests/common.py')
| -rw-r--r-- | addons/mrp/tests/common.py | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/addons/mrp/tests/common.py b/addons/mrp/tests/common.py new file mode 100644 index 00000000..502b4a94 --- /dev/null +++ b/addons/mrp/tests/common.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- + +from odoo.tests import Form +from odoo.addons.mail.tests.common import mail_new_test_user +from odoo.addons.stock.tests import common2 + + +class TestMrpCommon(common2.TestStockCommon): + + @classmethod + def generate_mo(self, tracking_final='none', tracking_base_1='none', tracking_base_2='none', qty_final=5, qty_base_1=4, qty_base_2=1, picking_type_id=False, consumption=False): + """ This function generate a manufacturing order with one final + product and two consumed product. Arguments allows to choose + the tracking/qty for each different products. It returns the + MO, used bom and the tree products. + """ + product_to_build = self.env['product.product'].create({ + 'name': 'Young Tom', + 'type': 'product', + 'tracking': tracking_final, + }) + product_to_use_1 = self.env['product.product'].create({ + 'name': 'Botox', + 'type': 'product', + 'tracking': tracking_base_1, + }) + product_to_use_2 = self.env['product.product'].create({ + 'name': 'Old Tom', + 'type': 'product', + 'tracking': tracking_base_2, + }) + bom_1 = self.env['mrp.bom'].create({ + 'product_id': product_to_build.id, + 'product_tmpl_id': product_to_build.product_tmpl_id.id, + 'product_uom_id': self.uom_unit.id, + 'product_qty': 1.0, + 'type': 'normal', + 'consumption': consumption if consumption else 'flexible', + 'bom_line_ids': [ + (0, 0, {'product_id': product_to_use_2.id, 'product_qty': qty_base_2}), + (0, 0, {'product_id': product_to_use_1.id, 'product_qty': qty_base_1}) + ]}) + mo_form = Form(self.env['mrp.production']) + if picking_type_id: + mo_form.picking_type_id = picking_type_id + mo_form.product_id = product_to_build + mo_form.bom_id = bom_1 + mo_form.product_qty = qty_final + mo = mo_form.save() + mo.action_confirm() + return mo, bom_1, product_to_build, product_to_use_1, product_to_use_2 + + @classmethod + def setUpClass(cls): + super(TestMrpCommon, cls).setUpClass() + + # Update demo products + (cls.product_2 | cls.product_3 | cls.product_4 | cls.product_5 | cls.product_6 | cls.product_7_3 | cls.product_8).write({ + 'type': 'product', + }) + + # User Data: mrp user and mrp manager + cls.user_mrp_user = mail_new_test_user( + cls.env, + name='Hilda Ferachwal', + login='hilda', + email='h.h@example.com', + notification_type='inbox', + groups='mrp.group_mrp_user, stock.group_stock_user, mrp.group_mrp_byproducts', + ) + cls.user_mrp_manager = mail_new_test_user( + cls.env, + name='Gary Youngwomen', + login='gary', + email='g.g@example.com', + notification_type='inbox', + groups='mrp.group_mrp_manager, stock.group_stock_user, mrp.group_mrp_byproducts', + ) + + cls.workcenter_1 = cls.env['mrp.workcenter'].create({ + 'name': 'Nuclear Workcenter', + 'capacity': 2, + 'time_start': 10, + 'time_stop': 5, + 'time_efficiency': 80, + }) + + cls.bom_1 = cls.env['mrp.bom'].create({ + 'product_id': cls.product_4.id, + 'product_tmpl_id': cls.product_4.product_tmpl_id.id, + 'product_uom_id': cls.uom_unit.id, + 'product_qty': 4.0, + 'consumption': 'flexible', + 'operation_ids': [ + ], + 'type': 'normal', + 'bom_line_ids': [ + (0, 0, {'product_id': cls.product_2.id, 'product_qty': 2}), + (0, 0, {'product_id': cls.product_1.id, 'product_qty': 4}) + ]}) + cls.bom_2 = cls.env['mrp.bom'].create({ + 'product_id': cls.product_5.id, + 'product_tmpl_id': cls.product_5.product_tmpl_id.id, + 'product_uom_id': cls.product_5.uom_id.id, + 'consumption': 'flexible', + 'product_qty': 1.0, + 'operation_ids': [ + (0, 0, {'name': 'Gift Wrap Maching', 'workcenter_id': cls.workcenter_1.id, 'time_cycle': 15, 'sequence': 1}), + ], + 'type': 'phantom', + 'sequence': 2, + 'bom_line_ids': [ + (0, 0, {'product_id': cls.product_4.id, 'product_qty': 2}), + (0, 0, {'product_id': cls.product_3.id, 'product_qty': 3}) + ]}) + cls.bom_3 = cls.env['mrp.bom'].create({ + 'product_id': cls.product_6.id, + 'product_tmpl_id': cls.product_6.product_tmpl_id.id, + 'product_uom_id': cls.uom_dozen.id, + 'consumption': 'flexible', + 'product_qty': 2.0, + 'operation_ids': [ + (0, 0, {'name': 'Cutting Machine', 'workcenter_id': cls.workcenter_1.id, 'time_cycle': 12, 'sequence': 1}), + (0, 0, {'name': 'Weld Machine', 'workcenter_id': cls.workcenter_1.id, 'time_cycle': 18, 'sequence': 2}), + ], + 'type': 'normal', + 'bom_line_ids': [ + (0, 0, {'product_id': cls.product_5.id, 'product_qty': 2}), + (0, 0, {'product_id': cls.product_4.id, 'product_qty': 8}), + (0, 0, {'product_id': cls.product_2.id, 'product_qty': 12}) + ]}) + + cls.stock_location_14 = cls.env['stock.location'].create({ + 'name': 'Shelf 2', + 'location_id': cls.env.ref('stock.warehouse0').lot_stock_id.id, + }) + cls.stock_location_components = cls.env['stock.location'].create({ + 'name': 'Shelf 1', + 'location_id': cls.env.ref('stock.warehouse0').lot_stock_id.id, + }) + cls.laptop = cls.env['product.product'].create({ + 'name': 'Acoustic Bloc Screens', + 'uom_id': cls.env.ref("uom.product_uom_unit").id, + 'uom_po_id': cls.env.ref("uom.product_uom_unit").id, + 'type': 'product', + 'tracking': 'none', + 'categ_id': cls.env.ref('product.product_category_all').id, + }) + cls.graphics_card = cls.env['product.product'].create({ + 'name': 'Individual Workplace', + 'uom_id': cls.env.ref("uom.product_uom_unit").id, + 'uom_po_id': cls.env.ref("uom.product_uom_unit").id, + 'type': 'product', + 'tracking': 'none', + 'categ_id': cls.env.ref('product.product_category_all').id, + }) |
