From cf16a9dd595fdbaea2ca9ce0dda142b5914984e4 Mon Sep 17 00:00:00 2001 From: guanhuan Date: Fri, 23 May 2025 14:53:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=87=87=E8=B4=AD=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jikimo_purchase_request/models/purchase_request.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jikimo_purchase_request/models/purchase_request.py b/jikimo_purchase_request/models/purchase_request.py index 39144d5d..70a2024b 100644 --- a/jikimo_purchase_request/models/purchase_request.py +++ b/jikimo_purchase_request/models/purchase_request.py @@ -2,6 +2,7 @@ import re import ast from odoo import models, fields, api, _ from itertools import groupby +from odoo.tools import float_compare class PurchaseRequest(models.Model): @@ -50,7 +51,7 @@ class PurchaseRequest(models.Model): discrepancies = [] for product_id, qty in product_qty_map.items(): if product_id in product_summary: - if product_summary[product_id] < qty: + if float_compare(product_summary[product_id], qty, precision_digits=2) < 0: discrepancies.append((product_id, qty, product_summary[product_id])) else: discrepancies.append((product_id, qty, 0)) From 38109028d432652682fdcb08866664978fa1f4c4 Mon Sep 17 00:00:00 2001 From: guanhuan Date: Fri, 23 May 2025 15:13:01 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=87=87=E8=B4=AD=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../models/purchase_request.py | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/jikimo_purchase_request/models/purchase_request.py b/jikimo_purchase_request/models/purchase_request.py index 70a2024b..0459dcd9 100644 --- a/jikimo_purchase_request/models/purchase_request.py +++ b/jikimo_purchase_request/models/purchase_request.py @@ -9,7 +9,7 @@ class PurchaseRequest(models.Model): _inherit = 'purchase.request' _description = '采购申请' - # 为state添加取消状态 + # 为state添加取消状态 state = fields.Selection( selection_add=[('cancel', '已取消')], ondelete={'cancel': 'set default'} # 添加 ondelete 策略 @@ -37,11 +37,13 @@ class PurchaseRequest(models.Model): lines = self.mapped("line_ids.purchase_lines.order_id") # 采购单产品和数量 product_summary = {} + product_rounding = {} if lines: for line in lines: for line_item in line.order_line: product_id = line_item.product_id.id qty = line_item.product_qty + product_rounding[product_id] = line_item.product_id.uom_id.rounding if product_id in product_summary: product_summary[product_id] += qty else: @@ -51,7 +53,7 @@ class PurchaseRequest(models.Model): discrepancies = [] for product_id, qty in product_qty_map.items(): if product_id in product_summary: - if float_compare(product_summary[product_id], qty, precision_digits=2) < 0: + if float_compare(product_summary[product_id], qty, precision_rounding=product_rounding[product_id]) < 0: discrepancies.append((product_id, qty, product_summary[product_id])) else: discrepancies.append((product_id, qty, 0)) @@ -65,17 +67,17 @@ class PurchaseRequest(models.Model): # 添加确认框 message += "确认关闭?" return { - 'name': _('采购申请'), - 'type': 'ir.actions.act_window', - 'views': [(self.env.ref( - 'jikimo_purchase_request.purchase_request_wizard_wizard_form_view').id, - 'form')], - 'res_model': 'purchase.request.wizard', - 'target': 'new', - 'context': { - 'default_purchase_request_id': self.id, - 'default_message': message, - }} + 'name': _('采购申请'), + 'type': 'ir.actions.act_window', + 'views': [(self.env.ref( + 'jikimo_purchase_request.purchase_request_wizard_wizard_form_view').id, + 'form')], + 'res_model': 'purchase.request.wizard', + 'target': 'new', + 'context': { + 'default_purchase_request_id': self.id, + 'default_message': message, + }} return super(PurchaseRequest, self).button_done() @@ -97,7 +99,8 @@ class PurchaseRequestLine(models.Model): ('outsourcing', "委外加工"), ], string='供货方式', compute='_compute_supply_method', store=True) - purchase_request_count = fields.Integer(string='采购申请数量', compute='_compute_purchase_request_count', readonly=True) + purchase_request_count = fields.Integer(string='采购申请数量', compute='_compute_purchase_request_count', + readonly=True) purchase_count = fields.Integer(string="采购订单数量", compute="_compute_purchase_count", readonly=True) @api.depends("purchase_lines")