summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-06-03 08:53:03 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-06-03 09:46:34 +0700
commitbd521743ac81103979ab5835e99ffb3df3693998 (patch)
treec65946d1dc6223c64d41e65c26612ee5c08e07b7
parent2772eb7e12c95e9615d169769bed632f163301ea (diff)
trying to fix bug duplicate so
-rwxr-xr-xfixco_custom/models/detail_order.py40
1 files changed, 21 insertions, 19 deletions
diff --git a/fixco_custom/models/detail_order.py b/fixco_custom/models/detail_order.py
index 87cb1c1..28e48ab 100755
--- a/fixco_custom/models/detail_order.py
+++ b/fixco_custom/models/detail_order.py
@@ -178,42 +178,44 @@ class DetailOrder(models.Model):
order_lines = self.prepare_data_so_line(json_data)
order_id, order_status, print_info = self.get_order_id_detail()
+ # First check if a sale order with this reference already exists
+ existing_order = self.env['sale.order'].search([('order_reference', '=', order_id)], limit=1)
+
+ if existing_order:
+ # If order already exists, just update the references
+ self.sale_id = existing_order.id
+ self.execute_status = 'already_so'
+ return # Exit early since we don't need to create anything
+
+ # Only proceed with creation if order doesn't exist and status is appropriate
if order_status != 'PENDING_PAYMENT':
- if order_status == 'PARTIALLY_PAID' or order_status == 'PAID':
+ if order_status in ('PARTIALLY_PAID', 'PAID'):
data['order_line'] = order_lines
-
sale_order = self.env['sale.order'].create(data)
self.sale_id = sale_order.id
sale_order.order_reference = order_id
sale_order.action_confirm()
-
self.picking_id = sale_order.picking_ids[0].id
-
self.picking_id.order_reference = order_id
self.picking_id.invoice_mp = sale_order.invoice_mp
self.execute_status = 'so_confirm'
else:
- sale_orders = self.env['sale.order'].search([('order_reference', '=', order_id)])
- if not sale_orders:
- data['order_line'] = order_lines
+ # For other statuses, create new order only if it doesn't exist
+ data['order_line'] = order_lines
+ sale_order = self.env['sale.order'].create(data)
- sale_order = self.env['sale.order'].create(data)
-
- self.sale_id = sale_order.id
- sale_order.order_reference = order_id
- sale_order.action_confirm()
+ self.sale_id = sale_order.id
+ sale_order.order_reference = order_id
+ sale_order.action_confirm()
- self.picking_id = sale_order.picking_ids[0].id
- self.picking_id.order_reference = order_id
- self.picking_id.invoice_mp = sale_order.invoice_mp
+ self.picking_id = sale_order.picking_ids[0].id
+ self.picking_id.order_reference = order_id
+ self.picking_id.invoice_mp = sale_order.invoice_mp
- self.execute_status = 'so_confirm'
- else:
- self.sale_id = sale_orders.id
- self.execute_status = 'already_so'
+ self.execute_status = 'so_confirm'
except Exception as e:
self.write({