diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-08-28 11:02:58 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-08-28 11:02:58 +0700 |
| commit | 3757621d0b0232603a3d578b27b845054cae5982 (patch) | |
| tree | dcc8e0490408870282a03c6e395dcab4af6ab527 | |
| parent | 3cf2809ab4cd0ca113318665997d58d0d758e495 (diff) | |
Refactor get manifest and add last manifest on get stock picking api
| -rw-r--r-- | indoteknik_api/controllers/api_v1/stock_picking.py | 4 | ||||
| -rw-r--r-- | indoteknik_custom/models/stock_picking.py | 51 |
2 files changed, 36 insertions, 19 deletions
diff --git a/indoteknik_api/controllers/api_v1/stock_picking.py b/indoteknik_api/controllers/api_v1/stock_picking.py index 9e92e5d0..e0a60c98 100644 --- a/indoteknik_api/controllers/api_v1/stock_picking.py +++ b/indoteknik_api/controllers/api_v1/stock_picking.py @@ -38,6 +38,7 @@ class StockPicking(controller.Controller): stock_pickings = picking_model.search(domain, offset=offset, limit=limit, order='create_date desc') res_pickings = [] for picking in stock_pickings: + manifests = picking.get_manifests() res_pickings.append({ 'id': picking.id, 'name': picking.name, @@ -49,7 +50,8 @@ class StockPicking(controller.Controller): 'client_order_ref': picking.sale_id.client_order_ref or '' }, 'delivered': picking.waybill_id.delivered or picking.driver_arrival_date != False, - 'carrier_name': picking.carrier_id.name or '' + 'carrier_name': picking.carrier_id.name or '', + 'last_manifest': next(iter(manifests), None) }) pending_count = picking_model.search_count(default_domain + [('driver_departure_date', '=', False), ('driver_arrival_date', '=', False)]) diff --git a/indoteknik_custom/models/stock_picking.py b/indoteknik_custom/models/stock_picking.py index e4a3e09e..bf321172 100644 --- a/indoteknik_custom/models/stock_picking.py +++ b/indoteknik_custom/models/stock_picking.py @@ -364,23 +364,39 @@ class StockPicking(models.Model): } def get_manifests(self): - manifest_datas = [] + if self.waybill_id and len(self.waybill_id.manifest_ids) > 0: + return [self.create_manifest_data(x.description, x.datetime) for x in self.waybill_id.manifest_ids] + + status_mapping = { + 'pickup': { + 'arrival': 'Sudah diambil', + 'departure': 'Siap diambil', + 'prepare': 'Sedang disiapkan' + }, + 'delivery': { + 'arrival': 'Sudah sampai', + 'departure': 'Sedang dikirim', + 'prepare': 'Menunggu pickup', + } + } + status_key = 'delivery' + if self.carrier_id.id == 32: + status_key = 'pickup' + + manifest_datas = [] departure_date = self.driver_departure_date arrival_date = self.driver_arrival_date + status = status_mapping.get(status_key) - if self.carrier_id.id == 32: # Pickup Bandengan - if arrival_date: - manifest_datas.append(self.create_manifest_data('Sudah diambil', arrival_date)) - if departure_date: - manifest_datas.append(self.create_manifest_data('Siap diambil', departure_date)) - manifest_datas.append(self.create_manifest_data('Sedang disiapkan', self.create_date)) - else: - if arrival_date: - manifest_datas.append(self.create_manifest_data('Sudah sampai', arrival_date)) - if departure_date: - manifest_datas.append(self.create_manifest_data('Sedang dikirim', departure_date)) - manifest_datas.append(self.create_manifest_data('Menunggu pickup', self.create_date)) + if not status: + return manifest_datas + + if arrival_date: + manifest_datas.append(self.create_manifest_data(status['arrival'], arrival_date)) + if departure_date: + manifest_datas.append(self.create_manifest_data(status['departure'], departure_date)) + manifest_datas.append(self.create_manifest_data(status['prepare'], self.create_date)) return manifest_datas @@ -397,19 +413,18 @@ class StockPicking(models.Model): 'delivered': False, 'waybill_number': self.delivery_tracking_no or '', 'delivery_status': None, - 'eta': self.generate_eta_delivery() + 'eta': self.generate_eta_delivery(), + 'manifests': self.get_manifests() } 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_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['delivered'] = self.waybill_id.delivered - response['manifests'] = [self.create_manifest_data(x.description, x.datetime) for x in self.waybill_id.manifest_ids] return response |
