diff --git a/sf_manufacturing/wizard/sale_order_cancel.py b/sf_manufacturing/wizard/sale_order_cancel.py index fc641945..6a76f687 100644 --- a/sf_manufacturing/wizard/sale_order_cancel.py +++ b/sf_manufacturing/wizard/sale_order_cancel.py @@ -211,6 +211,7 @@ class SFSaleOrderCancelLine(models.TransientModel): d = 0 # 在领料单处只进行一次 flag = True + program_list = [] for mo in manufacturing_orders: # 添加制造订单本身 d += 1 @@ -288,7 +289,7 @@ class SFSaleOrderCancelLine(models.TransientModel): 'sequence': sequence, 'category': '制造', 'doc_name': '工单', - 'doc_number': workorder.name, + 'doc_number': f'{mo.name}-{workorder.name}', 'line_number': g, 'operation_type': '', 'product_name': f'[{mo.product_id.default_code}] {mo.product_id.name}', @@ -387,9 +388,14 @@ class SFSaleOrderCancelLine(models.TransientModel): 'doc_state': cloud_programming['programming_state'], 'cancel_reason': '' } - lines.append(self.create(vals)) - sequence += 1 - return lines + 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 + + return lines + list(unique_lines.values()) # unique_lines = {} # for line in lines: