Esquema de Base de Datos (ERD)
La persistencia de Yuruary se basa en PostgreSQL, utilizando características avanzadas para soportar la arquitectura distribuida y multi-inquilino.
Características Clave
- UUIDs (v4): Utilizados como Claves Primarias (PK) en todas las tablas para evitar colisiones durante la sincronización bidireccional entre la Nube y la Oficina.
- JSONB: Empleado para almacenar configuraciones flexibles y reglas de negocio dinámicas (e.g.,
global_settings) sin alterar el esquema rígido.
Diagrama Maestro
El siguiente diagrama Entidad-Relación (ERD) muestra las relaciones nucleares del sistema.
Diccionario de Datos (Desglose por Módulos)
🏢 Núcleo Organizacional
Representa la jerarquía Multi-Tenant del sistema.
- ORGANIZATION: Es el "Tenant" o cliente administrador (ej: "Administradora Yuruary").
global_settings: Campo JSONB crítico. Almacena reglas que aplican a todos los condominios de esa organización.
- CONDOMINIUM: La entidad operativa (ej: "Residencias El Paraíso"). Hereda o sobrescribe configuraciones en su campo
preferences.
🏗️ Estructura Física
Define cómo se organiza espacial y legalmente el inmueble.
- SECTOR: Agrupa unidades (ej: "Torre A", "Manzana 3", "Locales Comerciales"). Permite segregar contabilidad si
is_independent_cost_centeres true. - UNIT: La unidad indivisible (Apartamento, Local). No existen sub-unidades. Cada unidad es un ente legal con sus propios coeficientes (alícuotas) de participación en gastos comunes y por sector.
💰 Contabilidad y Fondos
Manejo estricto de dineros para evitar la malversación de fondos.
- LEDGER_ACCOUNT: Catálogo de cuentas contables.
- FUND: Saldos segregados (ej: "Fondo de Reserva", "Prestaciones Sociales").
Separación de Fondos
Los fondos se manejan como entidades separadas de la cuenta operativa principal para garantizar que el dinero de reserva no se use inadvertidamente para gastos corrientes.
🔄 Ciclo de Facturación
El motor que genera la deuda condominal.
- BILLING_PERIOD: Controla el mes de cobro. El estado
PRELIMINARYes vital: permite a la junta de condominio revisar los cálculos antes de emitir los recibos definitivos (CLOSED). - EXPENSE: El gasto registrado. Su alcance (
distribution_scope) determina a quién se le cobra:GLOBAL: A todo el condominio.SECTOR: Solo a una torre específica.UNIT_DIRECT: Multas o consumos individuales.
🏦 Tesorería y Conciliación
Flujo diseñado para resolver el caos de la conciliación bancaria en 3 pasos:
- Reporte (PAYMENT_REPORT): El usuario sube su comprobante (foto/screenshot). El sistema lo guarda como
PENDING. - Banco (BANK_TRANSACTION): El sistema descarga (o se carga) el estado de cuenta bancario real.
- Conciliación (RECONCILIATION): El Staff administrativo une el Payment Report con la Bank Transaction.
- Al crearse el registro en
RECONCILIATION, se disparan losBILL_PAYMENTpara amortizar la deuda de las facturas (BILL).
- Al crearse el registro en