Créditos
El sistema de créditos permite agregar saldo en la cuenta del cliente que se aplica automáticamente en facturas futuras.
Tipos de Crédito
| Tipo | Descripción |
|---|---|
promotional | Créditos promocionales (pueden expirar) |
adjustment | Ajustes administrativos de saldo |
refund | Crédito generado por reembolso |
manual | Adición manual de crédito |
Campos del Crédito
| Campo | Descripción |
|---|---|
| Cuenta de cobro | Cliente que recibe el crédito |
| Empresa | Empresa emisora (para alcance de aplicación) |
| Tipo | Tipo del crédito |
| Valor (centavos) | Valor total del crédito |
| Valor restante | Saldo aún no utilizado |
| Descripción | Motivo o descripción del crédito |
| Expira en | Fecha de expiración (null = nunca expira) |
Aplicación Automática de Créditos
Cuando una factura es finalizada, el sistema aplica créditos automáticamente usando la estrategia FIFO:
Orden de Aplicación
- Créditos que expiran más pronto (prioridad para evitar pérdida)
- Créditos más antiguos (cuando la fecha de expiración es igual)
Reglas de Alcance por Empresa
- Si la factura tiene empresa: aplica créditos de la misma empresa y créditos sin empresa
- Si la factura no tiene empresa: aplica solo créditos sin empresa
Proceso (en transacción atómica)
- Busca créditos no expirados con saldo disponible
- Para cada crédito: aplica el mínimo entre (saldo del crédito, valor restante de la factura)
- Crea registro de
CreditApplicationpara trazabilidad - Actualiza el saldo del crédito y de la factura
- Si la factura fue totalmente pagada: marca como
paid - Actualiza el
balanceCentsde la cuenta de cobro
Restauración de Créditos
Cuando una factura es anulada (void), todos los créditos aplicados son restaurados:
- Cada crédito tiene su saldo restante incrementado
- Los registros de
CreditApplicationson eliminados - La factura vuelve al status
open - El saldo de la cuenta de cobro es actualizado
Expiración de Créditos
Los créditos con fecha de expiración son automáticamente reducidos a cero cuando la fecha pasa:
- El
amountRemainingse define como 0 - El saldo de la cuenta de cobro es reducido
Operaciones
- Agregar crédito: Crea crédito e incrementa el saldo de la cuenta
- Ajustar saldo: Agrega o sustrae créditos
- Crédito de reembolso: Crea crédito del tipo
refund - Crédito promocional: Crea crédito con expiración opcional
- Eliminar crédito: Solo si nunca fue utilizado (saldo restante = valor total)
- Consultar saldo disponible: Retorna total disponible, créditos activos y créditos por expirar