处理 由采购订单-委外加工类型生成的同一个补货组的坯料采购申请单据没有合并 问题

This commit is contained in:
yuxianghui
2025-06-27 09:39:11 +08:00
parent a68d6d4d06
commit 1fd9900e41
3 changed files with 26 additions and 2 deletions

View File

@@ -16,6 +16,7 @@ class PurchaseRequest(models.Model):
)
rule_new_add = fields.Boolean('采购请求为规则创建', default=False, compute='_compute_state', store=True)
rule_purchase_to_request = fields.Boolean('采购单根据规则创建坯料采购申请', default=False)
@api.depends('state')
def _compute_state(self):

View File

@@ -45,3 +45,14 @@ class StockPicking(models.Model):
(4, x.id) for x in backorder_ids.move_ids if x.product_id.id in purchase_request_lines.mapped('product_id.id')
]
return res
def _subcontracted_produce(self, subcontract_details):
super()._subcontracted_produce(subcontract_details)
# 判断是否根据规则生成新的采购申请单据,如果生成则修改状态为 approved
if self:
pr_ids = self.env["purchase.request"].sudo().search(
[('origin', 'like', self.name), ('rule_purchase_to_request', '=', True), ('state', '=', 'draft')])
if pr_ids:
pr_ids.write({'need_validation': False})
pr_ids.write({"state": "approved", 'need_validation': True, 'rule_new_add': False})

View File

@@ -26,7 +26,7 @@ class StockRule(models.Model):
request_data = rule._prepare_purchase_request(
procurement.origin, procurement.values
)
request_data.update({'rule_new_add': True})
request_data = self._update_request_data(procurement, request_data)
pr = purchase_request_model.create(request_data)
cache[domain] = pr
elif (
@@ -44,6 +44,18 @@ class StockRule(models.Model):
request_line_data.update({'origin': procurement.origin})
purchase_request_line_model.create(request_line_data)
def _update_request_data(self, procurement, request_data):
sp = self.env['stock.picking'].sudo().search([('name', '=', procurement.origin)])
if len(sp) == 1:
po = self.env['purchase.order'].sudo().search(
[('name', '=', sp.origin), ('purchase_type', '=', 'outsourcing')])
if po:
request_data.update({'rule_purchase_to_request': True})
else:
request_data.update({'rule_new_add': True})
return request_data
def _run_buy(self, procurements):
# 如果补货组相同,并且产品相同,则合并
procurements_dict = defaultdict()