summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiqdad <ahmadmiqdad27@gmail.com>2025-09-16 21:31:42 +0700
committerMiqdad <ahmadmiqdad27@gmail.com>2025-09-16 21:31:42 +0700
commit6791235591714e4ac45a6729409716bcba9e8fea (patch)
tree5f727d9b1d879dcb818a403b8ea742202edb2737
parent57ed1cd4179c2b578dd966b1105011709d0b3e4c (diff)
<Miqdad> add try in get tracking detail stock picking
-rw-r--r--indoteknik_custom/models/stock_picking.py50
1 files changed, 30 insertions, 20 deletions
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py
index a48e0ed1..78a49ee4 100644
--- a/indoteknik_custom/models/stock_picking.py
+++ b/indoteknik_custom/models/stock_picking.py
@@ -1743,27 +1743,37 @@ class StockPicking(models.Model):
}
if self.biteship_id:
- histori = self.get_manifest_biteship()
- day_start = order.estimated_arrival_days_start
- day_end = order.estimated_arrival_days
- if sale_order_delay:
- if sale_order_delay.status == 'delayed':
- day_start = day_start + sale_order_delay.days_delayed
- day_end = day_end + sale_order_delay.days_delayed
- elif sale_order_delay.status == 'early':
- day_start = day_start - sale_order_delay.days_delayed
- day_end = day_end - sale_order_delay.days_delayed
-
- eta_start = order.date_order + timedelta(days=day_start)
- eta_end = order.date_order + timedelta(days=day_end)
- formatted_eta = f"{eta_start.strftime('%d %b')} - {eta_end.strftime('%d %b %Y')}"
- response['eta'] = formatted_eta
- response['manifests'] = histori.get("manifests", [])
- response['delivered'] = histori.get("delivered",
- False) or self.sj_return_date != False or self.driver_arrival_date != False
- response['status'] = self._map_status_biteship(histori.get("delivered"))
+ try:
+ histori = self.get_manifest_biteship()
+ day_start = order.estimated_arrival_days_start
+ day_end = order.estimated_arrival_days
+ if sale_order_delay:
+ if sale_order_delay.status == 'delayed':
+ day_start += sale_order_delay.days_delayed
+ day_end += sale_order_delay.days_delayed
+ elif sale_order_delay.status == 'early':
+ day_start -= sale_order_delay.days_delayed
+ day_end -= sale_order_delay.days_delayed
+
+ eta_start = order.date_order + timedelta(days=day_start)
+ eta_end = order.date_order + timedelta(days=day_end)
+ formatted_eta = f"{eta_start.strftime('%d %b')} - {eta_end.strftime('%d %b %Y')}"
+
+ response['eta'] = formatted_eta
+ response['manifests'] = histori.get("manifests", [])
+ response['delivered'] = (
+ histori.get("delivered", False)
+ or self.sj_return_date != False
+ or self.driver_arrival_date != False
+ )
+ response['status'] = self._map_status_biteship(histori.get("delivered"))
- return response
+ return response
+
+ except Exception as e:
+ # Kalau ada error di biteship, log dan fallback ke Odoo
+ _logger.warning("Biteship error pada DO %s: %s", self.name, str(e))
+ # biarkan lanjut ke kondisi di bawah (pakai Odoo waybill_id)
if not self.waybill_id or len(self.waybill_id.manifest_ids) == 0:
response['delivered'] = self.sj_return_date != False or self.driver_arrival_date != False