Saltar al contenido principal

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

TipoDescripción
promotionalCréditos promocionales (pueden expirar)
adjustmentAjustes administrativos de saldo
refundCrédito generado por reembolso
manualAdición manual de crédito

Campos del Crédito

CampoDescripción
Cuenta de cobroCliente que recibe el crédito
EmpresaEmpresa emisora (para alcance de aplicación)
TipoTipo del crédito
Valor (centavos)Valor total del crédito
Valor restanteSaldo aún no utilizado
DescripciónMotivo o descripción del crédito
Expira enFecha 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

  1. Créditos que expiran más pronto (prioridad para evitar pérdida)
  2. 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)

  1. Busca créditos no expirados con saldo disponible
  2. Para cada crédito: aplica el mínimo entre (saldo del crédito, valor restante de la factura)
  3. Crea registro de CreditApplication para trazabilidad
  4. Actualiza el saldo del crédito y de la factura
  5. Si la factura fue totalmente pagada: marca como paid
  6. Actualiza el balanceCents de 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 CreditApplication son 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 amountRemaining se 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