vw_document es la vista base para consulta, auditoría y reporting de documentos del sistema. Abstrae la tabla public.document y enriquece cada registro con:
nombres legibles de tipo de documento (document_type_name),
una familia/grupo funcional (document_group) derivada de reglas de negocio,
información de sucursal,
auditoría completa de la transacción que originó el documento (usuario y fecha).
El mapeo de tipos y grupos se realiza mediante un CTE embebido (doc_types), que refleja directamente los enums utilizados en el código de la aplicación.
Importante: para los reportes lo más probable es que no se use esta vista, sino las vistas particulares de cada módulo. Esta vista se utiliza para simplificar la construcción de documentos en otras vistas.
Todos los documentos tienen fecha pero no todos tienen fecha contable. Dentro del sistema, si un documento no tiene fecha contable, se toma la fecha real como fecha contable.
Tipo de documento
Representado por document_type_id (valor numérico).
Traducido a document_type_name (ej: SALE_BILL, BUY_ORDER).
Agrupa documentos por función de negocio, facilitando filtros y reportes masivos.
Ejemplos de grupos:
BUY_ORDER
BUY_BILL
SALE_BILL
SALE_ORDER
SALE_PAYMENT
STOCK
BOOKKEEPING
RRMM_LIQUIDATION
PERSONAL
PERSONAL_PAYMENT
SELECT
document_id,
real_date,
document_type_name,
sucursal_name
FROM public.vw_document
WHERE document_group = 'STOCK'
ORDER BY real_date DESC;
SELECT
document_id,
document_type_name,
real_date,
account_date,
sucursal_name
FROM public.vw_document
WHERE document_group IN ('SALE_BILL', 'SALE_CREDIT_NOTE')
AND real_date BETWEEN '2025-01-01' AND '2025-01-31'
ORDER BY account_date;
SELECT
document_id,
document_type_name,
document_group,
transaction_date
FROM public.vw_document
WHERE user_id = 42
ORDER BY transaction_date DESC;
SELECT
sucursal_name,
document_group,
COUNT(*) AS qty
FROM public.vw_document
WHERE real_date >= NOW() - INTERVAL '7 days'
GROUP BY sucursal_name, document_group
ORDER BY sucursal_name, qty DESC;
Útil para control contable/impositivo.
SELECT
document_id,
document_type_name,
real_date,
account_date
FROM public.vw_document
WHERE real_date <> account_date
ORDER BY real_date DESC;
SELECT
transaction_date,
operator_name,
document_type_name,
sucursal_name
FROM public.vw_document
ORDER BY transaction_date DESC
LIMIT 100;
vw_document no reemplaza a public.document: la enriquece para lectura.
El mapeo de tipos está hardcodeado en la vista y debe mantenerse sincronizado con el enum del código.
Si un document_type_id no está contemplado en el mapeo:
document_type_name y document_group pueden quedar NULL
esto sirve como señal de desalineación entre base y aplicación.
vw_transaction: aporta auditoría (usuario y fecha).
vw_book_audit: utiliza real_date y transaction_date para calcular cambios globales.
vw_book: depende indirectamente de documentos para stock y precios.