Saltar a contenido

Reportes y cierre de mes

Recetas para los números que necesitas a la hora del cierre. Se apoyan en --count (totales baratos vía la API), --all (paginación automática) y jq (cálculos locales).

Totales rápidos

# Cuántas facturas se emitieron, cuántas siguen abiertas
alegra invoices list --count
alegra invoices list --status open --count

# Cuentas por cobrar pendientes (suma de saldos abiertos)
alegra invoices list --status open --all -o json | jq 'map(.balance|tonumber)|add'

# Cuentas por pagar pendientes
alegra bills list --status open --all -o json | jq 'map(.balance|tonumber)|add'

Actividad de este mes

FROM=2026-06-01; TO=2026-06-30

# Facturas de venta de este mes
alegra invoices list --date-after $FROM --date-before $TO --all \
  -o csv --columns number,date,status,total,balance > sales-$FROM.csv

# Ingresos recibidos este mes
alegra payments list --type in --date-after $FROM --date-before $TO --all \
  -o json | jq 'map(.amount|tonumber)|add'

# Gastos pagados este mes
alegra payments list --type out --date-after $FROM --date-before $TO --all \
  -o json | jq 'map(.amount|tonumber)|add'

Reportes de ventas

# Quién compró más este trimestre
alegra reports sales-by-client --from 2026-01-01 --to 2026-03-31 \
  --order-field total --order-direction DESC

# Ventas por vendedor, a CSV (gestiona a los vendedores con `alegra sellers`)
alegra reports sales-by-seller --from 2026-01-01 --to 2026-12-31 -o csv > sellers.csv

Valuación de inventario al cierre

# Existencias por bodega de un ítem, a la fecha de fin de período
alegra items stock 5 --date 2026-06-30

# ¿Necesitas una unidad / impuesto / código de ID válido para un ajuste? Búscalo sin conexión:
alegra catalog units

Reportes según el plan

reports income-statement y reports account-statement existen pero solo están disponibles en ciertos planes de Alegra — de lo contrario devuelven HTTP 402/403.

Antigüedad de cartera (cuentas por cobrar vencidas), hoy

Hasta que llegue un comando dedicado ar aging, calcula los buckets con jq:

TODAY=$(date -u +%F)
alegra invoices list --status open --all -o json | jq --arg today "$TODAY" '
  map({number, dueDate, balance: (.balance|tonumber)})
  | group_by(.dueDate < $today)
  | map({ overdue: .[0].dueDate < $today,
          count: length,
          amount: (map(.balance)|add) })
'

Una instantánea de cierre de mes en una línea

FROM=2026-06-01; TO=2026-06-30
echo "Invoiced: $(alegra invoices list --date-after $FROM --date-before $TO --count)"
echo "Open AR:  $(alegra invoices list --status open --all -o json | jq 'map(.balance|tonumber)|add')"
echo "Open AP:  $(alegra bills list --status open --all -o json | jq 'map(.balance|tonumber)|add')"

Envuelve eso en un script y córrelo desde automatización de forma programada.