Ir al contenido

Facturas Recurrentes

Ruta: /owner/invoices (pestana Recurrentes) Configura plantillas que generan facturas automaticamente segun la frecuencia que necesites.


La pestana Recurrentes muestra todas las plantillas de facturacion recurrente. Cada plantilla define un cliente, conceptos y una frecuencia de generacion. El sistema crea automaticamente las facturas segun el calendario configurado.

Columnas de la tabla: Nombre, Cliente, Frecuencia, Proxima generacion, Importe, Estado, Acciones

Filtros disponibles: cliente, estado, frecuencia


FuncionDescripcionDocumentacion
Crear PlantillaConfigura una plantilla recurrente con cliente, conceptos y frecuenciaVer
Ver HistorialConsulta el historial de facturas generadas desde una plantillaVer
Generar ManualmenteGenera una factura fuera del calendario programadoVer

FrecuenciaIntervaloEjemplo de uso
DiariaCada diaServicios de uso diario
SemanalCada 7 diasEntregas semanales
MensualCada mes (mismo dia)Cuotas mensuales, alquileres
TrimestralCada 3 mesesServicios trimestrales
AnualCada 12 mesesSuscripciones anuales, mantenimientos
PersonalizadaIntervalo libre en diasCualquier periodicidad no estandar

┌─────────┐
│ Activa │◄──────────┐
└────┬────┘ │
│ Pausar Reactivar
┌────▼────┐ │
│ Pausada │───────────┘
└────┬────┘
│ Finalizar / Fecha fin alcanzada
┌────▼───────┐
│ Finalizada │
│ FINAL │
└────────────┘

Transiciones permitidas:

DesdeHacia
ActivaPausada, Finalizada
PausadaActiva, Finalizada
Finalizada(estado final)

Detalles técnicos
TablaColumnas principalesFK
recurring_invoicesid, business_id, customer_id, frequency, start_date, end_date, next_generation_date, status, auto_emitcustomers, businesses
recurring_invoice_itemsid, recurring_invoice_id, description, quantity, unit_price, tax_raterecurring_invoices
recurring_invoice_historyid, recurring_invoice_id, invoice_id, generated_atrecurring_invoices, invoices
FuncionTriggerDescripcion
generate-recurring-invoicesCron diarioRevisa plantillas activas y genera facturas pendientes

Plantillas activas con proxima generacion:

SELECT ri.*, c.name as cliente, ri.next_generation_date
FROM recurring_invoices ri
LEFT JOIN customers c ON ri.customer_id = c.id
WHERE ri.business_id = '<business_id>'
AND ri.status = 'active'
ORDER BY ri.next_generation_date;

Historial de generacion:

SELECT rih.generated_at, i.invoice_number, i.total_amount, i.status
FROM recurring_invoice_history rih
JOIN invoices i ON rih.invoice_id = i.id
WHERE rih.recurring_invoice_id = '<recurring_invoice_id>'
ORDER BY rih.generated_at DESC;