Skip to content

Database - Portal de Clientes

Schema de base de datos PostgreSQL para el portal de clientes.

Documentacion

Schema

Schema completo de todas las tablas del portal.

Tablas nuevas:

  • portal_users - Usuarios del portal (credenciales, seguridad, vinculacion con ordcon)
  • portal_payments - Pagos online (gateway, recibo automatico)

Tablas reutilizadas del ERP:

  • ordcon - Clientes (tabla maestra)
  • ordcta - Movimientos de cuenta corriente

Migraciones

Regla de Ubicacion de Schema

Las tablas portal_users y portal_payments viven en el mismo schema que ordcon para cada tenant. Esto se determina dinamicamente por la configuracion de ini.sistema:

Configuracion del tenantordcon vive enportal_users / portal_payments viven en
ordcon por sucursalsucXXXXsucXXXX
ordcon compartidopublicpublic

Razon: portal_users tiene FK directa a ordcon.cnro. Si las tablas vivieran en schemas distintos, se necesitarian cross-schema JOINs innecesarios. Al colocarlas junto a ordcon, las consultas son simples y el aislamiento multi-tenant se respeta naturalmente.

Resolucion en runtime:

  1. JWT contiene tenant_id y sucursal_id
  2. tenant_id resuelve la base de datos via ini.sistema
  3. sucursal_id resuelve el schema
  4. La migracion corre en el nivel correcto segun configuracion (LEVEL_SUCURSAL o LEVEL_EMPRESA)

Tablas Eliminadas del Diseno Original

Las siguientes tablas del diseno anterior no se implementan:

  • tenant_domains: La resolucion de tenant se hace por configuracion en .env al momento del deploy (Docker por tenant). No se necesita tabla de mapeo de dominios.
  • portal_cupones: Se reutiliza el sistema de cupones existente del ERP. No se crea tabla nueva.

Indices Importantes

portal_users

  • uq_portal_users_dni_cuit (UNIQUE) - Unicidad de DNI/CUIT dentro del schema
  • idx_portal_users_cliente_id - Busqueda por cliente vinculado
  • idx_portal_users_email - Busqueda por email

portal_payments

  • uq_portal_payments_external_id (UNIQUE) - Idempotencia de pagos del gateway
  • idx_portal_payments_cliente_id - Pagos de un cliente
  • idx_portal_payments_status - Filtrado por estado

Ver tambien