{ PROGRAMA: CCPRCS006 OBJETIVO: Consultar los balances de los tipos de clientes en diferentes monedas DESARROLLADO POR: ING. JUAN SOTO FECHA DESARROLLO: ENERO 12, 2022 } GLOBALS "ccprgb000.4gl" MAIN DEFER INTERRUPT CALL STARTLOG("ccprmt01.log") CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT to "smarmotech" USER usuarios USING clave CALL ccprcs006() END MAIN FUNCTION ccprcs006() DEFINE data DYNAMIC ARRAY OF RECORD ventas VARCHAR(50), tipo_cliente INT, valorOriginal,debitoOriginal,creditoOriginal,balanceAct,valorLocal,debitoLocal,creditoLocal,balanceLocal DEC(12,2), idventas SMALLINT END RECORD, fecha1,fecha2 DATE, criterio,selec STRING, tasa DEC(12,2), idx INT call ui.Interface.loadStyles("formularios") OPEN WINDOW w1 WITH FORM "ccfmcs006" DIALOG ATTRIBUTES(UNBUFFERED, FIELD ORDER FORM) CONSTRUCT criterio ON a.ventas,b.tipo_cliente FROM ventas1,tipo_cliente2 END CONSTRUCT INPUT BY NAME fecha1,fecha2 AFTER INPUT NEXT FIELD ventas1 END INPUT ON ACTION genera ATTRIBUTE(TEXT="Busca Informacion", IMAGE='find') IF fecha1 IS NULL THEN CALL msg(16) NEXT FIELD fecha1 END IF IF fecha2 IS NULL THEN CALL msg(16) NEXT FIELD fecha2 END IF IF fecha2 < fecha1 THEN CALL msg(51) NEXT FIELD fecha1 END IF DELETE FROM ccprcs006 { "INSERT INTO ccprcs006 ", " SELECT a.descripcion,b.tipo_cliente,0,0,0,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b WHERE a.ventas = b.ventas AND b.clientes_activos = 'SI' AND ",criterio CLIPPED, " UNION SELECT a.descripcion,b.tipo_cliente, SUM(c.valor+c.monto_desc),0,0,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c WHERE a.ventas = b.ventas AND (b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND (c.fecha_orig < ?) AND (c.tipo_doc NOT IN ('AV','AP')) AND c.status_t IS NULL AND b.clientes_activos ='SI' AND ", criterio CLIPPED, " GROUP BY a.descripcion,a.ventas,b.tipo_cliente UNION SELECT a.descripcion,b.tipo_cliente,SUM(c.valor+c.monto_desc)*-1,0,0,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c WHERE a.ventas = b.ventas AND (b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND (c.fecha_orig 0 AND c.status_t IS NULL AND b.clientes_activos ='SI' AND ", criterio CLIPPED, " GROUP BY a.descripcion,a.ventas,b.tipo_cliente UNION SELECT a.descripcion,b.tipo_cliente,0,0,SUM(c.valor+c.monto_desc),0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c WHERE a.ventas = b.ventas AND (b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND (c.fecha_orig BETWEEN ? AND ?) AND (c.tipo_doc NOT IN ('AV','AP')) AND c.valor < 0 AND c.status_t IS NULL AND b.clientes_activos ='SI' AND ", criterio CLIPPED, " GROUP BY a.descripcion,a.ventas,b.tipo_cliente ORDER BY a.descripcion,b.tipo_cliente " } LET selec = "INSERT INTO ccprcs006 SELECT a.descripcion,b.tipo_cliente, SUM(c.valor+c.monto_desc),0,0,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c WHERE a.ventas = b.ventas AND (b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND (c.fecha_orig < ?) AND (c.tipo_doc NOT IN ('AV','AP')) AND c.status_t IS NULL AND b.clientes_activos ='SI' AND ", criterio CLIPPED, " GROUP BY a.descripcion,a.ventas,b.tipo_cliente UNION SELECT a.descripcion,b.tipo_cliente,SUM(c.valor+c.monto_desc)*-1,0,0,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c WHERE a.ventas = b.ventas AND (b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND (c.fecha_orig 0 AND c.status_t IS NULL AND b.clientes_activos ='SI' AND ", criterio CLIPPED, " GROUP BY a.descripcion,a.ventas,b.tipo_cliente UNION SELECT a.descripcion,b.tipo_cliente,0,0,SUM(c.valor+c.monto_desc)*-1,0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c WHERE a.ventas = b.ventas AND (b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND (c.fecha_orig BETWEEN ? AND ?) AND (c.tipo_doc IN ('AV')) AND (c.num_doc=c.aplica_a) AND c.status_t IS NULL AND b.clientes_activos ='SI' AND ", criterio CLIPPED, " GROUP BY a.descripcion,a.ventas,b.tipo_cliente UNION SELECT a.descripcion,b.tipo_cliente,0,0,SUM(c.valor+c.monto_desc),0,0,0,a.ventas FROM vetb00061 a,vetb00060 b,cctb00001 c WHERE a.ventas = b.ventas AND (b.tipo_cliente = c.tipo_cliente AND c.sec_cliente = c.sec_cliente) AND (c.fecha_orig BETWEEN ? AND ?) AND (c.tipo_doc NOT IN ('AV','AP')) AND c.valor < 0 AND c.status_t IS NULL AND b.clientes_activos ='SI' AND ", criterio CLIPPED, " GROUP BY a.descripcion,a.ventas,b.tipo_cliente ORDER BY a.descripcion,b.tipo_cliente " PREPARE comando FROM selec EXECUTE comando USING fecha1,fecha1,fecha1,fecha2,fecha1,fecha2,fecha1,fecha2 LET selec = "SELECT a.ventas,a.tipo_cliente,sum(a.valor_original),sum(a.debito_original), sum(a.credito_original),sum(a.valorLocal),sum(a.debitoLocal), sum(a.creditoLocal),a.ventas1 FROM ccprcs006 a GROUP BY a.ventas,a.tipo_cliente,a.ventas1 ORDER by a.ventas,a.tipo_cliente" PREPARE comando2 FROM selec DECLARE buscar CURSOR FOR comando2 # OPEN buscar USING fecha2,fecha2,fecha1,fecha2,fecha1,fecha2 LET idx = 1 FOREACH buscar INTO data[idx].ventas,data[idx].tipo_cliente,data[idx].valorOriginal,data[idx].debitoOriginal,data[idx].creditoOriginal, data[idx].valorLocal,data[idx].debitoLocal,data[idx].creditoLocal,data[idx].idventas SELECT ISNULL(a.tasa,1) INTO tasa FROM cgtb00084 a WHERE a.ano = YEAR(fecha2) AND a.mes =MONTH(fecha2) AND a.ventas =data[idx].idventas AND a.tipo_cliente = data[idx].tipo_cliente LET data[idx].valorLocal =data[idx].valorOriginal * tasa LET data[idx].debitoLocal = data[idx].debitoOriginal * tasa LET data[idx].creditoLocal = data[idx].creditoOriginal * tasa LET data[idx].balanceAct = data[idx].valorOriginal + data[idx].debitoOriginal + data[idx].creditoOriginal LET data[idx].balanceLocal = data[idx].balanceAct * tasa DISPLAY "data ",tasa," ",YEAR(fecha2)," ",MONTH(fecha2)," ",data[idx].tipo_cliente," ",data[idx].idventas LET idx = idx + 1 END FOREACH DISPLAY ARRAY data TO sdata.* END DISPLAY ON ACTION CANCEL EXIT dialog END DIALOG CLOSE WINDOW w1 END FUNCTION