Buenos Dias Foro,
Estoy en busca de ejemplo de uso de funciones de postgresql que retorne un conjunto de resultados.
Veo que algunos usan Typeof y otro con refcursor pero tiene que hace un fetch all
Pero como lo uso desde visual para poder retornar el conjunto de datos al menos con refcursor, para no tener que definir un tipo de vista, por cada función que retorna resultados.
Saludos.
Yvan Carranza
285-7627
Hola Yvan.Trabajo con Sql Server, pienso que con PostgreSql el llamado a funciones no va a ser muy diferente.Cambia la forma de llamar a tu función.Private lData1lData1 = 8.998lcSql = [funcinserta ?lData1]--SQLEXEC(lih, lcSql)Saludos.Mauricio
Hola Yvan.Alguien en el grupo trabaja VFP-Postgres, seguro podrán aportarte la solución--Me gustaría probar Postgres, existen buenos comentarios, quizá en estos días pueda hacerlo
Saludos.Mauricio
Buenas tardes amigos, necesito de su pronta ayuda a ver si me pueden orientar en la resolucion del siguiente caso, a continuacion les voy a colocar una funcion (procedimiento almacenado) que se realizo en Postgresql, y en donde lo que obtengo de la misma es un reporte que sale por un cursor y este se almacena en una tabla temporal y no encuentro manera de crear una vista u otra tabla para ingresar esos resultados que se muestran, para luego trabajar con ellos, ejemplo como hacer un (select * into prueba from tbl_reporte), les dejo la creacion de la funcion.
CREATE OR REPLACE FUNCTION reporte(refcursor, pcparam text, pntipo integer, pccod_usu character)
RETURNS SETOF refcursor AS
$BODY$
DECLARE
lcSQL text;
txtUAD text;
txtUAD2 text;
txtUE text;
txtUEL text;
txtDP text;
txtPOA text;
txtPUC text;
txtFF text;
cboEjercicio text;
cboEjercicio2 text;
cboMes integer;
cboMes2 integer;
txtINST text;
dFECHA text;
cboPre integer;
cuR1 RECORD;
txtCatDP integer;
txtCatPUCG integer;
lcFormatoDP text;
lcFormatoPUCG text;
chkAcum Integer;
txtCOD_PRE text;
chkNC1 integer;
txtCOD_PRE2 text;
chkNC2 integer;
txtMonto_O text;
txtDisminu text;
txtAumentos text;
txtPresu_Actu text;
txtPrecomp text;
txtCompro text;
txtCausados text;
txtPagados text;
txtDeuda text;
txtDispon text;
txtCongela text;
txtCompNoCau text;
txtNroCompAut text;
txtNroCompMan text;
cboCE integer;
cboGD integer;
lcExp text;
chkVALIDADO integer;
txtCI_RIF text;
BEGIN
cboEjercicio = RTRIM(VRV(pcParam,'cboEjercicio'));
cboEjercicio2 = RTRIM(VRV(pcParam,'cboEjercicio2'));
cboMes = VRV(pcParam,'cboMES');
cboMes2 = VRV(pcParam,'cboMES2');
txtINST = quote_literal(VRV(pcParam,'txtINST'));
txtUAD = quote_literal(VRV(pcParam,'txtUAD'));
txtUAD2 = quote_literal(VRV(pcParam,'txtUAD2'));
txtUEL = quote_literal(VRV(pcParam,'txtUEL'));
txtUE = quote_literal(VRV(pcParam,'TXTUE'));
txtDP = quote_literal(VRV(pcParam,'TXTDP'));
txtPOA = quote_literal(VRV(pcParam,'txtPOA'));
txtPUC = quote_literal(VRV(pcParam,'txtPUC'));
txtFF = quote_literal(VRV(pcParam,'TXTFF'));
txtNroCompAut = VRV(pcParam,'txtNroCompAut');
txtNroCompMan = VRV(pcParam,'txtNroCompMan');
cboPre = VRV(pcParam,'cboPre');
txtCatDP = SUBSTRING(VRV(pcParam,'txtCatDP'),9);
txtCatPUCG = SUBSTRING(VRV(pcParam,'txtCatPUCG'),9);
lcFormatoDP = QUOTE_LITERAL(TRIM(FORMATO_TE(cboEjercicio,'DP'))||'.');
lcFormatoPUCG = QUOTE_LITERAL(TRIM(FORMATO_TE(cboEjercicio,'PUCG'))||'.');
chkAcum = VRV(pcParam,'chkAcum');
txtCOD_PRE=VRV(pcParam,'TXTCOD_PRE');
chkNC1=VRV(pcParam,'CHKNC1');
txtCOD_PRE2=VRV(pcParam,'TXTCOD_PRE2');
chkNC2=VRV(pcParam,'CHKNC2');
txtMonto_O=VRV(pcParam,'txtMonto_O');
txtDisminu=VRV(pcParam,'txtDisminu');
txtAumentos=VRV(pcParam,'txtAumentos');
txtPresu_Actu=VRV(pcParam,'txtPresu_Actu');
txtPrecomp=VRV(pcParam,'txtPrecomp');
txtCompro=VRV(pcParam,'txtCompro');
txtCausados=VRV(pcParam,'txtCausados');
txtPagados=VRV(pcParam,'txtPagados');
txtDeuda=VRV(pcParam,'txtDeuda');
txtDispon=VRV(pcParam,'txtDispon');
txtCongela=VRV(pcParam,'txtCongela');
txtCompNoCau=VRV(pcParam,'txtCompNoCau');
txtCI_RIF=VRV(pcParam,'txtCI_RIF');
cboCE=VRV(pcParam,'cboCE');
cboGD=VRV(pcParam,'cboGD');
chkVALIDADO=VRV(pcParam,'chkVALIDADO');
IF (cboPre>2 and (NOT cboCE ISNULL OR NOT cboCE ISNULL)) Then
RAISE EXCEPTION ' %','Filtrar por Clasificacion Economica o Destino del Gasto esta solo permitido para las presentaciones 1 y 2';
END IF;
SELECT INTO cuR1 CODIGOINST,VEROTRINST,VEROTRUAD,VEROTRUAD2,VEROTRUEL,ID_UAD,ID_UA FROM mausuario WHERE codigousu=pcCod_usu;
IF txtINST ISNULL and cuR1.VEROTRINST=0 Then
RAISE EXCEPTION ' %','Falta Indicar la Institucion';
END IF;
IF txtUAD ISNULL and cuR1.VEROTRUAD=0 Then
RAISE EXCEPTION ' %','Falta Indicar el Organo Desconcentrado';
END IF;
IF txtUAD2 ISNULL and cuR1.VEROTRUAD2=0 Then
RAISE EXCEPTION ' %','Falta Indicar el Organo Desconcentrado 2do Nivel';
END IF;
IF txtUEL ISNULL and cuR1.VEROTRUEL=0 Then
RAISE EXCEPTION ' %','Falta Indicar la Unidad Ejecutora Local';
END IF;
IF cboMes ISNULL Then
RAISE EXCEPTION ' %','Falta indicar el mes desde';
END IF;
IF cboMes2 ISNULL Then
RAISE EXCEPTION ' %','Falta indicar el mes hasta';
END IF;
IF pnTipo = 1 Then -- Retorna Nombre del Reporte
IF cboPre=1 THEN lcSQL='SELECT 1 as ej_p_cierre_egresos FROM MATREE WHERE UNIQUE_ID < 0'; -- Cierre Presupuestario por Producto POA
ELSIF cboPre=2 THEN lcSQL='SELECT 1 as ej_p_cierre_egresos2 FROM MATREE WHERE UNIQUE_ID < 0'; -- Cierre Presupuestario por Crédito
ELSIF cboPre=3 THEN lcSQL='SELECT 1 as ej_p_cierre_egresos4 FROM MATREE WHERE UNIQUE_ID < 0'; -- Cierre Presupuestario por Crédito AGRUPADO POR DP Y PUC
ELSIF cboPre=4 THEN lcSQL='SELECT 1 as ej_p_cierre_egresos_mayor_ejecucion FROM MATREE WHERE UNIQUE_ID < 0'; -- Mayor de Ejecución Presupuestaria
ELSIF cboPre=5 THEN lcSQL='SELECT 1 as ej_p_cierre_egresos5y6 FROM MATREE WHERE UNIQUE_ID < 0'; -- Ejecución Presupuesto de Gasto Agrupado por CP
ELSIF cboPre=6 THEN lcSQL='SELECT 1 as ej_p_cierre_egresos5y6 FROM MATREE WHERE UNIQUE_ID < 0'; -- Ejecución Presupuesto de Gasto Agrupado por DP
ELSIF cboPre=7 THEN lcSQL='SELECT 1 as ej_p_cierre_egresos3 FROM MATREE WHERE UNIQUE_ID < 0'; -- Ejecución Presupuesto de Gasto Agrupado por CP con POA
ELSE RAISE EXCEPTION ' %','Opción de Presentación No Definida';
END IF;
END IF;
IF pnTipo=2 Then -- Retorna el Cursor
IF cboPre=1 Then -- Cierre Presupuestario por Producto POA
lcSQL='SELECT * FROM(SELECT '||cboMes2||' as Mes,cuR.EJERCICIO,cuR.ID_INST,cuR.ID_UEL,cuR.ID_DP,cuR.ID_POA,cuR.ID_UAD,cuR.ID_PUC,cuR.ID_FF,cuR.COD_PRE,cuR.MONTO_O,cuR.PARTIDA,cuR.TEXTO_DP,cuR.TEXTO_INST,cuR.TEXTO_POA,cuR.COD_PRE_TEXTO,cuR.FF_TEXTO,cuR.TEXTO_UNIDAD_UE,cuR.TEXTO_UNIDAD_UR,';
IF NOT chkAcum ISNULL Then
lcSQL=lcSQL||'cuR.AUMENTO_T as AUMENTO,cuR.AUMENTO_T,cuR.DISMINU_T as DISMINU,cuR.DISMINU_T,(cuR.precomp_t+cuR.precomp_t2) as precomp,(cuR.precomp_t+cuR.precomp_t2) as precomp_t,(cuR.Compro_T+cuR.Compro_T2) as Compro,(cuR.CAUSADO_T+cuR.CAUSADO_T2) as CAUSADO,(cuR.PAGADO_T+cuR.PAGADO_T2) as PAGADO,';
lcSQL=lcSQL||'(cuR.Compro_T+cuR.Compro_T2) as Compro_T,(cuR.CAUSADO_T+cuR.CAUSADO_T2) as CAUSADO_T,(cuR.PAGADO_T+cuR.PAGADO_T2) as PAGADO_T,';
ELSE
lcSQL=lcSQL||'cuR.AUMENTO,cuR.AUMENTO_T,cuR.DISMINU,cuR.DISMINU_T,(cuR.precomp+cuR.precomp2) as precomp,(cuR.precomp_t+cuR.precomp_t2) as precomp_t,(cuR.Compro+cuR.Compro2) as Compro,(cuR.CAUSADO+cuR.CAUSADO2) as CAUSADO,(cuR.PAGADO+cuR.PAGADO2) as PAGADO,';
lcSQL=lcSQL||'(cuR.Compro_T+cuR.Compro_T2) as Compro_T,(cuR.CAUSADO_T+cuR.CAUSADO_T2) as CAUSADO_T,(cuR.PAGADO_T+cuR.PAGADO_T2) as PAGADO_T,';
END IF;
lcSQL=lcSQL||'(cuR.congela+cuR.Congela2) as CONGELA ';
lcSQL=lcSQL||'FROM (SELECT a.*,SUBSTRING(b.CODIGO,1,4) as PARTIDA,d.TEXT as TEXTO_DP,e.ENTIDAD AS TEXTO_INST,f.ENUNCIADO as TEXTO_POA,b.TEXT as COD_PRE_TEXTO,g.TEXT as FF_TEXTO,UE(a.ID_DP,0) as TEXTO_UNIDAD_UE,';
lcSQL=lcSQL||'UR(a.ID_DP,0) AS TEXTO_UNIDAD_UR,';
lcSQL=lcSQL||'(case when (aum.AUMENTO) is null then 0 else (aum.AUMENTO) END ) AS AUMENTO,';
lcSQL=lcSQL||'(case when (aumt.AUMENTO_T) is null then 0 else (aumt.AUMENTO_T) END ) AS AUMENTO_T,';
lcSQL=lcSQL||'(case when (dis.DISMINU) is null then 0 else (dis.DISMINU) END ) AS DISMINU,';
lcSQL=lcSQL||'(case when (dist.DISMINU_T) is null then 0 else (dist.DISMINU_T) END ) AS DISMINU_T,';
lcSQL=lcSQL||'(case when (crrd.precomp) is null then 0 else (crrd.precomp) END ) AS precomp,';
lcSQL=lcSQL||'(case when (cuMOM1.precomp) is null then 0 else (cuMOM1.precomp) END) AS precomp2,';
lcSQL=lcSQL||'(case when (crrd.Compro) is null then 0 else (crrd.Compro) END) AS Compro,';
lcSQL=lcSQL||'(case when (cuMOM2.COMPRO) is null then 0 else (cuMOM2.COMPRO) END) AS Compro2,';
lcSQL=lcSQL||'(case when (crrd.CAUSADO) is null then 0 else (crrd.CAUSADO) END) AS CAUSADO,';
lcSQL=lcSQL||'(case when (cuMOM3.CAUSADO) is null then 0 else (cuMOM3.CAUSADO) END) AS CAUSADO2,';
lcSQL=lcSQL||'(case when (crrd.PAGADO) is null then 0 else (crrd.PAGADO) END) AS PAGADO,';
lcSQL=lcSQL||'(case when (cuMOM4.PAGADO) is null then 0 else (cuMOM4.PAGADO) END) AS PAGADO2,';
lcSQL=lcSQL||'(case when (crrdt.precomp_T) is null then 0 else (crrdt.precomp_T) END ) AS precomp_T,';
lcSQL=lcSQL||'(case when (cuMOM1T.precomp) is null then 0 else (cuMOM1T.precomp) END) AS precomp_T2,';
lcSQL=lcSQL||'(case when (crrdt.Compro_T) is null then 0 else (crrdt.Compro_T) END) AS Compro_T,';
lcSQL=lcSQL||'(case when (cuMOM2T.COMPRO) is null then 0 else (cuMOM2T.COMPRO) END) AS Compro_T2,';
lcSQL=lcSQL||'(case when (crrdt.CAUSADO_T) is null then 0 else (crrdt.CAUSADO_T) END) AS CAUSADO_T,';
lcSQL=lcSQL||'(case when (cuMOM3T.CAUSADO) is null then 0 else (cuMOM3T.CAUSADO) END) AS CAUSADO_T2,';
lcSQL=lcSQL||'(case when (crrdt.PAGADO_T) is null then 0 else (crrdt.PAGADO_T) END) AS PAGADO_T,';
lcSQL=lcSQL||'(case when (cuMOM4T.PAGADO) is null then 0 else (cuMOM4T.PAGADO) END) AS PAGADO_T2,';
lcSQL=lcSQL||'(case when (cg1.monto) is null then 0 else (cg1.monto) END ) AS CONGELA,';
lcSQL=lcSQL||'(case when (cg2.monto) is null then 0 else (cg2.monto) END ) AS CONGELA2 ';
lcSQL=lcSQL||'FROM (SELECT a.EJERCICIO,a.ID_INST,a.ID_UEL,a.ID_DP,a.ID_POA,a.ID_UAD,a.ID_PUC,a.ID_FF,a.COD_PRE,a.ESTIMADO as MONTO_O ';
lcSQL=lcSQL||'FROM PFEGRESO_D a ';
lcSQL=lcSQL||'INNER JOIN PLPOAEJE b ON a.EJERCICIO=b.EJERCICIO and a.EJERCICIO2=b.EJERCICIO2 and a.ID_POA=b.ID_POA ';
lcSQL=lcSQL||'WHERE RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO)||' AND a.ID_INST='||txtINST;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtUE ISNULL Then lcSQL=lcSQL||' AND b.ID_UE= '||txtUE; End if;
If NOT txtDP ISNULL Then lcSQL=lcSQL||' AND a.ID_DP= '||txtDP; End if;
If NOT txtPUC ISNULL Then lcSQL=lcSQL||' AND a.ID_PUC='||txtPUC; End if;
If NOT txtFF ISNULL Then lcSQL=lcSQL||' AND a.ID_FF= '||txtFF; End if;
If NOT txtUAD ISNULL Then lcSQL=lcSQL||' AND a.ID_UAD='||txtUAD; End if;
If NOT txtUAD2 ISNULL Then lcSQL=lcSQL||' AND a.ID_UAD2='||txtUAD2; End if;
If NOT txtUEL ISNULL Then lcSQL=lcSQL||' AND a.ID_UEL='||txtUEL; End if;
If NOT txtPOA ISNULL Then lcSQL=lcSQL||' AND a.ID_POA='||txtPOA; End if;
If NOT cboCE ISNULL Then lcSQL=lcSQL||' AND a.CE='||cboCE; End if;
If NOT cboGD ISNULL Then lcSQL=lcSQL||' AND a.GD='||cboGD; End if;
If NOT txtCod_Pre ISNULL Then
lcSQL=lcSQL||' AND ';
If NOT chkNC1 ISNULL Then
lcSQL=lcSQL || ' NOT ';
End if;
lcSQL=lcSQL||' a.COD_PRE LIKE '||quote_literal(RTRIM(txtCod_Pre));
End if;
If NOT txtCod_Pre2 ISNULL Then
lcSQL=lcSQL||' AND ';
If NOT chkNC2 IS NULL Then
lcSQL=lcSQL || ' NOT ';
End if;
lcSQL=lcSQL||' a.COD_PRE LIKE '||quote_literal(RTRIM(txtCod_Pre2));
End if;
lcSQL=lcSQL||' ) as a ';
lcSQL=lcSQL||'INNER JOIN MATREE b ON a.ID_PUC = b.ID ';
lcSQL=lcSQL||'INNER JOIN MATREE d ON a.ID_DP=d.ID ';
lcSQL=lcSQL||'INNER JOIN mainstituc e ON a.ID_INST=e.CODIGO ';
lcSQL=lcSQL||'INNER JOIN PLPRODUCTO f ON a.ID_POA=f.producto ';
lcSQL=lcSQL||'INNER JOIN MATREE g ON a.ID_FF=g.ID ';
-- MODIFICACIONES
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(MONTO) as AUMENTO,ID_POA,ID_PUC,ID_FF FROM PFEGRESOAU WHERE TIPO=1 and MES>='||cboMes||' and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY ID_POA,ID_PUC,ID_FF ) AS aum ON a.ID_PUC=aum.ID_PUC and a.ID_POA=aum.ID_POA and a.ID_FF=aum.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(MONTO) as DISMINU,ID_POA,ID_PUC,ID_FF FROM PFEGRESOAU WHERE TIPO=2 and MES>='||cboMes||' and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY ID_POA,ID_PUC,ID_FF ) AS dis ON a.ID_PUC=dis.ID_PUC and a.ID_POA=dis.ID_POA and a.ID_FF=dis.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(MONTO) as AUMENTO_T,ID_POA,ID_PUC,ID_FF FROM PFEGRESOAU WHERE TIPO=1 and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY ID_POA,ID_PUC,ID_FF ) as aumt ON a.ID_PUC=aumt.ID_PUC and a.ID_POA=aumt.ID_POA and a.ID_FF=aumt.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(MONTO) as DISMINU_T,ID_POA,ID_PUC,ID_FF FROM PFEGRESOAU WHERE TIPO=2 and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY ID_POA,ID_PUC,ID_FF ) AS dist ON a.ID_PUC=dist.ID_PUC and a.ID_POA=dist.ID_POA and a.ID_FF=dist.ID_FF ';
-- CIERRE MANUAL
-- 26/03/2012 coloque el round al campo compro , pararesolver problema puntual , reornaba un monto donde deberia ser cero
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(PRECOM) as precomp,SUM(COMPRO) as COMPRO,SUM(CAUSADO) as CAUSADO,SUM(PAGADO) as PAGADO,ID_POA,ID_PUC,ID_FF FROM PFCIERREDD WHERE MES>='||cboMes||' and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If chkVALIDADO ISNULL Then lcSQL=lcSQL||' and VALIDADO=1 '; End if;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompMan ISNULL Then lcSQL=lcSQL||' and ( aut=0 and NUM_COMP='||quote_literal(txtNroCompMan)||') '; End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and ( aut=1 and NUM_COMP='||quote_literal(txtNroCompAut)||') '; End if;
lcSQL=lcSQL||' GROUP BY ID_POA,ID_PUC,ID_FF ) AS crrd ON a.ID_PUC=crrd.ID_PUC and a.ID_POA=crrd.ID_POA and a.ID_FF=crrd.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(PRECOM) as precomp_T,SUM(COMPRO) as COMPRO_T,SUM(CAUSADO) as CAUSADO_T,SUM(PAGADO) as PAGADO_T,ID_POA,ID_PUC,ID_FF FROM PFCIERREDD WHERE MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If chkVALIDADO ISNULL Then lcSQL=lcSQL||' and VALIDADO=1 '; End if;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompMan ISNULL Then lcSQL=lcSQL||' and ( aut=0 and NUM_COMP='||quote_literal(txtNroCompMan)||') '; End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and ( aut=1 and NUM_COMP='||quote_literal(txtNroCompAut)||') '; End if;
lcSQL=lcSQL||' GROUP BY ID_POA,ID_PUC,ID_FF ) AS crrdt ON a.ID_PUC=crrdt.ID_PUC and a.ID_POA=crrdt.ID_POA and a.ID_FF=crrdt.ID_FF ';
-- MOMENTOS PRESU
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as precomp,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=1 and a.numerop=a.num_comp and a.MES>='||cboMes||' and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM1 ON a.ID_PUC=cuMOM1.ID_PUC and a.ID_POA=cuMOM1.ID_POA and a.ID_FF=cuMOM1.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Compro,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=2 and a.MES>='||cboMes||' and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM2 ON a.ID_PUC=cuMOM2.ID_PUC and a.ID_POA=cuMOM2.ID_POA and a.ID_FF=cuMOM2.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Causado,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=3 and a.MES>='||cboMes||' and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM3 ON a.ID_PUC=cuMOM3.ID_PUC and a.ID_POA=cuMOM3.ID_POA and a.ID_FF=cuMOM3.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Pagado,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=4 and a.MES>='||cboMes||' and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM4 ON a.ID_PUC=cuMOM4.ID_PUC and a.ID_POA=cuMOM4.ID_POA and a.ID_FF=cuMOM4.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as precomp,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=1 and a.numerop=a.num_comp and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM1T ON a.ID_PUC=cuMOM1T.ID_PUC and a.ID_POA=cuMOM1T.ID_POA and a.ID_FF=cuMOM1T.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Compro,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=2 and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM2T ON a.ID_PUC=cuMOM2T.ID_PUC and a.ID_POA=cuMOM2T.ID_POA and a.ID_FF=cuMOM2T.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Causado,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=3 and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM3T ON a.ID_PUC=cuMOM3T.ID_PUC and a.ID_POA=cuMOM3T.ID_POA and a.ID_FF=cuMOM3T.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Pagado,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=4 and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM4T ON a.ID_PUC=cuMOM4T.ID_PUC and a.ID_POA=cuMOM4T.ID_POA and a.ID_FF=cuMOM4T.ID_FF ';
-- CONGELADO
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Monto,b.ID_POA,b.ID_PUC,b.ID_FF FROM pf_sol_tra a INNER JOIN pfdetrace b ON a.numero=b.numero WHERE RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(b.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' and EXTRACT('||$x$'month'$x$||' from a.fecha) <='||cboMes2||' and a.STATUS=2 GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) as CG1 ON a.ID_PUC=cg1.ID_PUC and a.ID_POA=cg1.ID_POA and a.ID_FF=cg1.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Monto,a.ID_FF,b.ID_POA,b.ID_PUC FROM pfinsub a INNER JOIN pfinsubc b ON a.numero=b.numero WHERE RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' and EXTRACT('||$x$'month'$x$||' from a.fecha) <='||cboMes2||' and a.STATUS=2 GROUP BY a.ID_FF,b.ID_POA,b.ID_PUC) as CG2 ON a.ID_PUC=cg2.ID_PUC and a.ID_POA=cg2.ID_POA and a.ID_FF=cg2.ID_FF ';
lcSQL=lcSQL||') as cuR) as cuR ';
lcSQL=lcSQL||'WHERE RTRIM(cuR.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT txtMonto_O ISNULL Then lcSQL=lcSQL||' AND cuR.Monto_O' ||txtMonto_O; End if;
If NOT txtDisminu ISNULL Then lcSQL=lcSQL||' AND cuR.Disminu' ||txtDisminu; End if;
If NOT txtAumentos ISNULL Then lcSQL=lcSQL||' AND cuR.Aumento' ||txtAumentos; End if;
If NOT txtPresu_Actu ISNULL Then lcSQL=lcSQL||' AND (cuR.Monto_O+cuR.Aumento_t)-cuR.Disminu_t' ||txtPresu_Actu; End if;
If NOT txtPrecomp ISNULL Then lcSQL=lcSQL||' AND cuR.Precomp' ||txtPrecomp; End if;
If NOT txtCompro ISNULL Then lcSQL=lcSQL||' AND cuR.Compro' ||txtCompro; End if;
If NOT txtCausados ISNULL Then lcSQL=lcSQL||' AND cuR.Causado' ||txtCausados; End if;
If NOT txtDeuda ISNULL Then lcSQL=lcSQL||' AND ((cuR.CAUSADO_T+cuR.CAUSADO_T2)-(cuR.PAGADO_T+cuR.PAGADO_T2))' ||txtDeuda; End if;
If NOT txtDispon ISNULL Then lcSQL=lcSQL||' AND ((cuR.MONTO_O+cuR.AUMENTO_T)-(cuR.COMPRO_T+cuR.DISMINU_T)) ' ||txtDispon ||' and ((cuR.MONTO_O+cuR.AUMENTO_T)<>(cuR.COMPRO_T+cuR.DISMINU_T)) '; End if;
If NOT txtCongela ISNULL Then lcSQL=lcSQL||' AND cuR.Congela' ||txtCongela; End if;
If NOT txtCompNoCau ISNULL Then lcSQL=lcSQL||' AND ((cuR.Compro_T+cuR.Compro_T2)-(cuR.CAUSADO_T+cuR.CAUSADO_T2)) '||txtCompNoCau; End if;
lcSQL=lcSQL||' ORDER BY cuR.TEXTO_INST,cuR.TEXTO_UNIDAD_UR,cuR.TEXTO_UNIDAD_UE,cuR.ID_POA,cuR.Partida,cuR.COD_PRE ';
ELSIF cboPre=2 THEN -- AGRUPADO POR Código Presu.
lcSQL='SELECT * FROM(SELECT '||cboMes2||' as Mes,cuR.EJERCICIO,cuR.ID_INST,cuR.ID_DP,cuR.ID_UAD,cuR.ID_PUC,cuR.ID_FF,cuR.COD_PRE,cuR.MONTO_O,cuR.PARTIDA,cuR.TEXTO_DP,cuR.TEXTO_INST,cuR.COD_PRE_TEXTO,cuR.FF_TEXTO,cuR.TEXTO_UNIDAD_UE,cuR.TEXTO_UNIDAD_UR,';
IF NOT chkAcum ISNULL Then
lcSQL=lcSQL||'cuR.AUMENTO_T as AUMENTO,cuR.AUMENTO_T,cuR.DISMINU_T as DISMINU,cuR.DISMINU_T,(cuR.precomp_t+cuR.precomp_t2) as precomp,(cuR.precomp_t+cuR.precomp_t2) as precomp_t,(cuR.Compro_T+cuR.Compro_T2) as Compro,(cuR.CAUSADO_T+cuR.CAUSADO_T2) as CAUSADO,(cuR.PAGADO_T+cuR.PAGADO_T2) as PAGADO,';
lcSQL=lcSQL||'(cuR.Compro_T+cuR.Compro_T2) as Compro_T,(cuR.CAUSADO_T+cuR.CAUSADO_T2) as CAUSADO_T,(cuR.PAGADO_T+cuR.PAGADO_T2) as PAGADO_T,';
ELSE
lcSQL=lcSQL||'cuR.AUMENTO,cuR.AUMENTO_T,cuR.DISMINU,cuR.DISMINU_T,(cuR.precomp+cuR.precomp2) as precomp,(cuR.precomp_t+cuR.precomp_t2) as precomp_t,(cuR.Compro+cuR.Compro2) as Compro,(cuR.CAUSADO+cuR.CAUSADO2) as CAUSADO,(cuR.PAGADO+cuR.PAGADO2) as PAGADO,';
lcSQL=lcSQL||'(cuR.Compro_T+cuR.Compro_T2) as Compro_T,(cuR.CAUSADO_T+cuR.CAUSADO_T2) as CAUSADO_T,(cuR.PAGADO_T+cuR.PAGADO_T2) as PAGADO_T,';
END IF;
lcSQL=lcSQL||'(cuR.congela+cuR.Congela2) as CONGELA ';
lcSQL=lcSQL||'FROM (SELECT a.*,SUBSTRING(b.CODIGO,1,4) as PARTIDA,d.TEXT as TEXTO_DP,e.ENTIDAD AS TEXTO_INST,b.TEXT as COD_PRE_TEXTO,g.TEXT as FF_TEXTO,UE(a.ID_DP,0) as TEXTO_UNIDAD_UE,';
lcSQL=lcSQL||'UR(a.ID_DP,0) AS TEXTO_UNIDAD_UR,';
lcSQL=lcSQL||'(case when (aum.AUMENTO) is null then 0 else (aum.AUMENTO) END ) AS AUMENTO,';
lcSQL=lcSQL||'(case when (aumt.AUMENTO_T) is null then 0 else (aumt.AUMENTO_T) END ) AS AUMENTO_T,';
lcSQL=lcSQL||'(case when (dis.DISMINU) is null then 0 else (dis.DISMINU) END ) AS DISMINU,';
lcSQL=lcSQL||'(case when (dist.DISMINU_T) is null then 0 else (dist.DISMINU_T) END ) AS DISMINU_T,';
lcSQL=lcSQL||'(case when (crrd.precomp) is null then 0 else (crrd.precomp) END ) AS precomp,';
lcSQL=lcSQL||'(case when (cuMOM1.precomp) is null then 0 else (cuMOM1.precomp) END) AS precomp2,';
lcSQL=lcSQL||'(case when (crrd.Compro) is null then 0 else (crrd.Compro) END) AS Compro,';
lcSQL=lcSQL||'(case when (cuMOM2.COMPRO) is null then 0 else (cuMOM2.COMPRO) END) AS Compro2,';
lcSQL=lcSQL||'(case when (crrd.CAUSADO) is null then 0 else (crrd.CAUSADO) END) AS CAUSADO,';
lcSQL=lcSQL||'(case when (cuMOM3.CAUSADO) is null then 0 else (cuMOM3.CAUSADO) END) AS CAUSADO2,';
lcSQL=lcSQL||'(case when (crrd.PAGADO) is null then 0 else (crrd.PAGADO) END) AS PAGADO,';
lcSQL=lcSQL||'(case when (cuMOM4.PAGADO) is null then 0 else (cuMOM4.PAGADO) END) AS PAGADO2,';
lcSQL=lcSQL||'(case when (crrdt.precomp_T) is null then 0 else (crrdt.precomp_T) END ) AS precomp_T,';
lcSQL=lcSQL||'(case when (cuMOM1T.precomp) is null then 0 else (cuMOM1T.precomp) END) AS precomp_T2,';
lcSQL=lcSQL||'(case when (crrdt.Compro_T) is null then 0 else (crrdt.Compro_T) END) AS Compro_T,';
lcSQL=lcSQL||'(case when (cuMOM2T.COMPRO) is null then 0 else (cuMOM2T.COMPRO) END) AS Compro_T2,';
lcSQL=lcSQL||'(case when (crrdt.CAUSADO_T) is null then 0 else (crrdt.CAUSADO_T) END) AS CAUSADO_T,';
lcSQL=lcSQL||'(case when (cuMOM3T.CAUSADO) is null then 0 else (cuMOM3T.CAUSADO) END) AS CAUSADO_T2,';
lcSQL=lcSQL||'(case when (crrdt.PAGADO_T) is null then 0 else (crrdt.PAGADO_T) END) AS PAGADO_T,';
lcSQL=lcSQL||'(case when (cuMOM4T.PAGADO) is null then 0 else (cuMOM4T.PAGADO) END) AS PAGADO_T2,';
lcSQL=lcSQL||'(case when (cg1.monto) is null then 0 else (cg1.monto) END ) AS CONGELA,';
lcSQL=lcSQL||'(case when (cg2.monto) is null then 0 else (cg2.monto) END ) AS CONGELA2 ';
lcSQL=lcSQL||'FROM (SELECT a.EJERCICIO,a.ID_INST,a.ID_DP,a.ID_UAD,a.ID_PUC,a.ID_FF,a.COD_PRE,SUM(a.ESTIMADO) as MONTO_O ';
lcSQL=lcSQL||'FROM PFEGRESO_D a ';
lcSQL=lcSQL||'WHERE RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO)||' AND a.ID_INST='||txtINST;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtUE ISNULL Then lcSQL=lcSQL||' AND b.ID_UE= '||txtUE; End if;
If NOT txtDP ISNULL Then lcSQL=lcSQL||' AND a.ID_DP= '||txtDP; End if;
If NOT txtPUC ISNULL Then lcSQL=lcSQL||' AND a.ID_PUC='||txtPUC; End if;
If NOT txtFF ISNULL Then lcSQL=lcSQL||' AND a.ID_FF= '||txtFF; End if;
If NOT txtUAD ISNULL Then lcSQL=lcSQL||' AND a.ID_UAD='||txtUAD; End if;
If NOT txtUAD2 ISNULL Then lcSQL=lcSQL||' AND a.ID_UAD2='||txtUAD2; End if;
If NOT txtUEL ISNULL Then lcSQL=lcSQL||' AND a.ID_UEL='||txtUEL; End if;
If NOT txtPOA ISNULL Then lcSQL=lcSQL||' AND a.ID_POA='||txtPOA; End if;
If NOT cboCE ISNULL Then lcSQL=lcSQL||' AND a.CE='||cboCE; End if;
If NOT cboGD ISNULL Then lcSQL=lcSQL||' AND a.GD='||cboGD; End if;
If NOT txtCod_Pre ISNULL Then
lcSQL=lcSQL||' AND ';
If NOT chkNC1 ISNULL Then
lcSQL=lcSQL || ' NOT ';
End if;
lcSQL=lcSQL||' a.COD_PRE LIKE '||quote_literal(RTRIM(txtCod_Pre));
End if;
If NOT txtCod_Pre2 ISNULL Then
lcSQL=lcSQL||' AND ';
If NOT chkNC2 IS NULL Then
lcSQL=lcSQL || ' NOT ';
End if;
lcSQL=lcSQL||' a.COD_PRE LIKE '||quote_literal(RTRIM(txtCod_Pre2));
End if;
lcSQL=lcSQL||' GROUP BY a.EJERCICIO,a.ID_INST,a.ID_DP,a.ID_UAD,a.ID_PUC,a.ID_FF,a.COD_PRE) as a ';
lcSQL=lcSQL||'INNER JOIN MATREE b ON a.ID_PUC = b.ID ';
lcSQL=lcSQL||'INNER JOIN MATREE d ON a.ID_DP=d.ID ';
lcSQL=lcSQL||'INNER JOIN mainstituc e ON a.ID_INST=e.CODIGO ';
lcSQL=lcSQL||'INNER JOIN MATREE g ON a.ID_FF=g.ID ';
-- MODIFICACIONES
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(MONTO) as AUMENTO,ID_DP,ID_PUC,ID_FF FROM PFEGRESOAU WHERE TIPO=1 and MES>='||cboMes||' and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY ID_DP,ID_PUC,ID_FF ) AS aum ON a.ID_PUC=aum.ID_PUC and a.ID_DP=aum.ID_DP and a.ID_FF=aum.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(MONTO) as DISMINU,ID_DP,ID_PUC,ID_FF FROM PFEGRESOAU WHERE TIPO=2 and MES>='||cboMes||' and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY ID_DP,ID_PUC,ID_FF ) AS dis ON a.ID_PUC=dis.ID_PUC and a.ID_DP=dis.ID_DP and a.ID_FF=dis.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(MONTO) as AUMENTO_T,ID_DP,ID_PUC,ID_FF FROM PFEGRESOAU WHERE TIPO=1 and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY ID_DP,ID_PUC,ID_FF ) as aumt ON a.ID_PUC=aumt.ID_PUC and a.ID_DP=aumt.ID_DP and a.ID_FF=aumt.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(MONTO) as DISMINU_T,ID_DP,ID_PUC,ID_FF FROM PFEGRESOAU WHERE TIPO=2 and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY ID_DP,ID_PUC,ID_FF ) AS dist ON a.ID_PUC=dist.ID_PUC and a.ID_DP=dist.ID_DP and a.ID_FF=dist.ID_FF ';
-- CIERRE MANUAL
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(PRECOM) as precomp,SUM(COMPRO) as COMPRO,SUM(CAUSADO) as CAUSADO,SUM(PAGADO) as PAGADO,ID_DP,ID_PUC,ID_FF FROM PFCIERREDD WHERE MES>='||cboMes||' and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If chkVALIDADO ISNULL Then lcSQL=lcSQL||' and VALIDADO=1 '; End if;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompMan ISNULL Then lcSQL=lcSQL||' and ( aut=0 and NUM_COMP='||quote_literal(txtNroCompMan)||') '; End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and ( aut=1 and NUM_COMP='||quote_literal(txtNroCompAut)||') '; End if;
lcSQL=lcSQL||' GROUP BY ID_DP,ID_PUC,ID_FF ) AS crrd ON a.ID_PUC=crrd.ID_PUC and a.ID_DP=crrd.ID_DP and a.ID_FF=crrd.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(PRECOM) as precomp_T,SUM(COMPRO) as COMPRO_T,SUM(CAUSADO) as CAUSADO_T,SUM(PAGADO) as PAGADO_T,ID_DP,ID_PUC,ID_FF FROM PFCIERREDD WHERE MES<='||cboMes||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If chkVALIDADO ISNULL Then lcSQL=lcSQL||' and VALIDADO=1 '; End if;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompMan ISNULL Then lcSQL=lcSQL||' and ( aut=0 and NUM_COMP='||quote_literal(txtNroCompMan)||') '; End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and ( aut=1 and NUM_COMP='||quote_literal(txtNroCompAut)||') '; End if;
lcSQL=lcSQL||' GROUP BY ID_DP,ID_PUC,ID_FF ) AS crrdt ON a.ID_PUC=crrdt.ID_PUC and a.ID_DP=crrdt.ID_DP and a.ID_FF=crrdt.ID_FF ';
-- MOMENTOS PRESU
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as precomp,b.ID_DP,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.numerop=a.num_comp and a.MOMENTO=1 and a.MES>='||cboMes||' and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY b.ID_DP,b.ID_PUC,b.ID_FF ) AS cuMOM1 ON a.ID_PUC=cuMOM1.ID_PUC and a.ID_DP=cuMOM1.ID_DP and a.ID_FF=cuMOM1.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Compro,b.ID_DP,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=2 and a.MES>='||cboMes||' and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY b.ID_DP,b.ID_PUC,b.ID_FF ) AS cuMOM2 ON a.ID_PUC=cuMOM2.ID_PUC and a.ID_DP=cuMOM2.ID_DP and a.ID_FF=cuMOM2.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Causado,b.ID_DP,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=3 and a.MES>='||cboMes||' and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY b.ID_DP,b.ID_PUC,b.ID_FF ) AS cuMOM3 ON a.ID_PUC=cuMOM3.ID_PUC and a.ID_DP=cuMOM3.ID_DP and a.ID_FF=cuMOM3.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Pagado,b.ID_DP,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=4 and a.MES>='||cboMes||' and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY b.ID_DP,b.ID_PUC,b.ID_FF ) AS cuMOM4 ON a.ID_PUC=cuMOM4.ID_PUC and a.ID_DP=cuMOM4.ID_DP and a.ID_FF=cuMOM4.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as precomp,b.ID_DP,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.numerop=a.num_comp and a.MOMENTO=1 and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY b.ID_DP,b.ID_PUC,b.ID_FF ) AS cuMOM1T ON a.ID_PUC=cuMOM1T.ID_PUC and a.ID_DP=cuMOM1T.ID_DP and a.ID_FF=cuMOM1T.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Compro,b.ID_DP,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=2 and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY b.ID_DP,b.ID_PUC,b.ID_FF ) AS cuMOM2T ON a.ID_PUC=cuMOM2T.ID_PUC and a.ID_DP=cuMOM2T.ID_DP and a.ID_FF=cuMOM2T.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Causado,b.ID_DP,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=3 and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY b.ID_DP,b.ID_PUC,b.ID_FF ) AS cuMOM3T ON a.ID_PUC=cuMOM3T.ID_PUC and a.ID_DP=cuMOM3T.ID_DP and a.ID_FF=cuMOM3T.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Pagado,b.ID_DP,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=4 and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY b.ID_DP,b.ID_PUC,b.ID_FF ) AS cuMOM4T ON a.ID_PUC=cuMOM4T.ID_PUC and a.ID_DP=cuMOM4T.ID_DP and a.ID_FF=cuMOM4T.ID_FF ';
-- CONGELADO
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Monto,b.ID_DP,b.ID_PUC,b.ID_FF FROM pf_sol_tra a INNER JOIN pfdetrace b ON a.numero=b.numero WHERE RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(b.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' and EXTRACT('||$x$'month'$x$||' from a.fecha) <='||cboMes2||' and a.STATUS=2 GROUP BY b.ID_DP,b.ID_PUC,b.ID_FF ) as CG1 ON a.ID_PUC=cg1.ID_PUC and a.ID_DP=cg1.ID_DP and a.ID_FF=cg1.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Monto,a.ID_FF,b.ID_DP,b.ID_PUC FROM pfinsub a INNER JOIN pfinsubc b ON a.numero=b.numero WHERE RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' and EXTRACT('||$x$'month'$x$||' from a.fecha) <='||cboMes2||' and a.STATUS=2 GROUP BY a.ID_FF,b.ID_DP,b.ID_PUC) as CG2 ON a.ID_PUC=cg2.ID_PUC and a.ID_DP=cg2.ID_DP and a.ID_FF=cg2.ID_FF ';
lcSQL=lcSQL||') as cuR) as cuR ';
lcSQL=lcSQL||'WHERE RTRIM(cuR.EJERCICIO)='||quote_literal(cboEJERCICIO);
If NOT txtMonto_O ISNULL Then lcSQL=lcSQL||' AND cuR.Monto_O' ||txtMonto_O; End if;
If NOT txtDisminu ISNULL Then lcSQL=lcSQL||' AND cuR.Disminu' ||txtDisminu; End if;
If NOT txtAumentos ISNULL Then lcSQL=lcSQL||' AND cuR.Aumento' ||txtAumentos; End if;
If NOT txtPresu_Actu ISNULL Then lcSQL=lcSQL||' AND (cuR.Monto_O+cuR.Aumento_t)-cuR.Disminu_t' ||txtPresu_Actu; End if;
If NOT txtPrecomp ISNULL Then lcSQL=lcSQL||' AND cuR.Precomp' ||txtPrecomp; End if;
If NOT txtCompro ISNULL Then lcSQL=lcSQL||' AND cuR.Compro' ||txtCompro; End if;
If NOT txtCausados ISNULL Then lcSQL=lcSQL||' AND cuR.Causado' ||txtCausados; End if;
If NOT txtDeuda ISNULL Then lcSQL=lcSQL||' AND ((cuR.CAUSADO_T+cuR.CAUSADO_T2)-(cuR.PAGADO_T+cuR.PAGADO_T2))' ||txtDeuda; End if;
If NOT txtDispon ISNULL Then lcSQL=lcSQL||' AND ((cuR.MONTO_O+cuR.AUMENTO_T)-(cuR.COMPRO_T+cuR.DISMINU_T)) ' ||txtDispon ||' and ((cuR.MONTO_O+cuR.AUMENTO_T)<>(cuR.COMPRO_T+cuR.DISMINU_T)) '; End if;
If NOT txtCongela ISNULL Then lcSQL=lcSQL||' AND cuR.Congela' ||txtCongela; End if;
If NOT txtCompNoCau ISNULL Then lcSQL=lcSQL||' AND ((cuR.Compro_T+cuR.Compro_T2)-(cuR.CAUSADO_T+cuR.CAUSADO_T2)) '||txtCompNoCau; End if;
lcSQL=lcSQL||' ORDER BY cuR.TEXTO_INST,cuR.TEXTO_UNIDAD_UR,cuR.TEXTO_UNIDAD_UE,cuR.TEXTO_DP,cuR.COD_PRE ';
ELSIF cboPre=3 THEN -- Cierre Presupuestario por Crédito AGRUPADO POR DP Y CP
IF txtCatDP ISNULL Then RAISE EXCEPTION ' %','Falta Indicar la Categoria DP'; END IF;
IF txtCatPUCG ISNULL Then RAISE EXCEPTION ' %','Falta Indicar la Categoria C.P.'; END IF;
lcSQL='SELECT * FROM(SELECT '||cboMes2||' as Mes,*,';
lcSQL=lcSQL||'TEXT_NIV('||quote_literal(cboEJERCICIO)||','||lcFORMATODP||$x$,'DP',DP,$x$||quote_literal(txtInst)||') as TEXT_DP,';
lcSQL=lcSQL||'TEXT_NIV('||quote_literal(cboEJERCICIO)||','||lcFORMATOPUCG||$x$,'PUCG',PUC,$x$||quote_literal(txtInst)||') as TEXT_PUC ';
lcSQL=lcSQL||'FROM (SELECT ejercicio,dp,puc,';
lcSQL=lcSQL||'SUM(MONTO_O) as MONTO_O,';
IF chkAcum=1 Then
lcSQL=lcSQL||'SUM(MPRECOMP_T+PRECOMP_T) as PRECOMP,SUM(MCompro_T+Compro_T) as Compro,SUM(MCAUSADO_T+CAUSADO_T) as CAUSADO,SUM(MPAGADO_T+PAGADO_T) as PAGADO,';
lcSQL=lcSQL||'SUM(AUMENTO_T) as AUMENTO,SUM(DISMINU_T) as DISMINU,';
ELSE
lcSQL=lcSQL||'SUM(MPRECOMP+PRECOMP) as PRECOMP,SUM(MCompro+Compro) as Compro,SUM(MCAUSADO+CAUSADO) as CAUSADO,SUM(MPAGADO+PAGADO) as PAGADO,';
lcSQL=lcSQL||'SUM(AUMENTO) as AUMENTO,SUM(DISMINU) as DISMINU,';
END IF;
lcSQL=lcSQL||'SUM(AUMENTO_T) as AUMENTO_T,SUM(DISMINU_T) as DISMINU_T,SUM(MPRECOMP_T+PRECOMP_T) as PRECOMP_T,SUM(MCOMPRO_T+COMPRO_T) as COMPRO_T,SUM(MCAUSADO_T+CAUSADO_T) as CAUSADO_T,SUM(MPAGADO_T+PAGADO_T) as PAGADO_T,SUM(CONGELA) as CONGELA ';
lcSQL=lcSQL||'FROM (SELECT a.EJERCICIO,a.ID_INST,a.MONTO_O,';
lcSQL=lcSQL||'SUBSTRING(c.CODIGO,1,LENGTH(AT('||$x$'.'$x$||','||lcFORMATODP||','||txtCatDP||$x$))) as DP,$x$;
lcSQL=lcSQL||'SUBSTRING(b.Codigo,1,LENGTH(AT('||$x$'.'$x$||','||lcFORMATOPUCG||','||txtCatPUCG||$x$))) as PUC,$x$;
lcSQL=lcSQL||'(case when (aum.AUMENTO) is null then 0 else (aum.AUMENTO) END ) AS AUMENTO,';
lcSQL=lcSQL||'(case when (aumt.AUMENTO_T) is null then 0 else (aumt.AUMENTO_T) END ) AS AUMENTO_T,';
lcSQL=lcSQL||'(case when (dis.DISMINU) is null then 0 else (dis.DISMINU) END ) AS DISMINU,';
lcSQL=lcSQL||'(case when (dist.DISMINU_T) is null then 0 else (dist.DISMINU_T) END ) AS DISMINU_T,';
lcSQL=lcSQL||'(case when (crrd.precomp) is null then 0 else (crrd.precomp) END ) AS precomp,';
lcSQL=lcSQL||'(case when (crrd.Compro) is null then 0 else (crrd.Compro) END) AS Compro,';
lcSQL=lcSQL||'(case when (crrd.CAUSADO) is null then 0 else (crrd.CAUSADO) END) AS CAUSADO,';
lcSQL=lcSQL||'(case when (crrd.PAGADO) is null then 0 else (crrd.PAGADO) END) AS PAGADO,';
-- ACUMULADO
lcSQL=lcSQL||'(case when (crrdt.precomp_T) is null then 0 else (crrdt.precomp_T) END) AS precomp_T,';
lcSQL=lcSQL||'(case when (crrdt.Compro_T) is null then 0 else (crrdt.Compro_T) END) AS Compro_T,';
lcSQL=lcSQL||'(case when (crrdt.CAUSADO_T) is null then 0 else (crrdt.CAUSADO_T) END) AS CAUSADO_T,';
lcSQL=lcSQL||'(case when (crrdt.PAGADO_T) is null then 0 else (crrdt.PAGADO_T) END) AS PAGADO_T,';
lcSQL=lcSQL||'(case when (cuMOM1T.precomp) is null then 0 else (cuMOM1T.precomp) END) AS Mprecomp_T,';
lcSQL=lcSQL||'(case when (cuMOM2T.COMPRO) is null then 0 else (cuMOM2T.COMPRO) END) AS MCompro_T,';
lcSQL=lcSQL||'(case when (cuMOM3T.CAUSADO) is null then 0 else (cuMOM3T.CAUSADO) END) AS MCAUSADO_T,';
lcSQL=lcSQL||'(case when (cuMOM4T.PAGADO) is null then 0 else (cuMOM4T.PAGADO) END) AS MPAGADO_T,';
--
lcSQL=lcSQL||'(case when (cuMOM1.precomp) is null then 0 else (cuMOM1.precomp) END) AS Mprecomp,';
lcSQL=lcSQL||'(case when (cuMOM2.Compro) is null then 0 else (cuMOM2.Compro) END) AS MCOMPRO,';
lcSQL=lcSQL||'(case when (cuMOM3.Causado) is null then 0 else (cuMOM3.Causado) END) AS MCAUSADO,';
lcSQL=lcSQL||'(case when (cuMOM4.Pagado) is null then 0 else (cuMOM4.Pagado) END) AS MPAGADO,';
lcSQL=lcSQL||'(case when (cg1.monto+cg2.monto) is null then 0 else (cg1.monto+cg2.monto) END) AS CONGELA ';
lcSQL=lcSQL||'FROM (SELECT a.EJERCICIO,a.id_inst,a.COD_PRE,a.ID_DP,a.ID_POA,a.ID_PUC,a.ID_FF,a.ESTIMADO as MONTO_O ';
lcSQL=lcSQL||'FROM PFEGRESO_D a ';
lcSQL=lcSQL||'INNER JOIN PLPOAEJE b ON a.EJERCICIO=b.EJERCICIO and a.EJERCICIO2=b.EJERCICIO2 and a.ID_POA=b.ID_POA ';
lcSQL=lcSQL||'WHERE RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO)||' AND a.ID_INST='||txtINST;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtUE ISNULL Then lcSQL=lcSQL||' AND b.ID_UE= '||txtUE; End if;
If NOT txtDP ISNULL Then lcSQL=lcSQL||' AND a.ID_DP= '||txtDP; End if;
If NOT txtPUC ISNULL Then lcSQL=lcSQL||' AND a.ID_PUC='||txtPUC; End if;
If NOT txtFF ISNULL Then lcSQL=lcSQL||' AND a.ID_FF= '||txtFF; End if;
If NOT txtUAD ISNULL Then lcSQL=lcSQL||' AND a.ID_UAD='||txtUAD; End if;
If NOT txtUAD2 ISNULL Then lcSQL=lcSQL||' AND a.ID_UAD2='||txtUAD2; End if;
If NOT txtUEL ISNULL Then lcSQL=lcSQL||' AND a.ID_UEL='||txtUEL; End if;
If NOT txtPOA ISNULL Then lcSQL=lcSQL||' AND a.ID_POA='||txtPOA; End if;
If NOT cboCE ISNULL Then lcSQL=lcSQL||' AND a.CE='||cboCE; End if;
If NOT cboGD ISNULL Then lcSQL=lcSQL||' AND a.GD='||cboGD; End if;
If NOT txtCod_Pre ISNULL Then
lcSQL=lcSQL||' AND ';
If NOT chkNC1 ISNULL Then
lcSQL=lcSQL || ' NOT ';
End if;
lcSQL=lcSQL||' a.COD_PRE LIKE '||quote_literal(RTRIM(txtCod_Pre));
End if;
If NOT txtCod_Pre2 ISNULL Then
lcSQL=lcSQL||' AND ';
If NOT chkNC2 IS NULL Then
lcSQL=lcSQL || ' NOT ';
End if;
lcSQL=lcSQL||' a.COD_PRE LIKE '||quote_literal(RTRIM(txtCod_Pre2));
End if;
lcSQL=lcSQL||' ) as a ';
lcSQL=lcSQL||'INNER JOIN MATREE b ON a.ID_PUC = b.ID ';
lcSQL=lcSQL||'INNER JOIN MATREE c ON a.ID_DP=c.ID ';
-- MODIFICACIONES
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(MONTO) as AUMENTO,ID_POA,ID_PUC,ID_FF FROM PFEGRESOAU WHERE TIPO=1 and MES>='||cboMes||' and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY ID_POA,ID_PUC,ID_FF ) AS aum ON a.ID_PUC=aum.ID_PUC and a.ID_POA=aum.ID_POA and a.ID_FF=aum.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(MONTO) as DISMINU,ID_POA,ID_PUC,ID_FF FROM PFEGRESOAU WHERE TIPO=2 and MES>='||cboMes||' and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY ID_POA,ID_PUC,ID_FF ) AS dis ON a.ID_PUC=dis.ID_PUC and a.ID_POA=dis.ID_POA and a.ID_FF=dis.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(MONTO) as AUMENTO_T,ID_POA,ID_PUC,ID_FF FROM PFEGRESOAU WHERE TIPO=1 and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY ID_POA,ID_PUC,ID_FF ) as aumt ON a.ID_PUC=aumt.ID_PUC and a.ID_POA=aumt.ID_POA and a.ID_FF=aumt.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(MONTO) as DISMINU_T,ID_POA,ID_PUC,ID_FF FROM PFEGRESOAU WHERE TIPO=2 and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY ID_POA,ID_PUC,ID_FF ) AS dist ON a.ID_PUC=dist.ID_PUC and a.ID_POA=dist.ID_POA and a.ID_FF=dist.ID_FF ';
-- CIERRE MANUAL
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(PRECOM) as precomp,SUM(COMPRO) as COMPRO,SUM(CAUSADO) as CAUSADO,SUM(PAGADO) as PAGADO,ID_POA,ID_PUC,ID_FF FROM PFCIERREDD WHERE MES>='||cboMes||' and MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If chkVALIDADO ISNULL Then lcSQL=lcSQL||' and VALIDADO=1 '; End if;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompMan ISNULL Then lcSQL=lcSQL||' and ( aut=0 and NUM_COMP='||quote_literal(txtNroCompMan)||') '; End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and ( aut=1 and NUM_COMP='||quote_literal(txtNroCompAut)||') '; End if;
lcSQL=lcSQL||' GROUP BY ID_POA,ID_PUC,ID_FF ) AS crrd ON a.ID_PUC=crrd.ID_PUC and a.ID_POA=crrd.ID_POA and a.ID_FF=crrd.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(PRECOM) as precomp_T,SUM(COMPRO) as COMPRO_T,SUM(CAUSADO) as CAUSADO_T,SUM(PAGADO) as PAGADO_T,ID_POA,ID_PUC,ID_FF FROM PFCIERREDD WHERE MES<='||cboMes2||' and RTRIM(Ejercicio)='||quote_literal(cboEjercicio);
If chkVALIDADO ISNULL Then lcSQL=lcSQL||' and VALIDADO=1 '; End if;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompMan ISNULL Then lcSQL=lcSQL||' and ( aut=0 and NUM_COMP='||quote_literal(txtNroCompMan)||') '; End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and ( aut=1 and NUM_COMP='||quote_literal(txtNroCompAut)||') '; End if;
lcSQL=lcSQL||' GROUP BY ID_POA,ID_PUC,ID_FF ) AS crrdt ON a.ID_PUC=crrdt.ID_PUC and a.ID_POA=crrdt.ID_POA and a.ID_FF=crrdt.ID_FF ';
-- CONGELADO
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Monto,b.ID_POA,b.ID_PUC,b.ID_FF FROM pf_sol_tra a INNER JOIN pfdetrace b ON a.numero=b.numero WHERE RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(b.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' and EXTRACT('||$x$'month'$x$||' from a.fecha) <='||cboMes2||' and a.STATUS=2 GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) as CG1 ON a.ID_PUC=cg1.ID_PUC and a.ID_POA=cg1.ID_POA and a.ID_FF=cg1.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Monto,a.ID_FF,b.ID_POA,b.ID_PUC FROM pfinsub a INNER JOIN pfinsubc b ON a.numero=b.numero WHERE RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' and EXTRACT('||$x$'month'$x$||' from a.fecha) <='||cboMes2||' and a.STATUS=2 GROUP BY a.ID_FF,b.ID_POA,b.ID_PUC) as CG2 ON a.ID_PUC=cg2.ID_PUC and a.ID_POA=cg2.ID_POA and a.ID_FF=cg2.ID_FF ';
-- MOMENTOS PRESU
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as precomp,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.numerop=a.num_comp and a.MOMENTO=1 and a.MES>='||cboMes||' and MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM1 ON a.ID_PUC=cuMOM1.ID_PUC and a.ID_POA=cuMOM1.ID_POA and a.ID_FF=cuMOM1.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Compro,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=2 and a.MES>='||cboMes||' and a.MES<='||cboMes||' AND a.STATUS=3 AND RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM2 ON a.ID_PUC=cuMOM2.ID_PUC and a.ID_POA=cuMOM2.ID_POA and a.ID_FF=cuMOM2.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Causado,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=3 and a.MES>='||cboMes||' and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM3 ON a.ID_PUC=cuMOM3.ID_PUC and a.ID_POA=cuMOM3.ID_POA and a.ID_FF=cuMOM3.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Pagado,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=4 and a.MES>='||cboMes||' and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM4 ON a.ID_PUC=cuMOM4.ID_PUC and a.ID_POA=cuMOM4.ID_POA and a.ID_FF=cuMOM4.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as precomp,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.numerop=a.num_comp and a.MOMENTO=1 and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM1T ON a.ID_PUC=cuMOM1T.ID_PUC and a.ID_POA=cuMOM1T.ID_POA and a.ID_FF=cuMOM1T.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Compro,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=2 and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM2T ON a.ID_PUC=cuMOM2T.ID_PUC and a.ID_POA=cuMOM2T.ID_POA and a.ID_FF=cuMOM2T.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Causado,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=3 and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM3T ON a.ID_PUC=cuMOM3T.ID_PUC and a.ID_POA=cuMOM3T.ID_POA and a.ID_FF=cuMOM3T.ID_FF ';
lcSQL=lcSQL||'LEFT JOIN (SELECT SUM(b.Monto) as Pagado,b.ID_POA,b.ID_PUC,b.ID_FF FROM PFMOMENTO a INNER JOIN PFMOMENTOD b ON a.NUMEROP=b.NUMEROP WHERE a.MOMENTO=4 and a.MES<='||cboMes2||' AND a.STATUS=3 AND RTRIM(a.Ejercicio)='||quote_literal(cboEjercicio);
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtNroCompAut ISNULL Then lcSQL=lcSQL||' and a.NUM_COMP='||quote_literal(txtNroCompAut); End if;
lcSQL=lcSQL||' GROUP BY b.ID_POA,b.ID_PUC,b.ID_FF ) AS cuMOM4T ON a.ID_PUC=cuMOM4T.ID_PUC and a.ID_POA=cuMOM4T.ID_POA and a.ID_FF=cuMOM4T.ID_FF ';
lcSQL=lcSQL||') as cuR GROUP BY EJERCICIO,ID_INST,DP,PUC) as cuR) as cuR ';
lcSQL=lcSQL||'WHERE RTRIM(cuR.Ejercicio)='||quote_literal(cboEjercicio); -- PARA COMPLEMENTAR EL WHERE
If NOT txtMonto_O ISNULL Then lcSQL=lcSQL||' AND cuR.Monto_O' ||txtMonto_O; End if;
If NOT txtDisminu ISNULL Then lcSQL=lcSQL||' AND cuR.Disminu' ||txtDisminu; End if;
If NOT txtAumentos ISNULL Then lcSQL=lcSQL||' AND cuR.Aumento' ||txtAumentos; End if;
If NOT txtPresu_Actu ISNULL Then lcSQL=lcSQL||' AND (cuR.Monto_O+cuR.Aumento_t)-cuR.Disminu_t' ||txtPresu_Actu; End if;
If NOT txtPrecomp ISNULL Then lcSQL=lcSQL||' AND cuR.Precomp' ||txtPrecomp; End if;
If NOT txtCompro ISNULL Then lcSQL=lcSQL||' AND cuR.Compro' ||txtCompro; End if;
If NOT txtCausados ISNULL Then lcSQL=lcSQL||' AND cuR.Causado' ||txtCausados; End if;
If NOT txtDeuda ISNULL Then lcSQL=lcSQL||' AND (cuR.CAUSADO_T-cuR.PAGADO_T)' ||txtDeuda; End if;
If NOT txtDispon ISNULL Then lcSQL=lcSQL||' AND ((cuR.MONTO_O+cuR.AUMENTO_T)-(cuR.COMPRO_T+cuR.DISMINU_T)) ' ||txtDispon ||' and ((cuR.MONTO_O+cuR.AUMENTO_T)<>(cuR.COMPRO_T+cuR.DISMINU_T)) '; End if;
If NOT txtCongela ISNULL Then lcSQL=lcSQL||' AND cuR.Congela' ||txtCongela; End if;
If NOT txtCompNoCau ISNULL Then lcSQL=lcSQL||' AND (cuR.Compro_T-cuR.CAUSADO_T) '||txtCompNoCau; End if;
lcSQL=lcSQL||' ORDER BY DP,PUC ';
ELSIF cboPre=4 THEN -- Mayor de Ejecución Presupuestaria
IF NOT chkAcum ISNULL Then
lcExp='<=';
Else
lcExp='=';
END IF;
-- BLOQUE FGD CON EJECUCION CONSOLIDADA y MODIFICACIONES PRESUPUESTARIAS CONSOLIDADAS
lcSQL='SELECT * FROM(SELECT '||cboMes2||' as Mes,cuR.*,(precomp_T+precomp_T_AU) as precomp,(Compro_T+Compro_T_AU) as Compro,(CAUSADO_T+CAUSADO_T_AU) as CAUSADO,(PAGADO_T+ PAGADO_T_AU) as PAGADO,';
lcSQL=lcSQL||'cuDD.NUM_REF,cuDD.FEC_REF,cuDD.TIP_DOC,cuDD.precomp_D,cuDD.COMPRO_D,cuDD.CAUSADO_D,cuDD.PAGADO_D,cuDD.Descrip,cuDD.CI_RIF,cuDD.NOMBRE,cuDD.AUT,cuDD.numero_o ';
lcSQL=lcSQL||'FROM (SELECT a.*,SUBSTRING(b.CODIGO,1,4) as PARTIDA,d.CODIGO as COD_DP,d.TEXT as TEXTO_DP,e.ENTIDAD AS TEXTO_INST,f.ENUNCIADO as TEXTO_POA,b.TEXT as COD_PRE_TEXTO,g.TEXT as FF_TEXTO,UE(a.ID_DP,0) as TEXTO_UNIDAD_UE,';
lcSQL=lcSQL||'UR(a.ID_DP,0) AS TEXTO_UNIDAD_UR,';
lcSQL=lcSQL||'(case when (aumt.AUMENTO_T) is null then 0 else (aumt.AUMENTO_T) END ) AS AUMENTO_T,';
lcSQL=lcSQL||'(case when (dist.DISMINU_T) is null then 0 else (dist.DISMINU_T) END ) AS DISMINU_T,';
lcSQL=lcSQL||'(case when (crr_man_t.precomp_T) is null then 0 else (crr_man_t.precomp_T) END ) AS precomp_T,';
lcSQL=lcSQL||'(case when (crr_man_t.Compro_T) is null then 0 else (crr_man_t.Compro_T) END ) AS Compro_T,';
lcSQL=lcSQL||'(case when (crr_man_t.CAUSADO_T) is null then 0 else (crr_man_t.CAUSADO_T) END ) AS CAUSADO_T,';
lcSQL=lcSQL||'(case when (crr_man_t.PAGADO_T) is null then 0 else (crr_man_t.PAGADO_T) END ) AS PAGADO_T,';
lcSQL=lcSQL||'(case when (crr_aut_t.precomp_T) is null then 0 else (crr_aut_t.precomp_T) END ) AS precomp_T_AU,';
lcSQL=lcSQL||'(case when (crr_aut_t.Compro_T) is null then 0 else (crr_aut_t.Compro_T) END ) AS Compro_T_AU,';
lcSQL=lcSQL||'(case when (crr_aut_t.CAUSADO_T) is null then 0 else (crr_aut_t.CAUSADO_T) END ) AS CAUSADO_T_AU,';
lcSQL=lcSQL||'(case when (crr_aut_t.PAGADO_T) is null then 0 else (crr_aut_t.PAGADO_T) END ) AS PAGADO_T_AU,';
lcSQL=lcSQL||'(case when (cg1.monto+cg2.monto) is null then 0 else (cg1.monto+cg2.monto) END ) AS CONGELA ';
lcSQL=lcSQL||'FROM (SELECT a.EJERCICIO,a.ID_INST,a.ID_UEL,a.ID_DP,a.ID_POA,a.ID_UAD,a.ID_PUC,a.ID_FF,a.COD_PRE,a.ESTIMADO as MONTO_O ';
lcSQL=lcSQL||'FROM PFEGRESO_D a ';
lcSQL=lcSQL||'INNER JOIN PLPOAEJE b ON a.EJERCICIO=b.EJERCICIO and a.EJERCICIO2=b.EJERCICIO2 and a.ID_POA=b.ID_POA ';
lcSQL=lcSQL||'WHERE RTRIM(a.EJERCICIO)='||quote_literal(cboEJERCICIO)||' AND a.ID_INST='||txtINST;
If NOT cboEJERCICIO2 ISNULL Then lcSQL=lcSQL||' and RTRIM(a.EJERCICIO2)='||quote_literal(cboEJERCICIO2); End if;
If NOT txtUE ISNULL Then lcSQL=lcSQL||' AND b.ID_UE= '||txtUE; End if;
If NOT txtDP ISNULL Then lcSQL=lcSQL||' AND a.ID_DP= '||txtDP; End if;
If NOT txtPUC ISNULL Then lcSQL=lcSQL||' AND a.ID_PUC='||txtPUC; End if;
If NOT txtFF ISNULL Then lcSQL=lcSQL||' AND a.ID_FF= '||txtFF; End if;
If NOT txtUAD ISNULL Then lcSQL=lcSQL||' AND a.ID_UAD='||txtUAD; End if;
If NOT txtUAD2 ISNULL Then lcSQL=lcSQL||' AND a.ID_UAD2='||txtUAD2; End if;
If NOT txtUEL ISNULL Then lcSQL=lcSQL||' AND a.ID_UEL='||txtUEL; End if;
If NOT txtPOA ISNULL Then lcSQL=lcSQL||...