summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-08-22 15:56:45 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-08-22 15:56:45 +0700
commit8d45e6557063f708e824b2700331c67168dde6c9 (patch)
tree763a837cbba5aa90ebdd329be06dc1c657ec68da /indoteknik_custom/models
parent40b3ae941bce5c822d7297c8ccfc1c752409e21c (diff)
Add get stock picking and get stock picking detail tracking API
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/stock_picking.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py
index 4d1df7ee..f9b077ba 100644
--- a/indoteknik_custom/models/stock_picking.py
+++ b/indoteknik_custom/models/stock_picking.py
@@ -2,6 +2,7 @@ from odoo import fields, models, api, _
from odoo.exceptions import AccessError, UserError, ValidationError
from odoo.tools.float_utils import float_is_zero
from itertools import groupby
+import pytz, datetime
class StockPicking(models.Model):
@@ -351,3 +352,61 @@ class StockPicking(models.Model):
picking.delivery_status = "Diterima Ekspedisi"
else:
picking.delivery_status = "Diterima Konsumen"
+
+ def create_manifest_data(self, description, object):
+ datetime_str = ''
+ if isinstance(object, datetime.datetime):
+ jakarta_timezone = pytz.timezone('Asia/Jakarta')
+ datetime_str = object.replace(tzinfo=pytz.utc).astimezone(jakarta_timezone).strftime('%Y-%m-%d %H:%M:%S')
+ return {
+ 'description': description,
+ 'datetime': datetime_str
+ }
+
+ def get_manifests(self):
+ manifest_datas = []
+
+ departure_date = self.driver_departure_date
+ arrival_date = self.driver_arrival_date
+
+ if self.carrier_id.id == 32: # Pickup Bandengan
+ manifest_datas.append(self.create_manifest_data('Sedang disiapkan', self.create_date))
+ if departure_date:
+ manifest_datas.append(self.create_manifest_data('Siap diambil', departure_date))
+ if arrival_date:
+ manifest_datas.append(self.create_manifest_data('Sudah diambil', arrival_date))
+ else:
+ manifest_datas.append(self.create_manifest_data('Menunggu pickup', self.create_date))
+ if departure_date:
+ manifest_datas.append(self.create_manifest_data('Sedang dikirim', departure_date))
+ if arrival_date:
+ manifest_datas.append(self.create_manifest_data('Sudah sampai', arrival_date))
+
+ return manifest_datas
+
+ def get_tracking_detail(self):
+ self.ensure_one()
+
+ response = {
+ 'delivery_order': {
+ 'name': self.name,
+ 'carrier': self.carrier_id.name or '',
+ 'receiver_name': '',
+ 'receiver_city': ''
+ },
+ 'delivered': False,
+ 'waybill_number': self.delivery_tracking_no or '',
+ 'delivery_status': None
+ }
+
+ if not self.waybill_id or len(self.waybill_id.manifest_ids) == 0:
+ response['delivered'] = self.driver_arrival_date != False
+ response['manifests'] = self.get_manifests()
+ return response
+
+ response['delivery_order']['receiver_name'] = self.waybill_id.receiver_name,
+ response['delivery_order']['receiver_city'] = self.waybill_id.receiver_city,
+ response['delivery_status'] = self.waybill_id._get_history('delivery_status')
+ response['manifests'] = [self.create_manifest_data(x.description, x.datetime) for x in self.waybill_id.manifest_ids]
+
+ return response