diff options
| author | Indoteknik . <it@fixcomart.co.id> | 2025-06-21 11:21:13 +0700 |
|---|---|---|
| committer | Indoteknik . <it@fixcomart.co.id> | 2025-06-21 11:21:13 +0700 |
| commit | 6b780e717b8fe0b7959bd1a1f6d59b183d9845d9 (patch) | |
| tree | 77de4efcbc849599c64b33edcd6cb8bf38b06976 | |
| parent | 47f83eefa28e7902c4f91c03ac6cd2f71a56e67d (diff) | |
(andri) fix datetime log tracking
| -rw-r--r-- | indoteknik_custom/models/stock_picking.py | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py index f171c5d0..87363fd2 100644 --- a/indoteknik_custom/models/stock_picking.py +++ b/indoteknik_custom/models/stock_picking.py @@ -1841,31 +1841,24 @@ class StockPicking(models.Model): def log_biteship_event_from_webhook(self, status, timestamp, description, extra_data=None): - """ - extra_data: dict opsional dari webhook (driver name, phone, plate, link, price, dsb) - """ self.ensure_one() updated_fields = {} - # Konversi timestamp ke UTC datetime try: dt = self._convert_to_utc_datetime(timestamp) except Exception as e: _logger.warning(f"[Webhook] Gagal konversi waktu: {e}") dt = datetime.utcnow() - # Update tanggal driver if status == "picked" and not self.driver_departure_date: updated_fields["driver_departure_date"] = fields.Datetime.to_string(dt) if status == "delivered" and not self.driver_arrival_date: updated_fields["driver_arrival_date"] = fields.Datetime.to_string(dt) - # Update shipping_status shipping_status = self._map_status_biteship(status) if shipping_status and self.shipping_status != shipping_status: updated_fields["shipping_status"] = shipping_status - # Update field tambahan Biteship jika ada if extra_data: if extra_data.get("courier_driver_name"): updated_fields["biteship_driver_name"] = extra_data["courier_driver_name"] @@ -1880,19 +1873,20 @@ class StockPicking(models.Model): if extra_data.get("status"): updated_fields["biteship_shipping_status"] = extra_data["status"] - # Format log untuk chatter try: - dt_local = parser.parse(timestamp).replace(tzinfo=None) + dt_parsed = parser.parse(timestamp) + if dt_parsed.tzinfo is None: + dt_parsed = dt_parsed.replace(tzinfo=pytz.utc) + dt_local = dt_parsed.astimezone(pytz.timezone("Asia/Jakarta")) except Exception: - dt_local = dt + dt_local = dt.astimezone(pytz.timezone("Asia/Jakarta")) desc_clean = ' '.join(description.strip().split()) - log_line = f"[TRACKING] {status} - {dt_local.strftime('%d %b %Y %H:%M')}: {desc_clean}" + log_line = f"[TRACKING] {status} - {dt_local.strftime('%d %b %Y %H:%M')}:<br/>{desc_clean}" if not self._has_existing_log(log_line): self.with_user(15172).message_post(body=log_line) - # Apply update if updated_fields: self.write(updated_fields) _logger.info(f"[Webhook] Updated fields on picking {self.name}: {updated_fields}") |
