feat: marcar pago manual en contratos con enlace Bold pendiente

Agrega endpoint POST /api/contratos/:id/marcar-pagado y botón (✓)
en la tabla de contratos para confirmar el pago sin depender del
webhook de Bold. Llama a MarcarContratoPagado (pago_confirmado=true,
limpia enlace, renueva fecha vencimiento) y envía correo de confirmación.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-09 20:11:50 -05:00
co-authored by Claude Sonnet 4.6
parent 9305cd6eb2
commit 0218b93bb4
3 changed files with 34 additions and 0 deletions
+18
View File
@@ -442,3 +442,21 @@ func VerificarPagoBold(c *fiber.Ctx) error {
return c.JSON(fiber.Map{"ok": true, "confirmado": true, "monto": monto, "mensaje": "¡Pago confirmado!"})
}
// MarcarPagoManual confirma manualmente el pago de un contrato sin pasar por Bold.
// POST /api/contratos/:id/marcar-pagado
func MarcarPagoManual(c *fiber.Ctx) error {
id, err := strconv.ParseUint(c.Params("id"), 10, 64)
if err != nil {
return c.Status(400).JSON(fiber.Map{"error": "ID inválido"})
}
ok, err := models.MarcarContratoPagado(uint(id))
if err != nil {
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
}
if !ok {
return c.JSON(fiber.Map{"ok": true, "mensaje": "El pago ya estaba confirmado"})
}
go services.EnviarCorreoConfirmacionPago(uint(id), "manual")
return c.JSON(fiber.Map{"ok": true, "mensaje": "Pago marcado como confirmado"})
}