From 32a33b7ef6c61424bc9785bdb4246a9be58e5b42 Mon Sep 17 00:00:00 2001 From: Azka Nathan Date: Thu, 5 Dec 2024 16:10:09 +0700 Subject: fix bug api envio --- indoteknik_custom/models/stock_picking.py | 29 ++++++++++++++++++----------- 1 file 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: -- cgit v1.2.3