From 1fd9900e4153ac560e096fe72fccbfff922c1dec Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Fri, 27 Jun 2025 09:39:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=20=E7=94=B1=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E8=AE=A2=E5=8D=95-=E5=A7=94=E5=A4=96=E5=8A=A0?= =?UTF-8?q?=E5=B7=A5=E7=B1=BB=E5=9E=8B=E7=94=9F=E6=88=90=E7=9A=84=E5=90=8C?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E8=A1=A5=E8=B4=A7=E7=BB=84=E7=9A=84=E5=9D=AF?= =?UTF-8?q?=E6=96=99=E9=87=87=E8=B4=AD=E7=94=B3=E8=AF=B7=E5=8D=95=E6=8D=AE?= =?UTF-8?q?=E6=B2=A1=E6=9C=89=E5=90=88=E5=B9=B6=20=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/purchase_request.py | 1 + jikimo_purchase_request/models/stock_picking.py | 13 ++++++++++++- jikimo_purchase_request/models/stock_rule.py | 14 +++++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/jikimo_purchase_request/models/purchase_request.py b/jikimo_purchase_request/models/purchase_request.py index 7287cb6a..3820b1ac 100644 --- a/jikimo_purchase_request/models/purchase_request.py +++ b/jikimo_purchase_request/models/purchase_request.py @@ -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): diff --git a/jikimo_purchase_request/models/stock_picking.py b/jikimo_purchase_request/models/stock_picking.py index 97b294f3..037484c7 100644 --- a/jikimo_purchase_request/models/stock_picking.py +++ b/jikimo_purchase_request/models/stock_picking.py @@ -44,4 +44,15 @@ class StockPicking(models.Model): purchase_request_lines.move_dest_ids = [ (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 \ No newline at end of file + 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}) diff --git a/jikimo_purchase_request/models/stock_rule.py b/jikimo_purchase_request/models/stock_rule.py index 4a99e804..a6d3d893 100644 --- a/jikimo_purchase_request/models/stock_rule.py +++ b/jikimo_purchase_request/models/stock_rule.py @@ -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()