summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIndoteknik . <it@fixcomart.co.id>2025-06-02 12:09:27 +0700
committerIndoteknik . <it@fixcomart.co.id>2025-06-02 12:09:27 +0700
commit43d180117e90db9115f07ab4b5b2880c32594bea (patch)
tree046d11b926f2c455a966b929d76c1630007bfcbf
parent9e71d7ac3e018e9d4415e1341231671e62fbdb45 (diff)
(andri) fix date tracking
-rw-r--r--indoteknik_custom/models/stock_picking.py34
1 files changed, 26 insertions, 8 deletions
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py
index 4517a941..a2935a07 100644
--- a/indoteknik_custom/models/stock_picking.py
+++ b/indoteknik_custom/models/stock_picking.py
@@ -1570,7 +1570,8 @@ class StockPicking(models.Model):
dt = False
try:
- dt = picking._convert_to_local_time(dt_str)
+ dt = picking._convert_to_utc_datetime(dt_str)
+ _logger.info(f"[Biteship Sync] Berhasil parse datetime: {dt_str} -> {dt}")
except Exception as e:
_logger.warning(f"[Biteship Sync] Gagal parse datetime: {e}")
continue
@@ -1584,7 +1585,12 @@ class StockPicking(models.Model):
# Buat log unik dengan waktu lokal Asia/Jakarta
if dt and desc:
- dt_local = pytz.utc.localize(dt).astimezone(pytz.timezone("Asia/Jakarta"))
+ try:
+ dt_local = parser.parse(dt_str).replace(tzinfo=None)
+ except Exception as e:
+ _logger.warning(f"[Biteship Sync] Gagal parse dt_str untuk log: {e}")
+ dt_local = dt # fallback
+
desc_clean = ' '.join(desc.strip().split())
log_line = f"[TRACKING] {status} - {dt_local.strftime('%d %b %Y %H:%M')}: {desc_clean}"
if not picking._has_existing_log(log_line):
@@ -1605,10 +1611,24 @@ class StockPicking(models.Model):
""", (self._name, self.id, f"%{log_line}%"))
return self.env.cr.fetchone() is not None
+ # Untuk internal Odoo (mengembalikan naive UTC datetime untuk disimpan ke DB)
+ def _convert_to_utc_datetime(self, iso_date):
+ try:
+ if isinstance(iso_date, str):
+ waktu = parser.parse(iso_date)
+ else:
+ waktu = iso_date
+ if waktu.tzinfo is None:
+ waktu = waktu.replace(tzinfo=pytz.utc)
+ utc_dt = waktu.astimezone(pytz.utc).replace(tzinfo=None)
+ return utc_dt
+ except Exception as e:
+ _logger.warning(f"[Biteship] Gagal konversi waktu UTC: {e}")
+ return False
+
+ # Untuk tampilan di API atau kebutuhan web (mengembalikan string waktu lokal)
def _convert_to_local_time(self, iso_date):
try:
- from dateutil import parser
- import pytz
if isinstance(iso_date, str):
waktu = parser.parse(iso_date)
else:
@@ -1617,11 +1637,9 @@ class StockPicking(models.Model):
waktu = waktu.replace(tzinfo=pytz.utc)
local_tz = pytz.timezone("Asia/Jakarta")
local_dt = waktu.astimezone(local_tz)
- utc_dt = local_dt.astimezone(pytz.utc).replace(tzinfo=None)
- return utc_dt
+ return local_dt.strftime("%Y-%m-%d %H:%M:%S")
except Exception as e:
- _logger.warning(f"[Biteship] Gagal konversi waktu lokal: {e}")
- return False
+ return str(e)
def _map_status_biteship(self, status):
status_mapping = {