summaryrefslogtreecommitdiff
path: root/indoteknik_api/controllers
diff options
context:
space:
mode:
authorIndoteknik . <it@fixcomart.co.id>2025-06-20 16:06:00 +0700
committerIndoteknik . <it@fixcomart.co.id>2025-06-20 16:06:00 +0700
commit6e8591a6bd28c4faafc08eb9c539fe24bdecf419 (patch)
tree35b4b3371d9ae6b7e5a963f3a64be77674750b87 /indoteknik_api/controllers
parent6d222cdfb56df09e61cd3add3c3fb328bd9adc7b (diff)
(andri) tracking webhook aktif dan menggantikan peran button sebelumnya
Diffstat (limited to 'indoteknik_api/controllers')
-rw-r--r--indoteknik_api/controllers/api_v1/stock_picking.py33
1 files changed, 27 insertions, 6 deletions
diff --git a/indoteknik_api/controllers/api_v1/stock_picking.py b/indoteknik_api/controllers/api_v1/stock_picking.py
index 0926bd26..09d0c585 100644
--- a/indoteknik_api/controllers/api_v1/stock_picking.py
+++ b/indoteknik_api/controllers/api_v1/stock_picking.py
@@ -184,13 +184,34 @@ class StockPicking(controller.Controller):
# def udpate_status_from_bitehsip(self, **kw):
# return "ok"
+ # def process_order_status(self, data):
+ # 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_status(self, data):
- 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()})
+ picking = request.env['stock.picking'].sudo().search([
+ ('biteship_id', '=', data.get('order_id'))
+ ], limit=1)
+
+ if not picking:
+ _logger.warning(f"[Webhook] Tidak ditemukan picking untuk order_id {data.get('order_id')}")
+ return
+
+ status = data.get('status')
+ timestamp = data.get('updated_at') or datetime.utcnow().isoformat()
+
+ description = picking._get_biteship_status_description(status, {
+ "courier": {"company": data.get("courier_company", "")},
+ "destination": {"contact_name": picking.partner_id.name or ""}
+ })
+
+ picking.log_biteship_event_from_webhook(status, timestamp, description)
+
+
def process_order_price(self, data):
picking_model = request.env['stock.picking'].sudo().search([('biteship_id', '=', data.get('order_id'))],