diff --git a/sf_manufacturing/wizard/sale_order_cancel.py b/sf_manufacturing/wizard/sale_order_cancel.py
index 6a76f687..51d032b2 100644
--- a/sf_manufacturing/wizard/sale_order_cancel.py
+++ b/sf_manufacturing/wizard/sale_order_cancel.py
@@ -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:
diff --git a/sf_manufacturing/wizard/sale_order_cancel_views.xml b/sf_manufacturing/wizard/sale_order_cancel_views.xml
index 6c07e31a..299af9e6 100644
--- a/sf_manufacturing/wizard/sale_order_cancel_views.xml
+++ b/sf_manufacturing/wizard/sale_order_cancel_views.xml
@@ -21,7 +21,7 @@
-
+