Appearance
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
- Portal Users - Tabla de usuarios del portal
- Portal Payments - Tabla de pagos online
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 tenant | ordcon vive en | portal_users / portal_payments viven en |
|---|---|---|
| ordcon por sucursal | sucXXXX | sucXXXX |
| ordcon compartido | public | public |
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:
- JWT contiene
tenant_idysucursal_id tenant_idresuelve la base de datos viaini.sistemasucursal_idresuelve el schema- La migracion corre en el nivel correcto segun configuracion (
LEVEL_SUCURSALoLEVEL_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.enval 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 schemaidx_portal_users_cliente_id- Busqueda por cliente vinculadoidx_portal_users_email- Busqueda por email
portal_payments
uq_portal_payments_external_id(UNIQUE) - Idempotencia de pagos del gatewayidx_portal_payments_cliente_id- Pagos de un clienteidx_portal_payments_status- Filtrado por estado