fix: marcar pago manual no toca estado ni fecha_vencimiento
MarcarContratoPagado siempre sobreescribía estado='activo' y renovaba fecha_vencimiento, lo que causaba doble renovación si el admin ya había ajustado el contrato manualmente. ConfirmarPagoManual solo limpia pago_confirmado, fecha_pago y el enlace Bold, sin tocar nada más. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
0218b93bb4
commit
b3b6f6705d
@@ -336,6 +336,21 @@ func MarcarContratoPagado(contratoID uint) (bool, error) {
|
|||||||
return result.RowsAffected > 0, result.Error
|
return result.RowsAffected > 0, result.Error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ConfirmarPagoManual marca el pago como confirmado sin modificar estado ni fecha_vencimiento.
|
||||||
|
// Útil cuando el admin ya ajustó manualmente el contrato y solo necesita limpiar el enlace pendiente.
|
||||||
|
func ConfirmarPagoManual(contratoID uint) (bool, error) {
|
||||||
|
now := time.Now()
|
||||||
|
result := app.Http.Database.DB.Model(&Contrato{}).
|
||||||
|
Where("id = ? AND pago_confirmado = false", contratoID).
|
||||||
|
Updates(map[string]interface{}{
|
||||||
|
"pago_confirmado": true,
|
||||||
|
"fecha_pago": now,
|
||||||
|
"enlace_pago": "",
|
||||||
|
"enlace_pago_link_id": "",
|
||||||
|
})
|
||||||
|
return result.RowsAffected > 0, result.Error
|
||||||
|
}
|
||||||
|
|
||||||
// GetEstadoPago devuelve si el contrato tiene pago confirmado (para polling desde el frontend).
|
// GetEstadoPago devuelve si el contrato tiene pago confirmado (para polling desde el frontend).
|
||||||
func GetEstadoPago(contratoID uint) (bool, *time.Time, error) {
|
func GetEstadoPago(contratoID uint) (bool, *time.Time, error) {
|
||||||
var c Contrato
|
var c Contrato
|
||||||
|
|||||||
@@ -444,13 +444,15 @@ func VerificarPagoBold(c *fiber.Ctx) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// MarcarPagoManual confirma manualmente el pago de un contrato sin pasar por Bold.
|
// MarcarPagoManual confirma manualmente el pago de un contrato sin pasar por Bold.
|
||||||
|
// Solo limpia el enlace y marca pago_confirmado; NO toca estado ni fecha_vencimiento
|
||||||
|
// porque el admin puede haberlos ajustado manualmente antes de confirmar el pago.
|
||||||
// POST /api/contratos/:id/marcar-pagado
|
// POST /api/contratos/:id/marcar-pagado
|
||||||
func MarcarPagoManual(c *fiber.Ctx) error {
|
func MarcarPagoManual(c *fiber.Ctx) error {
|
||||||
id, err := strconv.ParseUint(c.Params("id"), 10, 64)
|
id, err := strconv.ParseUint(c.Params("id"), 10, 64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.Status(400).JSON(fiber.Map{"error": "ID inválido"})
|
return c.Status(400).JSON(fiber.Map{"error": "ID inválido"})
|
||||||
}
|
}
|
||||||
ok, err := models.MarcarContratoPagado(uint(id))
|
ok, err := models.ConfirmarPagoManual(uint(id))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user