diff --git a/addons/mrp/models/stock_rule.py b/addons/mrp/models/stock_rule.py index 1397f3f21e2..9a34bc50480 100644 --- a/addons/mrp/models/stock_rule.py +++ b/addons/mrp/models/stock_rule.py @@ -118,12 +118,16 @@ class StockRule(models.Model): warehouse_id = rule.warehouse_id if not warehouse_id: warehouse_id = rule.location_dest_id.warehouse_id - if rule.picking_type_id == warehouse_id.sam_type_id: + if rule.picking_type_id == warehouse_id.sam_type_id or (warehouse_id.sam_loc_id and warehouse_id.sam_loc_id.parent_path in rule.location_src_id.parent_path): if float_compare(procurement.product_qty, 0, precision_rounding=procurement.product_uom.rounding) < 0: procurement.values['group_id'] = procurement.values['group_id'].stock_move_ids.filtered( lambda m: m.state not in ['done', 'cancel']).move_orig_ids.group_id[:1] continue - manu_type_id = warehouse_id.manu_type_id + manu_rule = rule.route_id.rule_ids.filtered(lambda r: r.action == 'manufacture' and r.warehouse_id == warehouse_id) + if manu_rule: + manu_type_id = manu_rule[0].picking_type_id + else: + manu_type_id = warehouse_id.manu_type_id if manu_type_id: name = manu_type_id.sequence_id.next_by_id() else: