summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2024-12-06 11:27:03 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2024-12-06 11:27:03 +0700
commitb0e71c613a80283a76371a468d54771b284205b5 (patch)
tree01bf69c2fa783a89c225493796fcb80f253acd1b
parent3771d33ddb1abf2ffe434d71bd1dbeadcb83c00d (diff)
fix bug envio
-rw-r--r--indoteknik_api/controllers/controller.py2
-rw-r--r--indoteknik_custom/models/stock_picking.py69
2 files changed, 37 insertions, 34 deletions
diff --git a/indoteknik_api/controllers/controller.py b/indoteknik_api/controllers/controller.py
index 7f49c4e5..ebabfd03 100644
--- a/indoteknik_api/controllers/controller.py
+++ b/indoteknik_api/controllers/controller.py
@@ -207,7 +207,7 @@ class Controller(http.Controller):
if not variant:
image = self.add_watermark_to_image(image, ratio, version)
- image = self.convert_to_webp(image)
+ # image = self.convert_to_webp(image)
response_headers = [
('Content-Type', 'image/jpg'),
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py
index 37e43054..e6506a0b 100644
--- a/indoteknik_custom/models/stock_picking.py
+++ b/indoteknik_custom/models/stock_picking.py
@@ -169,11 +169,11 @@ class StockPicking(models.Model):
('state', '=', 'done'),
('carrier_id', '=', 151)
])
-
for picking in pickings:
if not picking.name:
raise UserError("Name pada stock.picking tidak ditemukan.")
+ # API URL dan headers
url = f"https://api.envio.co.id/v1/tracking/distribution?code={picking.name}"
headers = {
'Authorization': 'Bearer JZ0Seh6qpYJAC3CJHdhF7sPqv8B/uSSfZe1VX5BL?vPYdo',
@@ -181,50 +181,53 @@ class StockPicking(models.Model):
}
try:
+ # Request ke API
response = requests.get(url, headers=headers, timeout=10)
- response.raise_for_status()
+ response.raise_for_status() # Raise error jika status code bukan 200
response_data = response.json()
+ # Validasi jika respons tidak sesuai format yang diharapkan
+ if not response_data or "data" not in response_data:
+ raise UserError("Respons API tidak sesuai format yang diharapkan.")
+
data = response_data.get("data")
if not data:
continue
- # Mapping field dengan data API
- fields_map = {
- 'envio_id': "id",
- 'envio_code': "code",
- 'envio_ref_code': "ref_code",
- 'envio_eta_at': "eta_at",
- 'envio_ata_at': "ata_at",
- 'envio_etd_at': "etd_at",
- 'envio_atd_at': "atd_at",
- 'envio_received_by': "received_by",
- 'envio_status': "status",
- 'envio_cod_value': "cod_value",
- 'envio_cod_status': "cod_status",
- }
-
- for field, key in fields_map.items():
- setattr(picking, field, data.get(key, 0.0 if 'cod' in key else False))
-
- # Menyimpan log terbaru jika ada
- latest_log = (data.get("logs") or [{}])[0]
- picking.envio_latest_message = latest_log.get("message", "Log kosong.")
- picking.envio_latest_recorded_at = self._convert_to_datetime(latest_log.get("recorded_at"))
- picking.envio_latest_latitude = latest_log.get("latitude", 0.0)
- picking.envio_latest_longitude = latest_log.get("longitude", 0.0)
-
- # Menyimpan data tambahan
+ # Menyimpan data ke field masing-masing
+ picking.envio_id = data.get("id")
+ picking.envio_code = data.get("code")
+ picking.envio_ref_code = data.get("ref_code")
+ picking.envio_eta_at = self._convert_to_datetime(data.get("eta_at"))
+ picking.envio_ata_at = self._convert_to_datetime(data.get("ata_at"))
+ picking.envio_etd_at = self._convert_to_datetime(data.get("etd_at"))
+ picking.envio_atd_at = self._convert_to_datetime(data.get("atd_at"))
+ picking.envio_received_by = data.get("received_by")
+ picking.envio_status = data.get("status")
+ picking.envio_cod_value = data.get("cod_value", 0.0)
+ picking.envio_cod_status = data.get("cod_status")
+
+ # Menyimpan log terbaru
+ logs = data.get("logs", [])
+ if logs and isinstance(logs, list) and logs[0]:
+ latest_log = logs[0]
+ picking.envio_latest_message = latest_log.get("message", "Log kosong.")
+ picking.envio_latest_recorded_at = self._convert_to_datetime(latest_log.get("recorded_at"))
+ picking.envio_latest_latitude = latest_log.get("latitude", 0.0)
+ picking.envio_latest_longitude = latest_log.get("longitude", 0.0)
+
picking.tracking_by = self.env.user.id
+ ata_at_str = data.get("ata_at")
envio_ata = self._convert_to_datetime(data.get("ata_at"))
- picking.driver_arrival_date = envio_ata if envio_ata != '0001-01-01 00:00:00' else False
- picking.envio_ata_at = envio_ata if envio_ata != '0001-01-01 00:00:00' else False
+ picking.driver_arrival_date = envio_ata
+ if data.get("status") != 'delivered':
+ 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: {e}")
+ raise UserError(f"Terjadi kesalahan saat menghubungi API Envio: {str(e)}")
except Exception as e:
- raise UserError(f"Kesalahan tidak terduga: {e}")
-
+ raise UserError(f"Kesalahan tidak terduga: {str(e)}")
def action_send_to_biteship(self):
url = "https://api.biteship.com/v1/orders"