summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2025-02-24 11:26:24 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2025-02-24 11:26:24 +0700
commita9c4cd0c5ac694074f0e3a4359182a97f27f542e (patch)
tree485d95a239ad63a219821e1bf3393f392288ec68
parentf0d995cc220cefffe65ce308ee234528ddc0d6ed (diff)
webhook biteship
-rw-r--r--indoteknik_api/controllers/api_v1/stock_picking.py37
1 files changed, 35 insertions, 2 deletions
diff --git a/indoteknik_api/controllers/api_v1/stock_picking.py b/indoteknik_api/controllers/api_v1/stock_picking.py
index 3e58417f..01269724 100644
--- a/indoteknik_api/controllers/api_v1/stock_picking.py
+++ b/indoteknik_api/controllers/api_v1/stock_picking.py
@@ -138,7 +138,40 @@ class StockPicking(controller.Controller):
'name': picking_data.name
})
- @http.route(prefix + 'n', auth='public', methods=['PUT', 'OPTIONS'], csrf=False)
+ @http.route(prefix + 'webhook/biteship', type='json', auth='public', methods=['POST'], csrf=False)
def udpate_status_from_bitehsip(self, **kw):
- picking_code = int(kw.get('picking_code', 0))
+ try:
+ data = request.jsonrequest # Ambil data JSON dari request
+ event = data.get('event')
+
+ # Log Webhook ke Model Odoo
+ request.env['webhook.logs'].sudo().create({
+ 'event': event,
+ 'order_id': data.get('order_id'),
+ 'courier_tracking_id': data.get('courier_tracking_id'),
+ 'courier_waybill_id': data.get('courier_waybill_id'),
+ 'status': data.get('status'),
+ 'order_price': data.get('price'),
+ 'cash_on_delivery_fee': data.get('cash_on_delivery_fee'),
+ 'proof_of_delivery_fee': data.get('proof_of_delivery_fee'),
+ 'shippment_fee': data.get('shippment_fee'),
+ })
+
+ # 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)}
+
+ def process_order_status(self, data):
+ """Update status order di Odoo"""
+ order = request.env['sale.order'].sudo().search([('id', '=', data.get('order_id'))], limit=1)
+ if order:
+ order.write({'state': data.get('status')})
\ No newline at end of file