diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2024-12-05 16:10:09 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2024-12-05 16:10:09 +0700 |
| commit | 32a33b7ef6c61424bc9785bdb4246a9be58e5b42 (patch) | |
| tree | 772d7a5ec46af795341adb81772c01d609c97be4 | |
| parent | 4721464cf2cd6d9c331b7ecc3ceaab5a6548b7c9 (diff) | |
fix bug api envio
| -rw-r--r-- | indoteknik_custom/models/stock_picking.py | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py index 931da588..6d911470 100644 --- a/indoteknik_custom/models/stock_picking.py +++ b/indoteknik_custom/models/stock_picking.py @@ -1,7 +1,7 @@ from odoo import fields, models, api, _ from odoo.exceptions import AccessError, UserError, ValidationError from odoo.tools.float_utils import float_is_zero -from datetime import timedelta +from datetime import timedelta, datetime from itertools import groupby import pytz, requests, json, requests from dateutil import parser @@ -119,17 +119,17 @@ class StockPicking(models.Model): envio_id = fields.Char(string="Envio ID", readonly=True) envio_code = fields.Char(string="Envio Code", readonly=True) envio_ref_code = fields.Char(string="Envio Reference Code", readonly=True) - envio_eta_at = fields.Char(string="Estimated Time of Arrival (ETA)", readonly=True) - envio_ata_at = fields.Char(string="Actual Time of Arrival (ATA)", readonly=True) - envio_etd_at = fields.Char(string="Estimated Time of Departure (ETD)", readonly=True) - envio_atd_at = fields.Char(string="Actual Time of Departure (ATD)", readonly=True) + envio_eta_at = fields.Datetime(string="Estimated Time of Arrival (ETA)", readonly=True) + envio_ata_at = fields.Datetime(string="Actual Time of Arrival (ATA)", readonly=True) + envio_etd_at = fields.Datetime(string="Estimated Time of Departure (ETD)", readonly=True) + envio_atd_at = fields.Datetime(string="Actual Time of Departure (ATD)", readonly=True) envio_received_by = fields.Char(string="Received By", readonly=True) envio_status = fields.Char(string="Status", readonly=True) envio_cod_value = fields.Float(string="COD Value", readonly=True) envio_cod_status = fields.Char(string="COD Status", readonly=True) envio_logs = fields.Text(string="Logs", readonly=True) envio_latest_message = fields.Text(string="Latest Log Message", readonly=True) - envio_latest_recorded_at = fields.Char(string="Log Recorded At", readonly=True) + envio_latest_recorded_at = fields.Datetime(string="Log Recorded At", readonly=True) envio_latest_latitude = fields.Float(string="Log Latitude", readonly=True) envio_latest_longitude = fields.Float(string="Log Longitude", readonly=True) tracking_by = fields.Many2one('res.users', string='Tracking By', readonly=True, tracking=True) @@ -141,7 +141,7 @@ class StockPicking(models.Model): if not date_str: return False try: - utc_time = datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%SZ') + utc_time = datetime.datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%SZ') wib_time = utc_time + timedelta(hours=7) return wib_time.strftime('%d-%m-%Y %H:%M:%S') except ValueError: @@ -153,11 +153,13 @@ class StockPicking(models.Model): return False try: # Format waktu dengan milidetik - return datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%S.%fZ') + date = datetime.datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%S.%fZ') + return date except ValueError: try: # Format waktu tanpa milidetik - return datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%SZ') + date = datetime.datetime.strptime(date_str, '%Y-%m-%dT%H:%M:%SZ') + return date except ValueError: raise UserError(f"Format waktu tidak sesuai: {date_str}") @@ -167,7 +169,7 @@ class StockPicking(models.Model): ('state', '=', 'done'), ('carrier_id', '=', 151) ]) - for picking in self: + for picking in pickings: if not picking.name: raise UserError("Name pada stock.picking tidak ditemukan.") @@ -216,7 +218,12 @@ class StockPicking(models.Model): picking.tracking_by = self.env.user.id ata_at_str = data.get("ata_at") - picking.driver_arrival_date = self._convert_to_datetime(ata_at_str) if ata_at_str else False + envio_ata = self._convert_to_datetime(data.get("ata_at")) + + picking.driver_arrival_date = envio_ata + if data.get("status") == 'returned': + picking.driver_arrival_date = False + picking.envio_ata_at = False except requests.exceptions.RequestException as e: raise UserError(f"Terjadi kesalahan saat menghubungi API Envio: {str(e)}") except Exception as e: |
