采购申请单完成操作优化
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import re
|
||||
import ast
|
||||
from odoo import models, fields, api
|
||||
from odoo import models, fields, api, _
|
||||
from itertools import groupby
|
||||
|
||||
|
||||
class PurchaseRequest(models.Model):
|
||||
@@ -29,6 +30,54 @@ class PurchaseRequest(models.Model):
|
||||
action['context'] = origin_context
|
||||
return action
|
||||
|
||||
def button_done(self):
|
||||
product_qty_map = {key: sum(line.product_qty for line in group) for key, group in
|
||||
groupby(self.line_ids, key=lambda x: x.product_id.id)}
|
||||
lines = self.mapped("line_ids.purchase_lines.order_id")
|
||||
# 采购单产品和数量
|
||||
product_summary = {}
|
||||
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
|
||||
if product_id in product_summary:
|
||||
product_summary[product_id] += qty
|
||||
else:
|
||||
product_summary[product_id] = qty
|
||||
|
||||
# 校验产品数量
|
||||
discrepancies = []
|
||||
for product_id, qty in product_qty_map.items():
|
||||
if product_id in product_summary:
|
||||
if product_summary[product_id] != qty:
|
||||
discrepancies.append((product_id, qty, product_summary[product_id]))
|
||||
else:
|
||||
discrepancies.append((product_id, qty, 0))
|
||||
|
||||
if discrepancies:
|
||||
# 弹出提示框
|
||||
message = "产品数量不一致:\n"
|
||||
for product_id, required_qty, order_qty in discrepancies:
|
||||
product_name = self.env['product.product'].browse(product_id).display_name # 获取产品名称
|
||||
message += f"产品 {product_name},需求数量 {required_qty},关联采购订单数量 {order_qty}(含询价状态)\n"
|
||||
# 添加确认框
|
||||
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,
|
||||
}}
|
||||
return super(PurchaseRequest, self).button_done()
|
||||
|
||||
|
||||
class PurchaseRequestLine(models.Model):
|
||||
_inherit = 'purchase.request.line'
|
||||
_description = '采购申请明细'
|
||||
|
||||
Reference in New Issue
Block a user