Detalle de líneas de venta: vw_sale_item

vw_sale_item entrega una fila por cada ítem vendido/devolución, unificando facturas y notas de crédito. Los importes y cantidades están con su correspondiente signo, por lo que pueden agregarse directamente.

Casos de uso y queries

1) Top libros vendidos por cantidad (período)

SELECT
  b.title,
  SUM(si.quantity) AS qty
FROM public.vw_sale_item si
JOIN public.vw_book b ON si.book_id = b.book_id
WHERE si.report_date BETWEEN DATE '2025-01-01' AND DATE '2025-08-31'
GROUP BY b.title
ORDER BY qty DESC
LIMIT 20;

2) Ventas netas (subtotal sin impuestos) por vendedor

SELECT
  salesman_name,
  SUM(line_total_neto_base) AS subtotal_base
FROM public.vw_sale_item
WHERE report_date BETWEEN DATE '2025-01-01' AND DATE '2025-08-31'
GROUP BY salesman_name
ORDER BY subtotal_base DESC;

3) Ventas por país (usando el cliente de la cabecera)

SELECT
  c.country,
  SUM(si.line_total_neto_base) AS subtotal_base
FROM public.vw_sale_item si
JOIN public.vw_sale_document sd ON si.document_id = sd.document_id
JOIN public.vw_client c ON sd.client_party_id = c.party_id
WHERE si.report_date >= DATE '2025-01-01'
GROUP BY c.country
ORDER BY subtotal_base DESC;

4) Devoluciones (solo NC)

SELECT
  legal_number,
  client_name,
  SUM(line_total_neto_base) AS refund_base
FROM public.vw_sale_item
WHERE sign = -1
  AND report_date >= DATE '2025-01-01'
GROUP BY legal_number, client_name
ORDER BY refund_base ASC;

5) Auditoría de líneas (últimas 50)

SELECT
  report_date,
  legal_number,
  client_name,
  title,
  quantity,
  unit_price,
  discount_pct,
  line_total_neto,
  currency_symbol
FROM public.vw_sale_item
ORDER BY report_date DESC
LIMIT 50;