Hola gente. Estamos en proceso de dejar el liquidador de Escritorio para comenzar con el liquidador web. Estamos en la versión .3.5.0
En algunas pruebas pasaba que liquidamos a los 4000 agentes (en 2 minutos) y al tocar el botón “Resultado” se queda colgado el reporte ese.
Logré llegar a la consulta que ejecuta ese botón y es la siguiente
SELECT dh01.nro_legaj,
dh01.desc_appat || ', ' || dh01.desc_nombr AS agente,
temp_total_liqui.nro_liqui,
COALESCE(temp_total_liqui.rem_conap, 0) AS rem_conap,
COALESCE(temp_total_liqui.rem_sinap, 0) AS rem_sinap,
COALESCE(temp_total_liqui.rem_otras, 0) AS rem_otras,
COALESCE(temp_total_liqui.sal_familiar, 0) AS sal_familiar,
COALESCE(temp_total_liqui.descuentos, 0) AS descuentos,
COALESCE(temp_total_liqui.ap_patronales, 0) AS ap_patronales,
(COALESCE(rem_conap, 0) + COALESCE(rem_sinap, 0) + COALESCE(rem_otras, 0)) AS haberes,
(COALESCE(rem_conap, 0) + COALESCE(rem_sinap, 0) + COALESCE(rem_otras, 0) + COALESCE(sal_familiar, 0) - COALESCE(descuentos, 0)) AS importe_neto,
(COALESCE(rem_conap, 0) + COALESCE(rem_sinap, 0) + COALESCE(rem_otras, 0) + COALESCE(sal_familiar, 0) + COALESCE(ap_patronales, 0)) AS costo_total
FROM
mapuche.dh01 LEFT OUTER JOIN (
SELECT
nro_liqui,
dh01.nro_legaj,
(SELECT (SUM(impp_conce))::numeric(10,2) AS rem FROM mapuche.dh01 dh01_2 JOIN mapuche.dh21 ON(dh01_2.nro_legaj = dh21.nro_legaj AND dh21.nro_liqui = '510') WHERE codn_conce > 0 AND nro_orimp <> 0 AND tipo_conce = 'C' AND dh01.nro_legaj = dh01_2.nro_legaj) AS rem_conap,
(SELECT (SUM(impp_conce))::numeric(10,2) AS rem FROM mapuche.dh01 dh01_2 JOIN mapuche.dh21 ON(dh01_2.nro_legaj = dh21.nro_legaj AND dh21.nro_liqui = '510') WHERE codn_conce > 0 AND nro_orimp <> 0 AND tipo_conce = 'S' AND dh01.nro_legaj = dh01_2.nro_legaj) AS rem_sinap,
(SELECT (SUM(impp_conce))::numeric(10,2) AS rem FROM mapuche.dh01 dh01_2 JOIN mapuche.dh21 ON(dh01_2.nro_legaj = dh21.nro_legaj AND dh21.nro_liqui = '510') WHERE codn_conce > 0 AND nro_orimp <> 0 AND tipo_conce = 'O' AND dh01.nro_legaj = dh01_2.nro_legaj) AS rem_otras,
(SELECT (SUM(impp_conce))::numeric(10,2) AS rem FROM mapuche.dh01 dh01_2 JOIN mapuche.dh21 ON(dh01_2.nro_legaj = dh21.nro_legaj AND dh21.nro_liqui = '510') WHERE codn_conce > 0 AND nro_orimp <> 0 AND tipo_conce = 'F' AND dh01.nro_legaj = dh01_2.nro_legaj) AS sal_familiar,
(SELECT (SUM(impp_conce))::numeric(10,2) AS rem FROM mapuche.dh01 dh01_2 JOIN mapuche.dh21 ON(dh01_2.nro_legaj = dh21.nro_legaj AND dh21.nro_liqui = '510') WHERE codn_conce > 0 AND nro_orimp <> 0 AND tipo_conce = 'D' AND dh01.nro_legaj = dh01_2.nro_legaj) AS descuentos,
(SELECT (SUM(impp_conce))::numeric(10,2) AS rem FROM mapuche.dh01 dh01_2 JOIN mapuche.dh21 ON(dh01_2.nro_legaj = dh21.nro_legaj AND dh21.nro_liqui = '510') WHERE codn_conce > 0 AND nro_orimp <> 0 AND tipo_conce = 'A' AND dh01.nro_legaj = dh01_2.nro_legaj) AS ap_patronales
FROM
mapuche.dh01 JOIN mapuche.dh21 ON (dh01.nro_legaj = dh21.nro_legaj)
WHERE
(codn_conce > 0) AND (nro_orimp <> 0) AND
(dh01.nro_legaj IN (SELECT par_solicitud_elementos.id_elemento FROM mapuche.par_solicitud_elementos WHERE par_solicitud_elementos.id_solicitud = 3250)) AND
(nro_liqui = '510') AND
(dh01.tipo_estad != 'P' OR dh01.tipo_estad IS NULL)
GROUP BY 1,2
ORDER BY 1,2
) AS temp_total_liqui ON (dh01.nro_legaj = temp_total_liqui.nro_legaj)
WHERE
(COALESCE(rem_conap, 0) + COALESCE(rem_sinap, 0) + COALESCE(rem_otras, 0) + COALESCE(sal_familiar, 0) - COALESCE(descuentos, 0)) > 0 AND
(dh01.nro_legaj IN (SELECT par_solicitud_elementos.id_elemento FROM mapuche.par_solicitud_elementos
WHERE par_solicitud_elementos.id_solicitud = 3250))
AND (dh01.tipo_estad != 'P' OR dh01.tipo_estad IS NULL)
ORDER BY
agente,nro_legaj
LIMIT 10 OFFSET 0
La cuestión es que ejecutando esa consulta se queda colgado PgAdmin también por lo que supongo es un error de datos.
Haciendo pruebas llegué a que comentando la última aparición de la línea “AND (dh01.tipo_estad != ‘P’ OR dh01.tipo_estad IS NULL)” la consulta se ejecuta.
Es un error muy dificil de reproducir ya que apareció hace unas semanas y hoy nuevamente cuando hacíamos pruebas de liquidación. Hoy incluso después de mirar logs, ejecutar la consulta por partes y hacer un recorrido de toda la tabla dh01 la consulta se terminó ejecutando y por web también anduvo bien pero nos hizo perder un par de horas de pruebas.
No se por donde empezar a mirar