From c6738e71d78ead03e399e6cf979378cb5d412506 Mon Sep 17 00:00:00 2001 From: Alaguraj0361 Date: Fri, 10 Apr 2026 15:09:19 +0530 Subject: [PATCH] implement online order management, Uber delivery integration, and update Docker container configurations --- .../models/sale_order.py | 21 +++++++++++++++++++ addons/dine360_uber/models/sale_order.py | 8 +++++++ 2 files changed, 29 insertions(+) diff --git a/addons/dine360_online_orders/models/sale_order.py b/addons/dine360_online_orders/models/sale_order.py index 95ade0e..65bed73 100644 --- a/addons/dine360_online_orders/models/sale_order.py +++ b/addons/dine360_online_orders/models/sale_order.py @@ -59,6 +59,27 @@ class SaleOrderOnline(models.Model): ('cancelled', 'Cancelled'), ], string='Reservation Status', default='draft', tracking=True) + def _is_shippable_order(self): + """ + Treat all online orders as non-shippable for Odoo's standard validation. + This enables 'Billing-only' checkout even for delivery orders, + as we handle shipping manually via Uber fee lines. + """ + self.ensure_one() + if self.fulfilment_type in ['pickup', 'delivery', 'dine_in', 'walk_in']: + return False + return super()._is_shippable_order() + + def _check_carrier_quotation(self, force_carrier_id=None, **kwargs): + """Allow proceeding to payment if we already have a carrier (Uber) or don't need one""" + self.ensure_one() + if self.fulfilment_type in ['pickup', 'delivery', 'dine_in', 'walk_in']: + return True + # If we have a carrier set by our Uber integration, trust it and skip standard re-validation + if self.carrier_id and 'Uber' in (self.carrier_id.name or ''): + return True + return super()._check_carrier_quotation(force_carrier_id=force_carrier_id, **kwargs) + def _create_pos_order_for_kds(self, sale_order): """ Override from dine360_kds to also mark the POS order as an online order. diff --git a/addons/dine360_uber/models/sale_order.py b/addons/dine360_uber/models/sale_order.py index 4161fb3..362d09c 100644 --- a/addons/dine360_uber/models/sale_order.py +++ b/addons/dine360_uber/models/sale_order.py @@ -6,6 +6,14 @@ _logger = logging.getLogger(__name__) class SaleOrder(models.Model): _inherit = 'sale.order' + def _get_available_carriers(self, **kwargs): + """Force Include the Uber carrier in the available list to bypass Odoo's address/website filters""" + carriers = super()._get_available_carriers(**kwargs) + if self.carrier_id and 'Uber' in (self.carrier_id.name or ''): + if self.carrier_id not in carriers: + carriers |= self.carrier_id + return carriers + def _add_uber_delivery_fee(self, amount): """Add the delivery fee using Odoo's standard delivery system to satisfy checkout validation""" _logger.info("Uber: Syncing delivery fee %s to order %s", amount, self.name)