diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2025-05-26 11:38:39 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2025-05-26 11:38:39 +0700 |
| commit | 9a76bdcf4918afbfb8ff20d5989ade6904cebe71 (patch) | |
| tree | 98d407dc2800795fdf0d934f4b29258b287ecfd1 /fixco_custom/models/detail_order.py | |
| parent | 843eeb522e15e6f0fd0df41820dd5096c1e1b5ec (diff) | |
get detail order to so
Diffstat (limited to 'fixco_custom/models/detail_order.py')
| -rwxr-xr-x | fixco_custom/models/detail_order.py | 30 |
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]) + '$' |
