def test_landed_cost_on_mrp(self): inventory = self.env['stock.inventory'].create({ 'name': 'Initial inventory', 'line_ids': [(0, 0, { 'product_id': self.product_component1.id, 'product_uom_id': self.product_component1.uom_id.id, 'product_qty': 500, 'location_id': self.warehouse_1.lot_stock_id.id }), (0, 0, { 'product_id': self.product_component2.id, 'product_uom_id': self.product_component2.uom_id.id, 'product_qty': 500, 'location_id': self.warehouse_1.lot_stock_id.id })] }) inventory.action_start() inventory.action_validate() man_order_form = Form(self.env['mrp.production'].with_user(self.allow_user)) man_order_form.product_id = self.product_refrigerator man_order_form.bom_id = self.bom_refri man_order_form.product_qty = 2.0 man_order = man_order_form.save() self.assertEqual(man_order.state, 'draft', "Production order should be in draft state.") man_order.action_confirm() self.assertEqual(man_order.state, 'confirmed', "Production order should be in confirmed state.") # check production move production_move = man_order.move_finished_ids self.assertEqual(production_move.product_id, self.product_refrigerator) first_move = man_order.move_raw_ids.filtered(lambda move: move.product_id == self.product_component1) self.assertEqual(first_move.product_qty, 6.0) first_move = man_order.move_raw_ids.filtered(lambda move: move.product_id == self.product_component2) self.assertEqual(first_move.product_qty, 2.0) # produce product mo_form = Form(man_order.with_user(self.allow_user)) mo_form.qty_producing = 2 man_order = mo_form.save() man_order.button_mark_done() landed_cost = Form(self.env['stock.landed.cost'].with_user(self.allow_user)).save() landed_cost.target_model = 'manufacturing' self.assertTrue(man_order.id in landed_cost.allowed_mrp_production_ids.ids) landed_cost.mrp_production_ids = [(6, 0, [man_order.id])] landed_cost.cost_lines = [(0, 0, {'product_id': self.landed_cost.id, 'price_unit': 5.0, 'split_method': 'equal'})] landed_cost.button_validate() self.assertEqual(landed_cost.state, 'done') self.assertTrue(landed_cost.account_move_id) # Link to one layer of product_refrigerator self.assertEqual(len(landed_cost.stock_valuation_layer_ids), 1) self.assertEqual(landed_cost.stock_valuation_layer_ids.product_id, self.product_refrigerator) self.assertEqual(landed_cost.stock_valuation_layer_ids.value, 5.0)
def test_landed_cost_on_mrp(self): # Initial inventory quants = self.env['stock.quant'].with_context( inventory_mode=True).create({ 'product_id': self.product_component1.id, 'inventory_quantity': 500, 'location_id': self.warehouse_1.lot_stock_id.id, }) quants |= self.env['stock.quant'].with_context( inventory_mode=True).create({ 'product_id': self.product_component2.id, 'inventory_quantity': 500, 'location_id': self.warehouse_1.lot_stock_id.id, }) quants.action_apply_inventory() man_order_form = Form(self.env['mrp.production'].with_user( self.allow_user)) man_order_form.product_id = self.product_refrigerator man_order_form.bom_id = self.bom_refri man_order_form.product_qty = 2.0 man_order = man_order_form.save() self.assertEqual(man_order.state, 'draft', "Production order should be in draft state.") man_order.action_confirm() self.assertEqual(man_order.state, 'confirmed', "Production order should be in confirmed state.") # check production move production_move = man_order.move_finished_ids self.assertEqual(production_move.product_id, self.product_refrigerator) first_move = man_order.move_raw_ids.filtered( lambda move: move.product_id == self.product_component1) self.assertEqual(first_move.product_qty, 6.0) first_move = man_order.move_raw_ids.filtered( lambda move: move.product_id == self.product_component2) self.assertEqual(first_move.product_qty, 2.0) # produce product mo_form = Form(man_order.with_user(self.allow_user)) mo_form.qty_producing = 2 man_order = mo_form.save() man_order.button_mark_done() landed_cost = Form(self.env['stock.landed.cost'].with_user( self.allow_user)).save() landed_cost.target_model = 'manufacturing' # Check domain of the views self.assertTrue(man_order in self.env['mrp.production'].search([( 'move_finished_ids.stock_valuation_layer_ids', '!=', False), ('company_id', '=', landed_cost.company_id.id)])) landed_cost.mrp_production_ids = [(6, 0, [man_order.id])] landed_cost.cost_lines = [(0, 0, { 'product_id': self.landed_cost.id, 'price_unit': 5.0, 'split_method': 'equal' })] landed_cost.button_validate() self.assertEqual(landed_cost.state, 'done') self.assertTrue(landed_cost.account_move_id) # Link to one layer of product_refrigerator self.assertEqual(len(landed_cost.stock_valuation_layer_ids), 1) self.assertEqual(landed_cost.stock_valuation_layer_ids.product_id, self.product_refrigerator) self.assertEqual(landed_cost.stock_valuation_layer_ids.value, 5.0)