From 3743daa204adfe208f6819b30c5d8c96e0c88433 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Mon, 26 May 2025 11:58:31 +0700 Subject: push --- fixco_custom/models/detail_order.py | 34 +++++++++++++--------------------- 1 file 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]) + '$' -- cgit v1.2.3