diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2025-06-03 08:53:03 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2025-06-03 09:46:34 +0700 |
| commit | bd521743ac81103979ab5835e99ffb3df3693998 (patch) | |
| tree | c65946d1dc6223c64d41e65c26612ee5c08e07b7 | |
| parent | 2772eb7e12c95e9615d169769bed632f163301ea (diff) | |
trying to fix bug duplicate so
| -rwxr-xr-x | fixco_custom/models/detail_order.py | 40 |
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({ |
