diff --git a/addons/dine360_uber/controllers/main.py b/addons/dine360_uber/controllers/main.py index abccc94..6df8b8e 100644 --- a/addons/dine360_uber/controllers/main.py +++ b/addons/dine360_uber/controllers/main.py @@ -47,26 +47,24 @@ class UberDeliveryController(http.Controller): return {'success': False, 'error': 'Uber not configured'} company = request.website.company_id - # Build clean pickup address - pickup_parts = [company.street, company.city, company.state_id.name, company.zip, company.country_id.name] - pickup_address = ", ".join([p for p in pickup_parts if p]).strip() + # Match POS Format: "Street, City State Zip, Country" + state_code = company.state_id.code or company.state_id.name or "" + pickup_address = f"{company.street}, {company.city} {state_code} {company.zip}, {company.country_id.name}" - # User entered address - building comprehensive string for Uber Direct + # User entered address street = address_data.get('street', '').strip() street2 = address_data.get('street2', '').strip() full_street = f"{street}, {street2}" if street2 else street - # Clean state name (Odoo often adds '(CA)' or codes, which can confuse Uber) + # Clean state (Try for code if possible, fall back to name) state_name = address_data.get('state', '').split('(')[0].strip() - dropoff_parts = [ - full_street, - address_data.get('city', '').strip(), - state_name, - address_data.get('zip', '').strip(), - address_data.get('country', 'Canada').strip() - ] - dropoff_address = ", ".join([p for p in dropoff_parts if p]).strip() + # Construct dropoff string in POS format: "Street, City State Zip, Country" + city = address_data.get('city', '').strip() + zip_code = address_data.get('zip', '').strip() + country = address_data.get('country', 'Canada').strip() + + dropoff_address = f"{full_street}, {city} {state_name} {zip_code}, {country}" _logger.info("Uber Quote Request - Pickup: %s | Dropoff: %s", pickup_address, dropoff_address)