summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-05-26 11:58:31 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-05-26 11:58:31 +0700
commit3743daa204adfe208f6819b30c5d8c96e0c88433 (patch)
treeefd0f88d0b7fd1f8dec1666abd17ad2b78affe7c
parent206cf21b9818c4bc2fcc070a2837d27af9b320fc (diff)
push
-rwxr-xr-xfixco_custom/models/detail_order.py34
1 files changed, 13 insertions, 21 deletions
diff --git a/fixco_custom/models/detail_order.py b/fixco_custom/models/detail_order.py
index b392f20..54d3a0a 100755
--- a/fixco_custom/models/detail_order.py
+++ b/fixco_custom/models/detail_order.py
@@ -124,19 +124,8 @@ class DetailOrder(models.Model):
def process_queue_item_detail(self, limit=100):
domain = [('execute_status', '=', 'detail_order')]
records = self.search(domain, order='create_date asc', limit=limit)
-
for rec in records:
- try:
- # Start a new savepoint for each record
- with self.env.cr.savepoint():
- rec.execute_queue_detail()
- self.env.cr.commit() # Explicit commit after each successful record
- except Exception as e:
- self.env.cr.rollback() # Explicit rollback on failure
- _logger.error("Failed to process record %s: %s", rec.id, str(e))
- rec.write({
- 'message_error': json.dumps({'error': str(e)})
- })
+ rec.execute_queue_detail()
def prepare_data_so(self, json_data):
data = {
@@ -180,7 +169,7 @@ class DetailOrder(models.Model):
order_id, order_status, print_info = self.get_order_id_detail()
if order_status != 'PENDING_PAYMENT':
- if order_status in ('PARTIALLY_PAID', 'PAID'):
+ if order_status == 'PARTIALLY_PAID' or order_status == 'PAID':
data['order_line'] = order_lines
sale_order = self.env['sale.order'].create(data)
@@ -189,34 +178,37 @@ class DetailOrder(models.Model):
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.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
+
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.execute_status = 'so_confirm'
else:
self.sale_id = sale_orders.id
self.execute_status = 'already_so'
-
- except json.JSONDecodeError as e:
- self.write({
- 'message_error': json.dumps({'error': f'Invalid JSON: {str(e)}'})
- })
+
except Exception as e:
self.write({
- 'message_error': json.dumps({'error': str(e)})
+ 'message_error': json.dumps({
+ 'error': str(e)
+ })
})
- # Ensure we don't leave a failed transaction
- self.env.cr.rollback()
def sign_request(self):
signData = '$'.join(['POST', Request_URI]) + '$'