Saltar al contenido principal

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_center es 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 PRELIMINARY es 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:

  1. Reporte (PAYMENT_REPORT): El usuario sube su comprobante (foto/screenshot). El sistema lo guarda como PENDING.
  2. Banco (BANK_TRANSACTION): El sistema descarga (o se carga) el estado de cuenta bancario real.
  3. Conciliación (RECONCILIATION): El Staff administrativo une el Payment Report con la Bank Transaction.
    • Al crearse el registro en RECONCILIATION, se disparan los BILL_PAYMENT para amortizar la deuda de las facturas (BILL).