fix: marcar pagada en cuentas por pagar sobreescribía datos con ceros

UpdateCuentaPagar actualizaba TODAS las columnas incluyendo entidad_id=0,
valor=0, descripcion='' cuando solo se enviaba estado+fecha_pago.
Se agrega MarcarCuentaPagarPagada que solo toca estado y fecha_pago,
con su endpoint POST /cuentas-pagar/:id/pagar.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-09 20:25:39 -05:00
co-authored by Claude Sonnet 4.6
parent 2ee5e2ea83
commit daf0b2c2a1
4 changed files with 32 additions and 1 deletions
+7
View File
@@ -522,6 +522,13 @@ func UpdateCuentaPagar(cp *CuentaPagar) error {
}).Error
}
func MarcarCuentaPagarPagada(id uint, fechaPago time.Time) error {
return app.Http.Database.DB.Model(&CuentaPagar{}).Where("id = ?", id).Updates(map[string]interface{}{
"estado": "pagado",
"fecha_pago": fechaPago,
}).Error
}
func DeleteCuentaPagar(id uint) error {
return app.Http.Database.DB.Delete(&CuentaPagar{}, id).Error
}
@@ -174,7 +174,7 @@ function pagarApp() {
async doPagar(){
this.saving=true;
try {
await axios.put(`/app/contabilidad/cuentas-pagar/${this.pagarId}`, {estado:'pagado',fecha_pago:this.pagoFecha});
await axios.post(`/app/contabilidad/cuentas-pagar/${this.pagarId}/pagar`, {fecha_pago:this.pagoFecha});
this.showPagarModal=false; await this.load();
} catch(e){ this.error=e.response?.data?.error||'Error'; }
finally{ this.saving=false; }
@@ -591,6 +591,29 @@ func UpdateCuentaPagar(c *fiber.Ctx) error {
return c.JSON(fiber.Map{"ok": true})
}
func MarcarCuentaPagarPagada(c *fiber.Ctx) error {
id, err := strconv.ParseUint(c.Params("id"), 10, 32)
if err != nil {
return c.Status(400).JSON(fiber.Map{"error": "ID inválido"})
}
var req struct {
FechaPago string `json:"fecha_pago"`
}
if err := c.BodyParser(&req); err != nil {
return c.Status(400).JSON(fiber.Map{"error": err.Error()})
}
fecha := time.Now()
if req.FechaPago != "" {
if parsed, err := time.Parse("2006-01-02", req.FechaPago); err == nil {
fecha = parsed
}
}
if err := models.MarcarCuentaPagarPagada(uint(id), fecha); err != nil {
return c.Status(500).JSON(fiber.Map{"error": err.Error()})
}
return c.JSON(fiber.Map{"ok": true})
}
func DeleteCuentaPagar(c *fiber.Ctx) error {
id, err := strconv.ParseUint(c.Params("id"), 10, 32)
if err != nil {
+1
View File
@@ -517,6 +517,7 @@ protected.Get("/contabilidad/consolidados", controllers.ContabilidadListConsolid
protected.Get("/contabilidad/cuentas-pagar/list", controllers.GetCuentasPagar)
protected.Post("/contabilidad/cuentas-pagar", controllers.CreateCuentaPagar)
protected.Put("/contabilidad/cuentas-pagar/:id", controllers.UpdateCuentaPagar)
protected.Post("/contabilidad/cuentas-pagar/:id/pagar", controllers.MarcarCuentaPagarPagada)
protected.Delete("/contabilidad/cuentas-pagar/:id", controllers.DeleteCuentaPagar)
// ─── WebSMS (LabsMobile) ───────────────────────────────────────────────────