From 5dc16c039ce201e41d9227a4fc5773f97fd018bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=B0=A7?= Date: Thu, 8 May 2025 17:29:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=94=B6=E6=96=99=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E6=98=8E=E7=BB=86=E4=B8=8D=E5=AF=B9=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jikimo_purchase_request/models/stock_rule.py | 63 ++++++++++---------- 1 file changed, 32 insertions(+), 31 deletions(-) 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: