summaryrefslogtreecommitdiff
path: root/fixco_custom/models
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-05-26 11:09:33 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-05-26 11:09:33 +0700
commite42e2c17b9ac48a50baa3af1338547031d1a1371 (patch)
tree66edab78f81d50c3049fc2a3d804001a237814ae /fixco_custom/models
parentd0a4c0efbe59afb75790ab55f242a0e1a694f629 (diff)
push
Diffstat (limited to 'fixco_custom/models')
-rw-r--r--fixco_custom/models/detail_order.py65
1 files changed, 31 insertions, 34 deletions
diff --git a/fixco_custom/models/detail_order.py b/fixco_custom/models/detail_order.py
index 146f584..54d3a0a 100644
--- a/fixco_custom/models/detail_order.py
+++ b/fixco_custom/models/detail_order.py
@@ -162,7 +162,6 @@ class DetailOrder(models.Model):
return order_lines
def execute_queue_detail(self):
- self.env.cr.execute('SAVEPOINT queue_detail')
try:
json_data = json.loads(self.detail_order)
data = self.prepare_data_so(json_data)
@@ -170,48 +169,46 @@ class DetailOrder(models.Model):
order_id, order_status, print_info = self.get_order_id_detail()
if order_status != 'PENDING_PAYMENT':
- sale_orders = self.env['sale.order'].search([('order_reference', '=', order_id)])
-
- if sale_orders:
- self.sale_id = sale_orders.id
- self.execute_status = 'already_so'
- self.env.cr.execute('RELEASE SAVEPOINT queue_detail')
- return
-
- 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)
- # First write - minimal data
- self.write({
- 'sale_id': sale_order.id,
- 'execute_status': 'processing_get_so' # Intermediate state
- })
- self.env.cr.commit() # Commit after initial write
+ sale_order = self.env['sale.order'].create(data)
- # Process confirmation
+ self.sale_id = sale_order.id
sale_order.order_reference = order_id
sale_order.action_confirm()
- # Second write - remaining data
- self.write({
- 'picking_id': sale_order.picking_ids[0].id,
- 'execute_status': 'so_confirm'
- })
- sale_order.picking_ids[0].order_reference = order_id
-
- self.env.cr.commit() # Final commit
- self.env.cr.execute('RELEASE SAVEPOINT queue_detail')
+
+ 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 Exception as e:
- self.env.cr.execute('ROLLBACK TO SAVEPOINT queue_detail')
- error_msg = str(e)
- # Use with_context to prevent automatic recomputation if needed
- self.with_context(mail_notrack=True).write({
- 'message_error': json.dumps({'error': error_msg})
+ self.write({
+ 'message_error': json.dumps({
+ 'error': str(e)
+ })
})
- self.env.cr.commit() # Commit the error state
- _logger.error("Order processing failed for record %s: %s", self.id, error_msg)
def sign_request(self):
signData = '$'.join(['POST', Request_URI]) + '$'