implement online order management, Uber delivery integration, and update Docker container configurations

This commit is contained in:
Alaguraj0361 2026-04-10 15:09:19 +05:30
parent 85873ae560
commit c6738e71d7
2 changed files with 29 additions and 0 deletions

View File

@ -59,6 +59,27 @@ class SaleOrderOnline(models.Model):
('cancelled', 'Cancelled'), ('cancelled', 'Cancelled'),
], string='Reservation Status', default='draft', tracking=True) ], 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): def _create_pos_order_for_kds(self, sale_order):
""" """
Override from dine360_kds to also mark the POS order as an online order. Override from dine360_kds to also mark the POS order as an online order.

View File

@ -6,6 +6,14 @@ _logger = logging.getLogger(__name__)
class SaleOrder(models.Model): class SaleOrder(models.Model):
_inherit = 'sale.order' _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): def _add_uber_delivery_fee(self, amount):
"""Add the delivery fee using Odoo's standard delivery system to satisfy checkout validation""" """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) _logger.info("Uber: Syncing delivery fee %s to order %s", amount, self.name)