diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-08-22 15:56:45 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-08-22 15:56:45 +0700 |
| commit | 8d45e6557063f708e824b2700331c67168dde6c9 (patch) | |
| tree | 763a837cbba5aa90ebdd329be06dc1c657ec68da /indoteknik_custom/models | |
| parent | 40b3ae941bce5c822d7297c8ccfc1c752409e21c (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.py | 59 |
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 |
