diff --git a/jikimo_purchase_request/models/stock_rule.py b/jikimo_purchase_request/models/stock_rule.py index c9c3dc8c..02dd3626 100644 --- a/jikimo_purchase_request/models/stock_rule.py +++ b/jikimo_purchase_request/models/stock_rule.py @@ -46,38 +46,39 @@ class StockRule(models.Model): def _run_buy(self, procurements): # 如果补货组相同,并且产品相同,则合并 - # procurements_dict = defaultdict() - # for procurement, rule in procurements: - # if (procurement.product_id, procurement.values['group_id'], rule) not in procurements_dict: - # procurements_dict[(procurement.product_id, procurement.values['group_id'], rule)] = { - # 'product_id': procurement.product_id, - # 'product_qty': procurement.product_qty, - # 'product_uom': procurement.product_uom, - # 'location_id': procurement.location_id, - # 'name': procurement.name, - # 'origin': procurement.origin, - # 'company_id': procurement.company_id, - # 'values': procurement.values, - # 'rule': rule - # } - # else: - # procurements_dict[(procurement.product_id, procurement.values['group_id'], rule)]['product_qty'] += procurement.product_qty - # new_procurements = [] - # for k, p in procurements_dict.items(): - # new_procurements.append(( - # self.env['procurement.group'].Procurement( - # product_id=p['product_id'], - # product_qty=p['product_qty'], - # product_uom=p['product_uom'], - # location_id=p['location_id'], - # name=p['name'], - # origin=p['origin'], - # company_id=p['company_id'], - # values=p['values'] - # ), p['rule']) - # ) + procurements_dict = defaultdict() + for procurement, rule in procurements: + if (procurement.product_id.id, procurement.values['group_id'], rule.id) not in procurements_dict: + procurements_dict[(procurement.product_id.id, procurement.values['group_id'], rule.id)] = { + 'product_id': procurement.product_id, + 'product_qty': procurement.product_qty, + 'product_uom': procurement.product_uom, + 'location_id': procurement.location_id, + 'name': procurement.name, + 'origin': procurement.origin, + 'company_id': procurement.company_id, + 'values': procurement.values, + 'rule': rule + } + else: + procurements_dict[(procurement.product_id.id, procurement.values['group_id'], rule.id)]['product_qty'] += procurement.product_qty + procurements_dict[(procurement.product_id.id, procurement.values['group_id'], rule.id)]['values']['move_dest_ids'] |= procurement.values['move_dest_ids'] + new_procurements = [] + for k, p in procurements_dict.items(): + new_procurements.append(( + self.env['procurement.group'].Procurement( + product_id=p['product_id'], + product_qty=p['product_qty'], + product_uom=p['product_uom'], + location_id=p['location_id'], + name=p['name'], + origin=p['origin'], + company_id=p['company_id'], + values=p['values'] + ), p['rule']) + ) - res = super(StockRule, self)._run_buy(procurements) + res = super(StockRule, self)._run_buy(new_procurements) # 判断是否根据规则生成新的采购申请单据,如果生成则修改状态为 approved origins = list(set([procurement[0].origin for procurement in procurements])) for origin in origins: