Update renovacion_service.go

This commit is contained in:
Lizandro Guarnizo
2026-05-01 12:54:20 -05:00
parent 0da9331a5e
commit 7f2db7b919
+31 -8
View File
@@ -74,17 +74,39 @@ func EnviarCorreoPrueba(email string, p *models.PlantillaCorreo) error {
return app.Http.Mail.Send(email, "[PRUEBA] "+p.Asunto, html)
}
// EnviarCorreoManual envía correo de aviso para un contrato específico
// EnviarCorreoManual envía correo de aviso para un contrato específico.
// Usa la primera regla activa para obtener la plantilla y la pasarela de pago;
// si no hay regla, usa la primera plantilla disponible con pasarela "bold".
func EnviarCorreoManual(contrato *models.Contrato) error {
// Usar la primera plantilla activa de tipo renovacion/vencimiento como fallback
plantillas, err := models.GetAllPlantillasSelect()
if err != nil || len(plantillas) == 0 {
return fmt.Errorf("no hay plantillas de correo disponibles")
// Intentar obtener plantilla y pasarela desde la primera regla activa
var p *models.PlantillaCorreo
gateway := "bold"
reglas, err := models.GetReglasActivas()
if err == nil && len(reglas) > 0 {
regla := reglas[0]
gateway = regla.PasarelaEnlace
p, err = models.GetPlantillaByID(regla.PlantillaID)
if err != nil {
p = nil
}
}
p, err := models.GetPlantillaByID(plantillas[0].ID)
if err != nil {
return err
// Fallback: primera plantilla disponible
if p == nil {
plantillas, err2 := models.GetAllPlantillasSelect()
if err2 != nil || len(plantillas) == 0 {
return fmt.Errorf("no hay plantillas de correo disponibles")
}
p, err = models.GetPlantillaByID(plantillas[0].ID)
if err != nil {
return err
}
}
// Generar o reutilizar el enlace de pago
enlacePago := ObtenerOCrearEnlacePago(contrato, gateway)
dias := int(contrato.FechaVencimiento.Sub(time.Now()).Hours() / 24)
var items []ItemServicio
for _, s := range contrato.Servicios {
@@ -103,6 +125,7 @@ func EnviarCorreoManual(contrato *models.Contrato) error {
DiasRestantes: dias,
Total: contrato.PrecioAcordado,
Servicios: items,
EnlacePago: enlacePago,
}
html, err := RenderPlantilla(p, datos)
if err != nil {