A pesar de la corrección anterior, el reporte sigue siendo inválido y, únicamente en el resumen de gasto por actividades, se muestran valores distintos para el total respecto a la suma de cada una de las actividades.
El total indicado es "19.857,33", pero sumando las actividades el valor debería ser "17.788,27".
Para el cálculo de las tablas se utiliza el método VGasto.agrupa_sum_actividad . Poniendo trazas en el cálculo de totales se puede ver que la consulta al scope :
******* Columnas es: [{"id"=>"1", "nombre"=>"Presupuesto"}, {"id"=>"2", "nombre"=>"Gastos"}]
******* Filas es: [{"id"=>29381, "nombre"=>"AG01 Pago de comisiones bancarias"}, {"id"=>29872, "nombre"=>"AG02 Imprevistos"}, {"id"=>29377, "nombre"=>"OE1.R01.A01 Capacitación e intercambios previos a la jornada electoral y observación de la jornada electoral."}, {"id"=>29378, "nombre"=>"OE1.R01.A02 Observación de la jornada electoral."}, {"id"=>29379, "nombre"=>"OE1.R01.A03 Sistematización de la experiencia."}, {"id"=>29380, "nombre"=>"OE2.R01.A01 Elaboración y validación de estrategias de contenidos y de mediación para estudiantes."}]
***** {"columna_id"=>2, "importe"=>-0.138394648e1, "fila_id"=>nil}
***** {"columna_id"=>2, "importe"=>0.207044013221e4, "fila_id"=>1}
***** {"columna_id"=>2, "importe"=>0.24133308425e3, "fila_id"=>29377}
***** {"columna_id"=>2, "importe"=>0.201501730164e4, "fila_id"=>29378}
***** {"columna_id"=>2, "importe"=>0.238269161487e4, "fila_id"=>29379}
***** {"columna_id"=>2, "importe"=>0.1314304094827e5, "fila_id"=>29380}
***** {"columna_id"=>2, "importe"=>0.618921099e1, "fila_id"=>29381}
Hay dos datos que no deberían incluirse (al no haber ningún dato con ese valor de fila), correspondientes a fila_id=nil y fila_id=1 y que son los que provocan la desviación.
La consulta que se realiza y la iteración de los resultados es la siguiente:
[2024-09-19 11:14:50][DEBUG] (531598) VGasto Load (569.1ms) SELECT actividad_id as fila_id, sum(importe_moneda_base) as importe FROM `v_gasto` WHERE `v_gasto`.`fecha` BETWEEN '2021-09-01' AND '2022-12-21' AND `v_gasto`.`proyecto_id` = 3555 AND `v_gasto`.`financiador_id` = 29 GROUP BY proyecto_id, actividad_id
***** fila_id: | importe: -1.38394648
***** fila_id: 1 | importe: 2070.44013221
***** fila_id: 29377 | importe: 241.33308425
***** fila_id: 29378 | importe: 2015.01730164
***** fila_id: 29379 | importe: 2382.69161487
***** fila_id: 29380 | importe: 13143.04094827
***** fila_id: 29381 | importe: 6.18921099
Este problema tiene que ver con algunos registros de GastoXActividad que están asignados a actividades inexistentes por lo que aunque la suma total contempla estos repartos, la suma del detalle de cada actividad es menor.