Uso de Funcion que retorna Conjunto de Datos - Postgresql en VFP

489 views
Skip to first unread message

Yvan GMail

unread,
Jul 21, 2012, 11:53:29 AM7/21/12
to publice...@googlegroups.com, mundovis...@googlegroups.com

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

 

HernanCano

unread,
Jul 22, 2012, 12:59:07 AM7/22/12
to publice...@googlegroups.com, mundovis...@googlegroups.com

Si estás tratando con TypeOf y con RefCursor, parece que estás en el lugar equivocado.

Sí estamos en Visual, pero FoxPro.

Yvan Carranza

unread,
Jul 23, 2012, 10:04:56 AM7/23/12
to publice...@googlegroups.com, mundovis...@googlegroups.com
Hola Hernan
el tema es q no se como recupers data desde vfp.. segun dicen q se hace con select * from funcion del pgsql.. pero si hago refcursor.. alguien ha usado y recuperado data de vfp.. igual me hice un sp con insert.. el ultimp parametro.. numeric.. y al dina en vfp.. lo llamaba select *from funcinserta.. el valor numerico q enviaba era 8.998 pero me decia q no funcionaba.. pq no existia y pedia un float.. en fin q complicado los stores con vfp..


El domingo, 22 de julio de 2012, carlos SALCEDO <caros...@hotmail.com> escribió:
> Buenos dias
> Estos dos enlaces te serviran para tener claridad de algunas cosas
> http://www.postgresql.org.es/node/297 
> http://www.postgresql.org.es/node/352 
> Saludos
> Carlos
>
> ________________________________
> Date: Sat, 21 Jul 2012 21:59:07 -0700
> From: jherna...@gmail.com
> To: publice...@googlegroups.com
> CC: mundovis...@googlegroups.com
> Subject: [vfp] Re: Uso de Funcion que retorna Conjunto de Datos - Postgresql en VFP
> --
>  
>  
>  
>
> --
>  
>  
>  
>

Yvan Carranza

unread,
Jul 23, 2012, 10:00:06 PM7/23/12
to publice...@googlegroups.com, mundovis...@googlegroups.com
Hola Mauricio,
Yo trabajo con SQL Server y la llamada es super facil, casi igual a MySQL.. en Oracle uso call.. pero para postgresl dicen que debo utilizar
 
CadSQL  = " SELECT * mifuncion_insertar(?etc?etc"
 
El tema es que alli hago insert o update.. pero mi problema mas grande es recuperar la data... Por eso pregfuntaba si alguien  que trabaje con pgsql y vfp.. haciendo uso de funciones que retornen un conjunto de datos.. .. ya que primero para armar la funcion desde pgsql.. usan un typeof o un refcursor.. pero no se como recuperar la data en ambos casos..   No encuentro muchos ejemplo..
 
Vi que me dieron un link de funciones.. pero lo que necesito es como interactuo dichos resultado con vfp.
 
A parte del problema que tengo con el retorno de conjunto de datos.. osea obtener el resultado del select de mi store... Me encontre con otro problema... me hice una funcion de insertar..  y cuando probe con insertar solo datos de texto.. chevere.. paso.. pero cuando quise insertar un valor numerico de 4 decimales.. me decia que la funcion no existia... osea como si el ultimo parametro no era el tipo de dato, que esperaba,.pero el campo es numerico en pgsql.. y en vfp un numerico simple.. En fin.. creo que hasta aqui llego con pgsql..
 
 
Gracias por su compresion.

 
El 23 de julio de 2012 10:51, mpulla <jmaur...@yahoo.es> escribió:
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 lData1
lData1 = 8.998
lcSql = [funcinserta ?lData1]
SQLEXEC(lih, lcSql)


Saludos.
Mauricio

--
 
 
 

HernanCano

unread,
Jul 24, 2012, 1:48:30 AM7/24/12
to Mundo Visual FoxPro
En tu réplica a mí, hablas de "...q complicado los stores..."
Y en la respu a mauricio mencionas "...osea
obtener el resultado del select de mi store...", y tambiñen "...me
hice un sp con insert..."

Parece que hablas de "store procedures" procedimientos almacenados.
Voy a hablar de éso.
A mí se me complica hablar del tema, no tengo suficiente experiencia,
pues no uso procedimientos almacenados, pero sé qué son.

Si ya haces SELECT * FROM MAEDATOS en SQL Server y MySQL, estás
ganado, pues lo mismo podrás hacerlo en cualq otro motor (diferencias
mínimas que habrás captado entre SQL Server y MySQL.

Pero si te metes con procedimientos almacenados, te complicas pues
necesitarás la sintaxis específica de cada motor. Si ya lo has hecho
con dos motores diferentes, llevas ganado buen trecho para usar otro
motor, pero necesitarás al menos CREAR EL PROCEDIMIENTO ALMACENADO en
el motor nuevo: si logras ésto, tienes el 90% de lo que te falte.

Sin embargo la sintaxis de lo que estés utilizando, nos la estás
mostrando de forma extraña (1) 2...retornar el conjunto de datos al
menos con refcursor...", (2) "...select * from funcion...", (3)
"...pero si hago refcursor...", (4) "...me hice un sp con insert.. el
ultimp parametro.. numeric.. y al dina en vfp...", (5) "...lo llamaba
select *from funcinserta...", (6) "...me decia q no funcionaba.. pq no
existia y pedia un float..."

Con respecto al (6) ¿quién decía? quién pedía? el "visual"? ¿el
administrador de PostgreSQL? ¿o VFP cuando ejecutabas una algo
sentencia SQLEXEC?

Sé claro en tu inquietud para poder responderte.

(7) "...pero cuando quise insertar un valor numerico de 4 decimales..
me decia que la funcion no existia... osea como si el ultimo parametro
no era el tipo de dato, que esperaba,.pero el campo............."

---> pasa la instrucción SELECT y/o todo el código SQLEXEC que estás
ejecutando.

Chao.



On 23 jul, 09:04, Yvan Carranza <yvan.carra...@gmail.com> wrote:
> Hola Hernan
> el tema es q no se como recupers data desde vfp.. segun dicen q se hace con
> select * from funcion del pgsql.. pero si hago refcursor.. alguien ha usado
> y recuperado data de vfp.. igual me hice un sp con insert.. el ultimp
> parametro.. numeric.. y al dina en vfp.. lo llamaba select *from
> funcinserta.. el valor numerico q enviaba era 8.998 pero me decia q no
> funcionaba.. pq no existia y pedia un float.. en fin q complicado los
> stores con vfp..
>
> El domingo, 22 de julio de 2012, carlos SALCEDO <carosam1...@hotmail.com>
> escribió:
>
>
>
>
>
>
>
> > Buenos dias
> > Estos dos enlaces te serviran para tener claridad de algunas cosas
> >http://www.postgresql.org.es/node/297
> >http://www.postgresql.org.es/node/352
> > Saludos
> > Carlos
>
> > ________________________________
> > Date: Sat, 21 Jul 2012 21:59:07 -0700
> > From: jhernanca...@gmail.com

Hector R. De los Santos

unread,
Jul 24, 2012, 10:43:31 AM7/24/12
to publice...@googlegroups.com, mundovis...@googlegroups.com

Yo tengo varios proyectos con VFP + PostgreSQL y utilizo mucho los SP (varios que retornan conjunto de datos). Hasta ahora me ha ido bien.
Que necesitas?



:: HDS Consultores TI
Servidores | Redes | Programacion | GNU/Linux | PostgreSQL
Web: http://hdsconsultores.net
Blog: http://codigohds.com
Linux User #:320363


El 24 de julio de 2012 09:44, mpulla <jmaur...@yahoo.es> escribió:

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

--
 
 
 

Yvan Gmail

unread,
Jul 24, 2012, 9:29:48 PM7/24/12
to mundovis...@googlegroups.com
Hola Hernan,

Mi problema es con los sp y vfp.. Por parte de pgsql.. el tema que hay
varias formas de recuperar la data en un conjunto de resultado.. y el tema
es como se recuperar en VFP..

Recuperar data con un select directamente o hacer insert directamente con
SQLEXEC no me da problemas. Pero quiero cambiar a uso de stores ya sea para
inserción, actualización o recuperación de datos.


Respecto al problema que tuve para insertar en PGSQL mediante un store..
aquí va un ejemplo..

CREATE OR REPLACE FUNCTION sp_vsprdb03_insertar(lc_codcia character,
lc_serie character, lc_numero character, lc_version character, lc_codigoprod
character, lc_tipodosis character, ln_factor numeric)
RETURNS void AS
$BODY$
BEGIN
INSERT INTO
vsprdb03(codcia,serie,numero,version,codigoprod,tipodosis,factor)

VALUES(lc_codcia,lc_serie,lc_numero,lc_version,lc_codigoprod,lc_tipodosis,ln
_factor);
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION sp_vsprdb03_insertar(character, character, character,
character, character, character, numeric)
OWNER TO postgres;


Asi lo llamo en VFP.. el problemita es que no me reconoce la función.. pq
esperaba una float.. "Esto me recuerda a los errores de c++, con el tema de
funciones sobrecargadas... la misma función.. pero con diferentes
parámetros... "


CadSQL = " SELECT
sp_vsprdb13_Insertar('01','001','000006','01','100','01',2.36) "
iRetorno = SQLEXEC(db_System,CadSQL)
IF iRetorno = -1 THEN
MESSAGEBOX(cDataError(),0+48,cTituloMsgBox)
ENDIF


Pero ya me di por vencido.. creo que no hay mucha info del tema, o no se
buscar.. Al menos con MySQL, SQL Server, Oracle la sintaxis de llamada desde
vfp y armado del store en la base de datos.. es mas simple, no se pq pgsql
se complico.



-----Mensaje original-----
De: mundovis...@googlegroups.com
[mailto:mundovis...@googlegroups.com] En nombre de HernanCano
Enviado el: martes, 24 de julio de 2012 0:49
Para: Mundo Visual FoxPro
Asunto: [Mundo Visual FoxPro] Re: Uso de Funcion que retorna Conjunto de
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.

Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com


Guillermo MDQ

unread,
Jun 7, 2013, 11:10:58 PM6/7/13
to publice...@googlegroups.com, mundovis...@googlegroups.com
Que buen chiste para un viernes !!  :)

Saludos


El viernes, 7 de junio de 2013 17:24:39 UTC-3, Abel Lopez escribió:
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||...
Reply all
Reply to author
Forward
0 new messages