Skip to content

website_sale: clientes autenticados con pricelist ARS ven precios en USD al conectarse desde IP no argentina (GeoIP override) #458

@ALopez-Adhoc

Description

@ALopez-Adhoc

Descripción

Un cliente autenticado en el portal de adhoc.inc cuya property_product_pricelist es la Pricing2023 - Tarifa Pública ARS (pricelist 73, ARS) ve el precio del producto Consultoría Pre-pago de Horas en 59 USD en lugar de ARS cuando accede desde una IP fuera de Argentina (reproducido con VPN a EE.UU.).

El problema fue relevado en el ticket de helpdesk 116463 (Bugfix, producto Sitio web / E-commerce), con al menos tres clientes afectados: Digital Consultant S.A., Tecnovex S.R.L. y Microelectronica (grupomicro).

Causa raíz

La pricelist 73 (ARS) tiene country_group_ids = [13 "Argentina"], lo que hace que _is_available_in_country('US') devuelva False. Cuando Odoo evalúa las pricelists disponibles para un request con GeoIP = US, excluye la pricelist 73 aunque el usuario esté autenticado y tenga esa pricelist asignada explícitamente en su partner.

La única pricelist del sitio sin restricción geográfica es la 72 (USD), que tiene una regla fija de 59 USD para ese producto y pasa a ser la pricelist activa.

Flujo en website_sale/models/website.py:

_get_current_pricelist()
  → get_pricelist_available()  (country_code='US')
    → _get_pl_partner_order()
       - GeoIP US: ningún country group lo cubre → no agrega pricelists por geo
       - Fallback website pricelists sin country_group_ids → pricelist 72 (USD) ✓
       - Partner pricelist 73: _is_available_in_country('US') → False → EXCLUIDA
       → available = [72 (USD)]
  → partner pricelist 73 NOT in available → toma available[0] = 72 (USD)
  → precio del producto en pricelist 72 = 59 USD

Comportamiento esperado

Un cliente autenticado con pricelist ARS asignada debería conservar esa pricelist independientemente de su IP de acceso. La asignación explícita en el partner debería tener precedencia sobre el GeoIP cuando el usuario está identificado.

Impacto

  • Clientes argentinos con VPN, viajando al exterior, o con IPs enrutadas fuera de AR ven precios en USD
  • El precio mostrado (59 USD) no corresponde al precio comercial ARS pactado en su suscripción
  • El issue es silencioso: el cliente puede confirmar la orden en USD sin advertencia

Módulo candidato a corregir

l10n_ar_website_sale_ux (repo ingadhoc/website) es el módulo AR-específico para website_sale. Una opción es que este módulo sobreescriba _get_pl_partner_order para que, cuando el usuario esté autenticado y su pricelist de partner esté disponible en el sitio web (_is_available_on_website), se la incluya siempre en las disponibles sin filtrar por _is_available_in_country.

Reproducción

  1. Conectarse a adhoc.inc con VPN simulando IP de EE.UU.
  2. Autenticarse como cliente con property_product_pricelist = 73 (ARS)
  3. Navegar al producto Consultoría Pre-pago de Horas
  4. Precio mostrado: 59 USD (debería ser ARS)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions