Accept Merge Request #1843: (feature/制造功能优化 -> develop)

Merge Request: 编程单去重

Created By: @马广威
Accepted By: @马广威
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1843?initial=true
This commit is contained in:
马广威
2025-02-24 17:01:31 +08:00
committed by Coding
2 changed files with 32 additions and 21 deletions

View File

@@ -111,6 +111,18 @@ class SFSaleOrderCancelLine(models.TransientModel):
doc_state = fields.Char('单据状态')
cancel_reason = fields.Char('禁止取消原因')
quantity_str = fields.Char(
string="数量(字符串)",
compute="_compute_quantity_str",
store=False, # 默认不存储,除非需要搜索/排序
)
@api.depends("quantity")
def _compute_quantity_str(self):
for record in self:
# 处理所有可能的 False/0 情况
record.quantity_str = str(int(record.quantity)) if record.quantity not in [False, 0] else ""
@api.model
def create_from_order(self, wizard_id, order):
sequence = 1
@@ -375,27 +387,26 @@ class SFSaleOrderCancelLine(models.TransientModel):
# 检查制造订单的编程单
cloud_programming = mo._cron_get_programming_state()
if cloud_programming:
vals = {
'wizard_id': wizard_id,
'sequence': sequence,
'category': '编程',
'doc_name': '编程单',
'operation_type': '',
'doc_number': cloud_programming['programming_no'],
'line_number': 1,
'product_name': '',
'quantity': '',
'doc_state': cloud_programming['programming_state'],
'cancel_reason': ''
}
program_list.append(self.create(vals))
unique_lines = {}
for line in program_list:
doc_number = line.doc_number
if doc_number not in unique_lines:
unique_lines[doc_number] = line
programming_no = cloud_programming['programming_no']
return lines + list(unique_lines.values())
# 检查当前lines中是否已存在相同doc_number的记录
if not any(line.doc_number == programming_no for line in lines):
vals = {
'wizard_id': wizard_id,
'sequence': sequence,
'category': '编程',
'doc_name': '编程单',
'operation_type': '',
'doc_number': programming_no, # 直接使用变量
'line_number': 1,
'product_name': '',
'quantity': 0,
'doc_state': cloud_programming['programming_state'],
'cancel_reason': ''
}
lines.append(self.create(vals))
return lines
# unique_lines = {}
# for line in lines:

View File

@@ -21,7 +21,7 @@
<field name="doc_number" string="单据编号"/>
<field name="line_number" string="行号"/>
<field name="product_name" string="产品名称"/>
<field name="quantity" string="数量"/>
<field name="quantity_str" string="数量"/>
<field name="doc_state" string="单据状态"/>
<field name="cancel_reason" string="禁止取消原因"/>
</tree>