summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-09-07 15:54:32 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-09-07 15:54:32 +0700
commit6e1f4a72b2166a418584c9229b04f7a2ab98e41f (patch)
tree606ffe8f35d05d70d5fd07bc2f2a05c6d809bdd4 /indoteknik_api/controllers/api_v1
parent04464fd649e8e05269ae8b444d6aa8f6c68624ca (diff)
Add filter by status on get stock picking API
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
-rw-r--r--indoteknik_api/controllers/api_v1/stock_picking.py33
1 files changed, 23 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..7e246a9f 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,13 +28,29 @@ 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 = []
@@ -54,17 +71,13 @@ class StockPicking(controller.Controller):
'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
})