vw_sale_document unifica facturas (SALE_BILL) y notas de crédito (SALE_CREDIT_NOTE) en un esquema común para reporting y exportación. Incluye:
identificación legal (legal_number)
cliente y vendedor (desde vw_client / vw_salesman)
moneda y tipo de cambio histórico (exchange_rate)
totales firmados (ventas positivas, NC negativas)
desgloses agregados: IVA (vw_sale_tax) y conceptos (vw_sale_concept)
Regla de signo
Factura: sign = 1
Nota de crédito: sign = -1
Todos los totales permiten sumarizar sin CASE.
Importante:
La columna is_cancelled indica si el comprobante fue anulado. Los comprobantes anulados no deben incluirse en los reportes de ventas netas.
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.
SELECT
account_date,
legal_number,
client_tax_id,
client_name,
total_net_taxable,
total_vat,
total_amount
FROM public.vw_sale_document
WHERE real_date BETWEEN '2025-01-01' AND '2025-01-31'
ORDER BY account_date, legal_number;
SELECT
SUM(total_amount) AS sales_net_total
FROM public.vw_sale_document
WHERE real_date BETWEEN '2025-01-01' AND '2025-01-31'
AND is_cancelled IS NOT TRUE;
SELECT
client_party_id,
client_name,
SUM(total_amount) AS total
FROM public.vw_sale_document
WHERE real_date >= '2025-01-01'
AND is_cancelled IS NOT TRUE
GROUP BY client_party_id, client_name
ORDER BY total DESC;
SELECT
salesman_party_id,
salesman_name,
SUM(total_amount) AS total
FROM public.vw_sale_document
WHERE real_date >= '2025-01-01'
AND is_cancelled IS NOT TRUE
GROUP BY salesman_party_id, salesman_name
ORDER BY total DESC;
SELECT
real_date,
legal_number,
document_type_name,
sucursal_name,
operator_name,
total_amount
FROM public.vw_sale_document
ORDER BY real_date DESC
LIMIT 100;
SELECT
legal_number,
currency_symbol,
exchange_rate,
total_amount,
total_amount_base
FROM public.vw_sale_document
WHERE real_date >= NOW() - INTERVAL '7 days'
ORDER BY real_date DESC;
Para auditar qué sucursales tienen más errores o cancelaciones.
SELECT
sucursal_name,
COUNT(*) FILTER (WHERE is_cancelled = true) AS cantidad_anuladas,
COUNT(*) FILTER (WHERE is_cancelled = false) AS cantidad_validas,
ROUND((COUNT(*) FILTER (WHERE is_cancelled = true) * 100.0 / COUNT(*)), 2) AS pct_error
FROM public.vw_sale_document
GROUP BY sucursal_name;
sql
SELECT
c.country,
SUM(d.total_amount_base) AS total_sales_base
FROM public.vw_sale_document d
JOIN public.vw_client c
ON d.client_party_id = c.party_id
WHERE d.real_date BETWEEN DATE '2026-01-01' AND DATE '2026-01-31'
AND d.is_cancelled IS NOT TRUE
GROUP BY c.country
ORDER BY total_sales_base DESC;sql