Accept Merge Request #1739: (feature/customer_supply -> develop)

Merge Request: 工艺确认后的错误提示

Created By: @廖丹龙
Accepted By: @秦圣
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1739
This commit is contained in:
秦圣
2025-01-13 16:47:45 +08:00
committed by Coding
2 changed files with 16 additions and 8 deletions

View File

@@ -432,7 +432,6 @@ class MrpProduction(models.Model):
# 工艺确认
def technology_confirm(self):
process_parameters = []
account_moves = []
purchase_orders = []
parameters_not = []
# 获取原有的工单对应的工序
@@ -443,10 +442,6 @@ class MrpProduction(models.Model):
for deleted_design in deleted_designs:
workorder = self.env['mrp.workorder'].search([('technology_design_id', '=', deleted_design.id)])
purchase = workorder._get_surface_technics_purchase_ids()
account = self.env['account.move'].search([('id', 'in', purchase.invoice_ids.ids)])
if account.state not in ['cancel', False]:
if account.name not in account_moves:
account_moves.append(account.name)
if purchase.state not in ['cancel','draft', False]:
purchase_orders.append(purchase.name)
special_design = self.technology_design_ids.filtered(
@@ -460,9 +455,7 @@ class MrpProduction(models.Model):
if not product_production_process:
if special.process_parameters_id not in process_parameters:
process_parameters.append(special.process_parameters_id.display_name)
if account_moves:
raise UserError(_("请联系工厂生产经理对该(%s)账单进行取消", ", ".join(account_moves)))
if purchase_orders:
raise UserError(_("请联系工厂生产经理对该(%s)采购订单进行取消", ", ".join(purchase_orders)))
if parameters_not:

View File

@@ -4,6 +4,7 @@
from collections import defaultdict
from odoo import api, fields, models, _
from odoo.exceptions import UserError
from odoo.tools import OrderedSet
@@ -16,6 +17,20 @@ class PurchaseOrder(models.Model):
compute='_compute_workorder_count',
)
def button_cancel(self):
account_moves = set() # 使用集合以避免重复,并提高查找速度
accounts = self.env['account.move'].search(
[('id', 'in', self.invoice_ids.ids), ('state', 'not in', ['cancel', False])])
# 直接筛选掉状态为'cancel'或False的记录避免多次迭代
for account in accounts:
account_moves.add(account.name) # 使用set的add方法避免重复添加
# 如果你需要list形式的结果可以将set转换为list
account_moves = list(account_moves)
if account_moves:
raise UserError(_("请联系工厂生产经理对该采购单的账单进行取消"))
return super(PurchaseOrder, self).button_cancel()
def action_view_production(self):
origins = [order.name for order in self.picking_ids]
production_id = self.env['mrp.production'].search([('origin', 'in', origins)])