summaryrefslogtreecommitdiff
path: root/fixco_custom/models
diff options
context:
space:
mode:
Diffstat (limited to 'fixco_custom/models')
-rwxr-xr-xfixco_custom/models/detail_order.py30
1 files changed, 17 insertions, 13 deletions
diff --git a/fixco_custom/models/detail_order.py b/fixco_custom/models/detail_order.py
index 54d3a0a..fadea7b 100755
--- a/fixco_custom/models/detail_order.py
+++ b/fixco_custom/models/detail_order.py
@@ -125,7 +125,14 @@ class DetailOrder(models.Model):
domain = [('execute_status', '=', 'detail_order')]
records = self.search(domain, order='create_date asc', limit=limit)
for rec in records:
- rec.execute_queue_detail()
+ try:
+ with self.env.cr.savepoint():
+ rec.execute_queue_detail()
+ except Exception as e:
+ _logger.error("Failed to process record %s: %s", rec.id, str(e))
+ rec.write({
+ 'message_error': json.dumps({'error': str(e)})
+ })
def prepare_data_so(self, json_data):
data = {
@@ -169,7 +176,7 @@ class DetailOrder(models.Model):
order_id, order_status, print_info = self.get_order_id_detail()
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)
@@ -178,37 +185,34 @@ 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]) + '$'