
Descripción tablas para generador de reportes
Documentación de Base de Datos - Sistema de Tasaciones
Ver también:
- Requerimientos Funcionales y No Funcionales
- Estimación de Tareas
- Requerimientos relacionados: RF11, RF12, RF13
report_types - Tipos de Reportes
Define los diferentes tipos de reportes de tasación que pueden ser generados. Cada tipo puede tener una estructura diferente de secciones y campos.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único del tipo de reporte | INTEGER (PK) | ✗ |
| name | Nombre del tipo de reporte (ej: “Comercial”, “Residencial”, “Industrial”) | VARCHAR(255) | ✗ |
method_type - Métodos de Avalúo
Cataloga los diferentes métodos de avalúo que se pueden utilizar en las tasaciones según estándares profesionales.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único del método | INTEGER (PK) | ✗ |
| name | Nombre del método de avalúo (ej: “Comparativo”, “Costo”, “Ingresos”) | VARCHAR(255) | ✗ |
reports - Reportes Generados
Representa cada reporte individual generado. Es la entidad central que relaciona cliente, tipo de reporte, método y todos los datos capturados.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único del reporte | INTEGER (PK) | ✗ |
| service_number | Número de servicio/folio del reporte | VARCHAR(50) | ✗ |
| client_id | Referencia al cliente que solicita el reporte | INTEGER (FK) | ✗ |
clients - Clientes
Almacena la información básica de los clientes que solicitan tasaciones.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único del cliente | INTEGER (PK) | ✗ |
| name | Nombre completo del cliente | VARCHAR(255) | ✗ |
identification_document - Tipos de Documento de Identidad
Catálogo de tipos de documentos de identidad aceptados.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único | INTEGER (PK) | ✗ |
| name | Nombre del tipo de documento (ej: “Cédula”, “Pasaporte”, “RUT”) | VARCHAR(100) | ✗ |
| last_name | Apellido asociado al documento | VARCHAR(255) | ✓ |
| expedition | Lugar o fecha de expedición | VARCHAR(255) | ✓ |
property_document - Documentos de Propiedad
Almacena información sobre documentos legales de las propiedades tasadas (escrituras, folios de matrícula, etc.).
Nota: Esta tabla aparece en el diagrama pero no veo sus campos definidos. ¿Podrías confirmar qué campos debe tener?
information - Información Adicional
Tabla para almacenar información suplementaria relacionada con reportes.
Nota: Similar a property_document, no veo campos definidos. ¿Es una tabla de lookup o tiene estructura específica?
report_types_sections - Relación Tipos de Reporte y Secciones
Define qué secciones conforman cada tipo de reporte y en qué orden aparecen. Permite que diferentes tipos de reportes tengan estructuras diferentes.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único de la relación | INTEGER (PK) | ✗ |
| report_type_id | Referencia al tipo de reporte | INTEGER (FK) | ✗ |
| section_id | Referencia a la sección | INTEGER (FK) | ✗ |
| order | Orden de aparición de la sección en el reporte | INTEGER | ✗ |
sections - Secciones del Reporte
Define las secciones reutilizables que pueden formar parte de diferentes tipos de reportes. Soporta jerarquías mediante parent_id.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único de la sección | INTEGER (PK) | ✗ |
| name | Nombre de la sección (ej: “Datos del Inmueble”, “Análisis de Mercado”) | VARCHAR(255) | ✗ |
| show_number | Indica si debe mostrarse numeración en el reporte | BOOLEAN | ✗ |
| parent_id | Referencia a sección padre (para subsecciones) | INTEGER (FK) | ✓ |
| deleted_at | Fecha de eliminación lógica (soft delete) | TIMESTAMP | ✓ |
fields - Campos de las Secciones
Define los campos individuales que componen cada sección. Permite parametrizar completamente la estructura de los reportes.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único del campo | INTEGER (PK) | ✗ |
| name | Nombre/etiqueta del campo | VARCHAR(255) | ✗ |
| field_type_id | Tipo de dato del campo (texto, número, fecha, etc.) | INTEGER (FK) | ✗ |
| section_id | Sección a la que pertenece el campo | INTEGER (FK) | ✗ |
| deleted_at | Fecha de eliminación lógica | TIMESTAMP | ✓ |
| group_id | Agrupación del campo (para campos relacionados) | INTEGER (FK) | ✓ |
| row_number | Número de fila para ordenamiento visual | INTEGER | ✗ |
field_types - Tipos de Campos
Catálogo de tipos de datos que pueden tener los campos, determinando cómo se capturan y validan.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único del tipo de campo | INTEGER (PK) | ✗ |
| name | Nombre del tipo (ej: “text”, “number”, “date”, “select”, “textarea”) | VARCHAR(100) | ✗ |
field_validations - Validaciones de Campos
Define las reglas de validación para cada campo, asegurando la integridad de los datos capturados.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único de la validación | INTEGER (PK) | ✗ |
| field_id | Campo al que se aplica la validación | INTEGER (FK) | ✗ |
| validation_rule | Regla de validación (ej: “required”, “min:0”, “max:100”) | VARCHAR(255) | ✗ |
| error_message | Mensaje de error personalizado | TEXT | ✗ |
information_type - Tipos de Información
Clasifica diferentes categorías de información adicional que pueden adjuntarse a los reportes.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único del tipo de información | INTEGER (PK) | ✗ |
| name | Nombre del tipo de información | VARCHAR(255) | ✗ |
group - Agrupación de Campos
Agrupa campos relacionados para presentación visual, permitiendo layouts de múltiples columnas o formato de tabla.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único del grupo | INTEGER (PK) | ✗ |
| cols_qtt | Cantidad de columnas para layout del grupo | INTEGER | ✗ |
| is_table | Indica si el grupo se renderiza como tabla | BOOLEAN | ✗ |
catched_fields - Valores Capturados
Almacena los valores reales capturados para cada campo en cada reporte. La relación polimórfica permite asociar valores tanto a reports como a custom_section.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único del valor capturado | INTEGER (PK) | ✗ |
| fieldable_id | ID de la entidad relacionada (polimórfica) | INTEGER (FK) | ✗ |
| fieldable_type | Tipo de entidad relacionada (polimórfica) | VARCHAR(255) | ✗ |
| value_text | Valor capturado como texto (para compatibilidad histórica) | TEXT | ✓ |
| value_typed | Valor capturado con tipo específico (JSON) | JSONB | ✓ |
| field_snapshot | Snapshot de la definición del campo al momento de captura | JSONB | ✗ |
| deleted_at | Fecha de eliminación lógica | TIMESTAMP | ✓ |
custom_section - Secciones Personalizadas por Reporte
Permite crear secciones específicas para un reporte individual que no existen en el template base. Soporta personalización completa por reporte.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único de la sección personalizada | INTEGER (PK) | ✗ |
| name | Nombre de la sección personalizada | VARCHAR(255) | ✗ |
| type | Tipo de sección custom | VARCHAR(100) | ✗ |
| parent_id | Referencia a sección padre (para jerarquía) | INTEGER (FK) | ✓ |
| report_id | Reporte al que pertenece esta sección | INTEGER (FK) | ✗ |
section_order_overrides - Sobreescritura de Orden
Permite modificar el orden y presentación de secciones en reportes específicos sin alterar la plantilla base. Critical para flexibilidad del sistema.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único del override | INTEGER (PK) | ✗ |
| section_id | Sección cuyo orden se modifica | INTEGER (FK) | ✗ |
| custom_section_id | Sección personalizada cuyo orden se modifica | INTEGER (FK) | ✓ |
| number | Número de orden personalizado | INTEGER | ✗ |
| show_number | Indica si mostrar numeración | BOOLEAN | ✗ |
| report_id | Reporte al que aplica el override | INTEGER (FK) | ✗ |
| is_custom | Indica si es sección custom o estándar | BOOLEAN | ✗ |
| number_typed | Tipo de numeración (numérica, alfabética, romana) | VARCHAR(50) | ✗ |
| name | Nombre alternativo para la sección en este reporte | VARCHAR(255) | ✗ |
custom_fields - Campos Personalizados
Campos específicos que se agregan a secciones personalizadas de reportes individuales.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único del campo personalizado | INTEGER (PK) | ✗ |
| name | Nombre del campo personalizado | VARCHAR(255) | ✗ |
| custom_section_id | Sección personalizada a la que pertenece | INTEGER (FK) | ✗ |
| field_type_id | Tipo de dato del campo | INTEGER (FK) | ✗ |
| deleted_at | Fecha de eliminación lógica | TIMESTAMP | ✓ |
absolute_text - Textos Absolutos/Fijos
Almacena bloques de texto fijo/estático que se incluyen en los reportes (párrafos introductorios, disclaimer legal, etc.). Usa Markdown para formato rico.
| Campo | Descripción | Tipo | Nullable |
|---|---|---|---|
| id | Identificador único del texto | INTEGER (PK) | ✗ |
| markdown_text | Contenido del texto en formato Markdown | TEXT | ✗ |