summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1/stock_picking.py
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-09-11 13:18:02 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-09-11 13:18:02 +0700
commit1694e042acb29b476815d29f54f2ec95d37883be (patch)
treed502c76d333cc4c0602e01a98eeb7fb7f0461c01 /indoteknik_api/controllers/api_v1/stock_picking.py
parent02c2304b242245250177fec6ab3c911d9acba781 (diff)
parent9a630354c1d00e218595db9b2e8cd0b7df9ed97c (diff)
Merge branch 'feature/voucher-group' into production
Diffstat (limited to 'indoteknik_api/controllers/api_v1/stock_picking.py')
-rw-r--r--indoteknik_api/controllers/api_v1/stock_picking.py35
1 files changed, 25 insertions, 10 deletions
diff --git a/indoteknik_api/controllers/api_v1/stock_picking.py b/indoteknik_api/controllers/api_v1/stock_picking.py
index e0a60c98..74f4564a 100644
--- a/indoteknik_api/controllers/api_v1/stock_picking.py
+++ b/indoteknik_api/controllers/api_v1/stock_picking.py
@@ -13,6 +13,7 @@ class StockPicking(controller.Controller):
get_params = self.get_request_params(kw, {
'partner_id': ['number'],
'q': [],
+ 'status': [],
'limit': ['default:0', 'number'],
'offset': ['default:0', 'number']
})
@@ -27,18 +28,35 @@ class StockPicking(controller.Controller):
child_ids = request.env['res.partner'].browse(partner_id).get_child_ids()
+ pending_domain = [('driver_departure_date', '=', False), ('driver_arrival_date', '=', False)]
+ shipment_domain = [('driver_departure_date', '!=', False), ('driver_arrival_date', '=', False)]
+ completed_domain = [('driver_departure_date', '!=', False), ('driver_arrival_date', '!=', False)]
+
picking_model = request.env['stock.picking']
- default_domain = [('partner_id', 'in', child_ids), ('sale_id', '!=', False), ('origin', 'ilike', 'SO%'), ('state', '!=', 'cancel')]
+ default_domain = [
+ ('partner_id', 'in', child_ids),
+ ('sale_id', '!=', False),
+ ('origin', 'ilike', 'SO%'),
+ ('state', '!=', 'cancel')
+ ]
- domain = default_domain
+ domain = default_domain.copy()
if params['q']:
query_like = '%' + params['q'].replace(' ', '%') + '%'
domain += ['|', '|', ('name', 'ilike', query_like), ('sale_id.client_order_ref', 'ilike', query_like), ('delivery_tracking_no', 'ilike', query_like)]
+
+ if params['status'] == 'pending':
+ domain += pending_domain
+ elif params['status'] == 'shipment':
+ domain += shipment_domain
+ elif params['status'] == 'completed':
+ domain += completed_domain
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,
@@ -50,21 +68,18 @@ 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,
+ 'status': picking.shipping_status,
'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)])
- shipment_count = picking_model.search_count(default_domain + [('driver_departure_date', '!=', False), ('driver_arrival_date', '=', False)])
- completed_count = picking_model.search_count(default_domain + [('driver_departure_date', '!=', False), ('driver_arrival_date', '!=', False)])
-
return self.response({
'summary': {
- 'pending_count': pending_count,
- 'shipment_count': shipment_count,
- 'completed_count': completed_count
+ 'pending_count': picking_model.search_count(default_domain + pending_domain),
+ 'shipment_count': picking_model.search_count(default_domain + shipment_domain),
+ 'completed_count': picking_model.search_count(default_domain + completed_domain)
},
- 'picking_total': picking_model.search_count(default_domain),
+ 'picking_total': picking_model.search_count(domain),
'pickings': res_pickings
})