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.
!{width:500px;}clipboard-202409191040-0wdgd.png!
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.