summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-08-28 11:02:58 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-08-28 11:02:58 +0700
commit3757621d0b0232603a3d578b27b845054cae5982 (patch)
treedcc8e0490408870282a03c6e395dcab4af6ab527
parent3cf2809ab4cd0ca113318665997d58d0d758e495 (diff)
Refactor get manifest and add last manifest on get stock picking api
-rw-r--r--indoteknik_api/controllers/api_v1/stock_picking.py4
-rw-r--r--indoteknik_custom/models/stock_picking.py51
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