summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers/api_v1
diff options
context:
space:
mode:
authorit-fixcomart <it@fixcomart.co.id>2025-06-02 09:23:07 +0700
committerit-fixcomart <it@fixcomart.co.id>2025-06-02 09:23:07 +0700
commit2bc522f12795bbd649d28fbc6f127df2ebac34ee (patch)
tree0dfebb75f458c738f63593313b0e19e917e85860 /indoteknik_api/controllers/api_v1
parent1a0b0cb4a740d831f69ea29943cfa0aed8e31fac (diff)
parent484b0e613d0d021faa11c619087baf36e4eacd09 (diff)
<hafid> fix email to Putra & Darren in pengajuan Tempo
Diffstat (limited to 'indoteknik_api/controllers/api_v1')
-rw-r--r--indoteknik_api/controllers/api_v1/stock_picking.py102
1 files changed, 55 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')
+ })