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))