summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-12-05 16:10:09 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-12-05 16:10:09 +0700
commit32a33b7ef6c61424bc9785bdb4246a9be58e5b42 (patch)
tree772d7a5ec46af795341adb81772c01d609c97be4
parent4721464cf2cd6d9c331b7ecc3ceaab5a6548b7c9 (diff)
fix bug api envio
-rw-r--r--indoteknik_custom/models/stock_picking.py29
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: