diff options
| author | Rafi Zadanly <zadanlyr@gmail.com> | 2023-09-11 13:18:02 +0700 |
|---|---|---|
| committer | Rafi Zadanly <zadanlyr@gmail.com> | 2023-09-11 13:18:02 +0700 |
| commit | 1694e042acb29b476815d29f54f2ec95d37883be (patch) | |
| tree | d502c76d333cc4c0602e01a98eeb7fb7f0461c01 /indoteknik_api/controllers/api_v1/stock_picking.py | |
| parent | 02c2304b242245250177fec6ab3c911d9acba781 (diff) | |
| parent | 9a630354c1d00e218595db9b2e8cd0b7df9ed97c (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.py | 35 |
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 }) |
