From e3494ce8b70cdefae5a4f7031910fff648cbb452 Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Wed, 25 Jun 2025 16:09:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=20=E5=A7=94=E5=A4=96?= =?UTF-8?q?=E5=8A=A0=E5=B7=A5=E9=87=87=E8=B4=AD=E8=AE=A2=E5=8D=95=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0BOM=E5=86=85=E7=89=A9=E6=96=99=E7=9A=84=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E7=94=B3=E8=AF=B7=E4=B8=8E=E9=87=87=E8=B4=AD=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=20=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jikimo_purchase_request/__manifest__.py | 1 + .../models/purchase_order.py | 63 +++++++++++++++++++ .../views/purchase_order.xml | 28 +++++++++ 3 files changed, 92 insertions(+) create mode 100644 jikimo_purchase_request/views/purchase_order.xml diff --git a/jikimo_purchase_request/__manifest__.py b/jikimo_purchase_request/__manifest__.py index 2ae6ce67..c6e58a41 100644 --- a/jikimo_purchase_request/__manifest__.py +++ b/jikimo_purchase_request/__manifest__.py @@ -10,6 +10,7 @@ 'data': [ 'security/ir.model.access.csv', 'views/sale_order_view.xml', + 'views/purchase_order.xml', 'views/mrp_production.xml', 'views/purchase_request_view.xml', 'wizard/purchase_request_line_make_purchase_order_view.xml', diff --git a/jikimo_purchase_request/models/purchase_order.py b/jikimo_purchase_request/models/purchase_order.py index 95f81e9f..29e6c646 100644 --- a/jikimo_purchase_request/models/purchase_order.py +++ b/jikimo_purchase_request/models/purchase_order.py @@ -16,6 +16,69 @@ class PurchaseOrder(models.Model): ('rejected', '已驳回') ], string='Status', readonly=True, index=True, copy=False, default='draft', tracking=True) + # 成品采购订单对应的坯料采购申请单和采购订单数量 + purchase_request_count = fields.Integer('子·采购申请数量', compute='_compute_purchase_request') + purchase_order_count = fields.Integer('子·采购订单数量', compute='_compute_purchase_request') + + @api.depends('state') + def _compute_purchase_request(self): + for record in self: + purchase_request_ids, purchase_order_ids = record.get_purchase_request_order() + record.purchase_request_count = len(purchase_request_ids) + record.purchase_order_count = len(purchase_order_ids) + + def action_view_preform_body_purchase_request(self): + self.ensure_one() + name_list = self._get_pinking_name() + purchase_request_ids = self.env['purchase.request'].search([('origin', 'in', name_list)]) + + action = { + 'res_model': 'purchase.request', + 'type': 'ir.actions.act_window', + } + if len(purchase_request_ids) == 1: + action.update({ + 'view_mode': 'form', + 'res_id': purchase_request_ids[0].id, + }) + else: + action.update({ + 'name': _("子·采购申请"), + 'domain': [('id', 'in', purchase_request_ids.ids)], + 'view_mode': 'tree,form', + }) + return action + + def action_view_preform_body_purchase_order(self): + self.ensure_one() + name_list = self._get_pinking_name() + purchase_order_ids = self.env['purchase.order'].search([('origin', 'in', name_list)]) + + action = { + 'res_model': 'purchase.order', + 'type': 'ir.actions.act_window', + } + if len(purchase_order_ids) == 1: + action.update({ + 'view_mode': 'form', + 'res_id': purchase_order_ids[0].id, + }) + else: + action.update({ + 'name': _("子·采购订单"), + 'domain': [('id', 'in', purchase_order_ids.ids)], + 'view_mode': 'tree,form', + }) + return action + + def get_purchase_request_order(self): + name_list = self._get_pinking_name() + purchase_request_ids = self.env['purchase.request'].search([('origin', 'in', name_list)]) + purchase_order_ids = self.env['purchase.order'].search([('origin', 'in', name_list)]) + return purchase_request_ids, purchase_order_ids + + def _get_pinking_name(self): + return [picking_id.name for picking_id in self.picking_ids if picking_id.name] def button_confirm(self): res = super(PurchaseOrder, self).button_confirm() diff --git a/jikimo_purchase_request/views/purchase_order.xml b/jikimo_purchase_request/views/purchase_order.xml new file mode 100644 index 00000000..78f5b6a8 --- /dev/null +++ b/jikimo_purchase_request/views/purchase_order.xml @@ -0,0 +1,28 @@ + + + + purchase.order.inherited.form.jikimo.purchase.request + purchase.order + + + + + + + + + \ No newline at end of file