From 7e136a096800a6fe37ca22bde5d27214080e4722 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=B9=8F=E5=AE=87?= Date: Wed, 25 Feb 2026 16:14:06 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E9=AA=8C=E6=94=B6=E3=80=81?= =?UTF-8?q?=E8=AF=81=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yuthon_stock/models/inherit_stock_picking.py | 26 ++++++++++++++++++++ yuthon_stock/views/inherit_stock_picking.xml | 20 ++++++++++++--- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/yuthon_stock/models/inherit_stock_picking.py b/yuthon_stock/models/inherit_stock_picking.py index e49e8f2f8..bf464a21e 100644 --- a/yuthon_stock/models/inherit_stock_picking.py +++ b/yuthon_stock/models/inherit_stock_picking.py @@ -24,6 +24,13 @@ class StockPicking(models.Model): department_id = fields.Many2one('hr.department', string="部门") certifier_id = fields.Many2one('res.users', string="证明人") user_id = fields.Many2one('res.users', string="采购人员", compute="_compute_origin") + receipt_status = fields.Selection([ + ('receipt', '入库'), + ('acceptance', '验收'), + ('certification', '证明') + ], string="入库单状态", default='receipt') + acceptance_date = fields.Datetime(string="验收时间", readonly=True) + certification_date = fields.Datetime(string="证明时间", readonly=True) json_display = fields.Char( string="物品详情", compute='_compute_json_display', @@ -34,8 +41,12 @@ class StockPicking(models.Model): def _onchange_user_id(self): if self.user_id: self.department_id = self.user_id.employee_ids.department_id.id + # 设置验收人为采购人员对应的员工 + if self.user_id.employee_ids: + self.employee_id = self.user_id.employee_ids[0].id else: self.department_id = False + self.employee_id = False @api.constrains("department_id") def _check_department_id(self): @@ -87,6 +98,14 @@ class StockPicking(models.Model): record.user_id = False def button_validate(self): + """重写确认入库方法,在证明状态时更新证明人和时间""" + for record in self: + if record.receipt_status == 'certification': + # 使用write方法强制写入只读字段 + record.write({ + 'certifier_id': self.env.user.id, + 'certification_date': fields.Datetime.now() + }) self.employee_id = self.env.user.employee_ids.id return super(StockPicking, self).button_validate() @@ -94,4 +113,11 @@ class StockPicking(models.Model): """手动刷新json_display字段""" for record in self: record._compute_json_display() + return True + + def action_acceptance(self): + """验收按钮""" + self.ensure_one() + self.acceptance_date = fields.Datetime.now() + self.receipt_status = 'acceptance' return True \ No newline at end of file diff --git a/yuthon_stock/views/inherit_stock_picking.xml b/yuthon_stock/views/inherit_stock_picking.xml index 24a4086cb..8b7c9d32a 100644 --- a/yuthon_stock/views/inherit_stock_picking.xml +++ b/yuthon_stock/views/inherit_stock_picking.xml @@ -6,17 +6,29 @@ - + - + + + + + + {'no_create': True} + + +