39 lines
1.6 KiB
Python

from odoo import models, fields, api
import logging
_logger = logging.getLogger(__name__)
class PosOrderLine(models.Model):
_inherit = 'pos.order.line'
def action_mark_ready(self):
"""Override to check if we should request Uber delivery when items are ready"""
res = super(PosOrderLine, self).action_mark_ready()
self._check_and_trigger_uber_dispatch()
return res
def action_mark_served(self):
"""Override to check if we should request Uber delivery when items are served"""
res = super(PosOrderLine, self).action_mark_served()
self._check_and_trigger_uber_dispatch()
return res
def write(self, vals):
res = super(PosOrderLine, self).write(vals)
if 'preparation_status' in vals and vals['preparation_status'] in ['ready', 'served']:
self._check_and_trigger_uber_dispatch()
return res
def _check_and_trigger_uber_dispatch(self):
"""Helper to trigger Uber Direct dispatch if order is eligible and ready"""
orders = self.mapped('order_id')
for order in orders:
is_uber = (order.delivery_type == 'uber') or (getattr(order, 'fulfilment_type', False) == 'delivery' and order.is_uber_order)
if is_uber and not order.uber_delivery_id:
if order._check_all_lines_ready():
try:
order.action_request_uber_delivery()
except Exception as e:
_logger.error("Auto Uber Dispatch failed on KDS Ready for %s: %s", order.name, str(e))