diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2025-06-02 09:23:07 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2025-06-02 09:23:07 +0700 |
| commit | 2bc522f12795bbd649d28fbc6f127df2ebac34ee (patch) | |
| tree | 0dfebb75f458c738f63593313b0e19e917e85860 /indoteknik_api | |
| parent | 1a0b0cb4a740d831f69ea29943cfa0aed8e31fac (diff) | |
| parent | 484b0e613d0d021faa11c619087baf36e4eacd09 (diff) | |
<hafid> fix email to Putra & Darren in pengajuan Tempo
Diffstat (limited to 'indoteknik_api')
| -rw-r--r-- | indoteknik_api/controllers/api_v1/stock_picking.py | 102 | ||||
| -rw-r--r-- | indoteknik_api/models/sale_order.py | 2 |
2 files changed, 57 insertions, 47 deletions
diff --git a/indoteknik_api/controllers/api_v1/stock_picking.py b/indoteknik_api/controllers/api_v1/stock_picking.py index 31706b99..49547779 100644 --- a/indoteknik_api/controllers/api_v1/stock_picking.py +++ b/indoteknik_api/controllers/api_v1/stock_picking.py @@ -22,42 +22,44 @@ class StockPicking(controller.Controller): if not get_params['valid']: return self.response(code=400, description=get_params) - + params = get_params['value'] partner_id = params['partner_id'] limit = params['limit'] offset = params['offset'] - + 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)] shipment_domain2 = [('driver_departure_date', '!=', False), ('sj_return_date', '=', False)] - completed_domain = [('driver_departure_date', '!=', False),'|', ('driver_arrival_date', '!=', False), ('sj_return_date', '!=', False)] + completed_domain = [('driver_departure_date', '!=', False), '|', ('driver_arrival_date', '!=', False), + ('sj_return_date', '!=', False)] completed_domain2 = [('driver_departure_date', '!=', False), ('sj_return_date', '!=', False)] picking_model = request.env['stock.picking'] domain = [ - ('partner_id', 'in', child_ids), - ('sale_id', '!=', False), - ('origin', 'ilike', 'SO%'), - ('state', '!=', 'cancel') + ('partner_id', 'in', child_ids), + ('sale_id', '!=', False), + ('origin', 'ilike', 'SO%'), + ('state', '!=', 'cancel'), + ('name', 'ilike', 'BU/OUT%') ] - + 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) - ] + domain += ['|', '|', + ('name', 'ilike', query_like), + ('sale_id.client_order_ref', 'ilike', query_like), + ('delivery_tracking_no', 'ilike', query_like) + ] default_domain = domain.copy() - + if params['status'] == 'pending': domain += pending_domain elif params['status'] == 'shipment': - domain += shipment_domain + shipment_domain2 + domain += shipment_domain + shipment_domain2 elif params['status'] == 'completed': domain += completed_domain @@ -65,7 +67,7 @@ class StockPicking(controller.Controller): res_pickings = [] for picking in stock_pickings: manifests = picking.get_manifests() - + res_pickings.append({ 'id': picking.id, 'name': picking.name, @@ -86,12 +88,12 @@ class StockPicking(controller.Controller): 'summary': { 'pending_count': picking_model.search_count(default_domain + pending_domain), 'shipment_count': picking_model.search_count(default_domain + shipment_domain + shipment_domain2), - 'completed_count': picking_model.search_count(default_domain + completed_domain ) + 'completed_count': picking_model.search_count(default_domain + completed_domain) }, 'picking_total': picking_model.search_count(domain), 'pickings': res_pickings }) - + @http.route(PREFIX_PARTNER + 'stock-picking/<id>/tracking', auth='public', method=['GET', 'OPTIONS']) @controller.Controller.must_authorized(private=True, private_key='partner_id') def get_partner_stock_picking_detail_tracking(self, **kw): @@ -140,37 +142,43 @@ class StockPicking(controller.Controller): return self.response({ 'name': picking_data.name }) - - @http.route(prefix + 'webhook/biteship', type='json', auth='public', methods=['POST'], csrf=False) + + # @http.route(prefix + 'webhook/biteship', type='json', auth='public', methods=['POST'], csrf=False) + # def udpate_status_from_bitehsip(self, **kw): + # try: + # if not request.jsonrequest: + # return "ok" + + # data = request.jsonrequest # Ambil data JSON dari request + # event = data.get('event') + + # # Handle Event Berdasarkan Jenisnya + # if event == "order.status": + # self.process_order_status(data) + # elif event == "order.price": + # self.process_order_price(data) + # elif event == "order.waybill_id": + # self.process_order_waybill(data) + + # return {'success': True, 'message': f'Webhook {event} received'} + # except Exception as e: + # return {'success': False, 'message': str(e)} + + @http.route(prefix + 'webhook/biteship', type='json', auth='public', methods=['POST'], csrf=False) def udpate_status_from_bitehsip(self, **kw): - try: - if not request.jsonrequest: - return "ok" - - data = request.jsonrequest # Ambil data JSON dari request - event = data.get('event') - - # Handle Event Berdasarkan Jenisnya - if event == "order.status": - self.process_order_status(data) - elif event == "order.price": - self.process_order_price(data) - elif event == "order.waybill_id": - self.process_order_waybill(data) - - return {'success': True, 'message': f'Webhook {event} received'} - except Exception as e: - return {'success': False, 'message': str(e)} + return "ok" def process_order_status(self, data): - picking_model = request.env['stock.picking'].sudo().search([('biteship_id', '=', data.get('order_id'))], limit=1) + picking_model = request.env['stock.picking'].sudo().search([('biteship_id', '=', data.get('order_id'))], + limit=1) if data.get('status') == 'picked': picking_model.write({'driver_departure_date': datetime.utcnow()}) elif data.get('status') == 'delivered': picking_model.write({'driver_arrival_date': datetime.utcnow()}) - + def process_order_price(self, data): - picking_model = request.env['stock.picking'].sudo().search([('biteship_id', '=', data.get('order_id'))], limit=1) + picking_model = request.env['stock.picking'].sudo().search([('biteship_id', '=', data.get('order_id'))], + limit=1) order = request.env['sale.order'].sudo().search([('name', '=', picking_model.sale_id.name)], limit=1) if order: order.write({ @@ -178,11 +186,11 @@ class StockPicking(controller.Controller): }) def process_order_waybill(self, data): - picking_model = request.env['stock.picking'].sudo().search([('biteship_id', '=', data.get('order_id'))], limit=1) + picking_model = request.env['stock.picking'].sudo().search([('biteship_id', '=', data.get('order_id'))], + limit=1) if picking_model: picking_model.write({ - 'biteship_waybill_id': data.get('courier_waybill_id'), - 'delivery_tracking_no': data.get('courier_waybill_id'), - 'biteship_tracking_id':data.get('courier_tracking_id') - }) -
\ No newline at end of file + 'biteship_waybill_id': data.get('courier_waybill_id'), + 'delivery_tracking_no': data.get('courier_waybill_id'), + 'biteship_tracking_id': data.get('courier_tracking_id') + }) diff --git a/indoteknik_api/models/sale_order.py b/indoteknik_api/models/sale_order.py index 727379c5..baba7c37 100644 --- a/indoteknik_api/models/sale_order.py +++ b/indoteknik_api/models/sale_order.py @@ -29,6 +29,8 @@ class SaleOrder(models.Model): 'pickings': [] } for picking in sale_order.picking_ids: + if not picking.name.startswith('BU/OUT'): + continue data['pickings'].append({ 'id': picking.id, 'name': picking.name, |
