diff --git a/PROYECTO/cgdir/cgprcs024.4gl b/PROYECTO/cgdir/cgprcs024.4gl index 2c02c9b..be025e9 100644 --- a/PROYECTO/cgdir/cgprcs024.4gl +++ b/PROYECTO/cgdir/cgprcs024.4gl @@ -126,7 +126,7 @@ FUNCTION cgprcs024() FROM cgtb00004 a WHERE (a.ref =a.ref AND a.tipo<>3) AND (a.cuenta_no = gastos[idx].cuenta_no) AND - (a.fecha BETWEEN fecha_ini_act AND fecha.desde ) AND + (a.fecha >= fecha_ini_act AND a.fecha < fecha.desde) AND -- antes BETWEEN ... AND desde: el dia 'desde' se sumaba tambien en el rango (doble) (a.departamento = cdepartamentos) AND a.status_t is NULL --227-1322-2108 diff --git a/PROYECTO/cgdir/cgprrp009.4gl b/PROYECTO/cgdir/cgprrp009.4gl index dfdfbbe..bf472b4 100644 --- a/PROYECTO/cgdir/cgprrp009.4gl +++ b/PROYECTO/cgdir/cgprrp009.4gl @@ -127,20 +127,21 @@ END MAIN # (7) y tienen el departamento nulo. # Este UPDATE se reversa al momento de acabar el reporte - UPDATE cgtb00004 set departamento = 0 - WHERE departamento is null and cuenta_no[1] = "7" + -- G6: antes UPDATE cgtb00004 SET departamento = 0 (y al final lo revertia a NULL): modificaba + -- el mayor real, no se revertia si no habia datos y convertia en NULL los 0 legitimos. + -- Ahora el departamento nulo se trata como 0 en las consultas (ISNULL/NVL). DELETE FROM cgtb00016 WHERE ano =p_ano AND mes = p_mes AND programa='cgprrp013.4rp' AND estado_a <> '275' LET selec = - "SELECT distinct a.cuenta_no,b.descripcion,d.dpto,a.departamento,c.nom_dpto ", + "SELECT distinct a.cuenta_no,b.descripcion,d.dpto,ISNULL(a.departamento,0),c.nom_dpto ", "FROM cgtb00001 b, cgtb00004 a, chequeo d,adtb00001 c ", "WHERE (a.cuenta_no = b.cuenta_no) AND (SUBSTRING(b.cuenta_no,1,1) = '7') AND ", - " (a.departamento = d.departamento) AND a.status_t IS NULL AND ", - " (a.departamento = c.departamento) AND ", + " (ISNULL(a.departamento,0) = d.departamento) AND a.status_t IS NULL AND ", + " (ISNULL(a.departamento,0) = c.departamento) AND ", " (a.fecha <= ?) AND b.status_t is null AND ",criterio CLIPPED, - "ORDER BY d.dpto,a.departamento,a.cuenta_no" + "ORDER BY d.dpto,ISNULL(a.departamento,0),a.cuenta_no" DISPLAY "<<>>" AT 19,14 ATTRIBUTE(blue) @@ -189,12 +190,10 @@ END MAIN END IF OUTPUT TO REPORT gastos_gral(gastos.*,fecha_inicial,fecha_final,p_ano, ano_ant) - LET idx1 = idx+1 + LET idx1 = idx1+1 -- antes idx+1: idx1 no avanzaba y START REPORT se repetia por fila END FOREACH IF idx1 > 1 THEN FINISH REPORT gastos_gral - UPDATE cgtb00004 set departamento = NULL - WHERE departamento = 0 and cuenta_no[1] = "7" ELSE CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS","INFO") END IF @@ -314,18 +313,18 @@ REPORT gastos_gral(x,fecha1,fecha2,p_ano1,ano_ant1) FROM cgtb00004 a WHERE (a.ref NOT MATCHES "ED.99-999/12*") and (a.cuenta_no = x.cuenta_no) and (a.fecha BETWEEN fecha4 AND fecha5) and - (a.departamento = x.departamento) and a.status_t is null + (a.departamento = x.departamento OR (a.departamento IS NULL AND x.departamento = 0)) and a.status_t is null SELECT SUM(a.debito-a.credito) INTO x.valor FROM cgtb00004 a WHERE (a.cuenta_no = x.cuenta_no) and (a.fecha BETWEEN fecha_inicial AND fecha_final) and - (a.departamento = x.departamento) and a.status_t is null + (a.departamento = x.departamento OR (a.departamento IS NULL AND x.departamento = 0)) and a.status_t is null SELECT SUM(a.debito-a.credito) INTO x.valor_ant FROM cgtb00004 a WHERE (a.ref != ent_diario) and (a.cuenta_no = x.cuenta_no) and (a.fecha < fecha_inicial) and - (a.departamento = x.departamento) and a.status_t is null + (a.departamento = x.departamento OR (a.departamento IS NULL AND x.departamento = 0)) and a.status_t is null IF x.ano_ante is null THEN LET x.ano_ante = 0 diff --git a/PROYECTO/cgdir/cgprrp014.4gl b/PROYECTO/cgdir/cgprrp014.4gl index 054afc3..935bb99 100644 --- a/PROYECTO/cgdir/cgprrp014.4gl +++ b/PROYECTO/cgdir/cgprrp014.4gl @@ -302,7 +302,7 @@ REPORT mayor_ref(x,fecha1,fecha2) LET total1 = balance LET total2 = 0 ELSE - LET total2 = balance + LET total2 = balance * -1 -- saldo acreedor va POSITIVO a la columna CR (antes negativo: restaba en los totales) LET total1 = 0 END IF IF balance != 0 OR balance_final != 0 THEN diff --git a/PROYECTO/irdir/irprrp002.4gl b/PROYECTO/irdir/irprrp002.4gl index e18bb62..5c376d0 100644 --- a/PROYECTO/irdir/irprrp002.4gl +++ b/PROYECTO/irdir/irprrp002.4gl @@ -210,7 +210,7 @@ END FUNCTION LET hora = time PRINT COLUMN 3, comp_off,negrillas_on PRINT COLUMN 1, "irprrp002", - COLUMN 17, " E U R O S T O N E, S. A.", + COLUMN 31, p_companias.nombre CLIPPED, -- antes "E U R O S T O N E" fijo COLUMN 75, "Pag. ",pageno using "###" PRINT COLUMN 17, " Sistema de Inventario de Repuestos ", COLUMN 75, today using "dd/mm/yyyy" @@ -259,7 +259,7 @@ END FUNCTION END IF PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&&","-", - x.cod_tipo USING "&&","-",x.cod_sec USING "&&&"," ", + x.cod_tipo USING "&&","-",x.cod_sec USING "&&&&"," ", -- &&& daba *** con sec >= 1000 x.descrip_esp CLIPPED," ",x.descrip_ing, COLUMN 91, x.unidad_med, COLUMN 100, x.dia_llegada using "###", diff --git a/PROYECTO/irdir/irprrp003.4gl b/PROYECTO/irdir/irprrp003.4gl index bf32803..62a9163 100644 --- a/PROYECTO/irdir/irprrp003.4gl +++ b/PROYECTO/irdir/irprrp003.4gl @@ -43,7 +43,7 @@ FUNCTION irprrp03() cantidad_2 LIKE irtb00006.cantidad_2, cod_mov LIKE irtb00006.cod_mov, descrip_mov LIKE irtb00005.descrip_mov, - codigo CHAR(7), + codigo CHAR(8), balance_in DECIMAL(12,2) END RECORD @@ -107,7 +107,9 @@ LET selec = "FROM irtb00006 a, irtb00002 b, irtb00005 c ", "WHERE ",criterio clipped," AND a.cod_n=b.cod_n AND a.cod_grupo=b.cod_grupo ", "AND a.cod_tipo=b.cod_tipo AND a.cod_sec=b.cod_sec AND c.cod_mov=a.cod_mov ", - "AND b.status_t is NULL AND CONVERT(CHAR(10),a.fecha,103) between '", datos_cons.fech_in USING 'dd/mm/yyyy', "' and '",datos_cons.fech_fi USING 'dd/mm/yyyy', "' AND a.status_t IS NULL ", + -- antes CONVERT(CHAR(10),a.fecha,103) BETWEEN 'dd/mm/yyyy' AND ...: comparaba TEXTO y traia + -- movimientos de cualquier ano cuyo dd/mm cayera en el rango -> fecha real con parametros + "AND b.status_t is NULL AND a.fecha BETWEEN ? AND ? AND a.status_t IS NULL ", "ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.fecha" # Abrir el archivo del spool para la impresion @@ -117,17 +119,16 @@ LET selec = DISPLAY selec PREPARE busca FROM selec DECLARE accion CURSOR FOR busca - OPEN accion - + LET selec1 = "SELECT COUNT(*) FROM irtb00006 a, irtb00002 b, irtb00005 c ", "WHERE ",criterio clipped," AND a.cod_n=b.cod_n AND a.cod_grupo=b.cod_grupo ", "AND a.cod_tipo=b.cod_tipo AND a.cod_sec=b.cod_sec AND c.cod_mov=a.cod_mov ", - "AND b.status_t is NULL AND a.fecha between '", datos_cons.fech_in USING 'mm/dd/yyyy', "' and '",datos_cons.fech_fi USING 'mm/dd/yyyy', "' AND a.status_t IS NULL " + "AND b.status_t is NULL AND a.fecha BETWEEN ? AND ? AND a.status_t IS NULL " PREPARE comando1 FROM selec1 DECLARE busca1 CURSOR FOR comando1 - OPEN busca1 + OPEN busca1 USING datos_cons.fech_in, datos_cons.fech_fi FETCH busca1 INTO regi LET p_param = "S" @@ -146,14 +147,14 @@ LET selec1 = # Loop para la busqueda de los movimientos de los codigos especificados - FOREACH accion INTO transacc.* + FOREACH accion USING datos_cons.fech_in, datos_cons.fech_fi INTO transacc.* CALL termometro(regi,p_param) LET p_param = "N" LET transacc.codigo = transacc.cod_n USING "&", transacc.cod_grupo USING "&", transacc.cod_tipo USING "&&", - transacc.cod_sec USING "&&&" + transacc.cod_sec USING "&&&&" -- &&& = *** con sec >= 1000: mezclaba articulos en un grupo LET transacc.balance_in = 0 @@ -185,7 +186,7 @@ END FUNCTION cantidad_2 LIKE irtb00006.cantidad_2, cod_mov LIKE irtb00006.cod_mov, descrip_mov LIKE irtb00005.descrip_mov, - codigo CHAR(7), + codigo CHAR(8), balance_in DECIMAL(12,2) END RECORD @@ -203,6 +204,7 @@ END FUNCTION entrada,salida DECIMAL(12,2) OUTPUT LEFT MARGIN 0 + RIGHT MARGIN 170 -- el balance se imprime hasta la col. 166; con el default (132) GRE lo cortaba ORDER BY x.codigo FORMAT @@ -273,7 +275,7 @@ END FUNCTION PRINT COLUMN 1, x.cod_n USING "&","-", COLUMN 3, x.cod_grupo USING "&","-", COLUMN 5, x.cod_tipo USING "&&","-", - COLUMN 8, x.cod_sec USING "&&&", + COLUMN 8, x.cod_sec USING "&&&&", COLUMN 15, x.descrip_esp, COLUMN 45, x.unidad_med, COLUMN 132, "Inicial ---> ", diff --git a/PROYECTO/irdir/irprrp004.4gl b/PROYECTO/irdir/irprrp004.4gl index 0ae3a4f..8c69005 100644 --- a/PROYECTO/irdir/irprrp004.4gl +++ b/PROYECTO/irdir/irprrp004.4gl @@ -56,7 +56,7 @@ FUNCTION irprrp04() RETURN END IF - CONSTRUCT criterio ON intb00005.cod_mov FROM cod_mov + CONSTRUCT criterio ON irtb00005.cod_mov FROM cod_mov -- antes intb00005 (tabla de MP): con filtro el SQL sobre irtb00005 fallaba IF int_flag THEN LET numero_msg = 2 diff --git a/PROYECTO/irdir/irprrp006.4gl b/PROYECTO/irdir/irprrp006.4gl index e68caf3..8bcfc5e 100644 --- a/PROYECTO/irdir/irprrp006.4gl +++ b/PROYECTO/irdir/irprrp006.4gl @@ -68,7 +68,7 @@ FUNCTION irprrp006() " b.descrip_ing,b.unidad_med,b.exist_min,ISNULL(sum(c.cantidad_2),0) ", "FROM irtb00002 b,irtb00006 c ", "WHERE ",criterio CLIPPED, - " AND (c.cod_n = c.cod_n AND b.cod_Grupo = c.cod_Grupo AND b.cod_tipo = c.cod_tipo AND b.cod_sec = c.cod_sec) ", + " AND (b.cod_n = c.cod_n AND b.cod_Grupo = c.cod_Grupo AND b.cod_tipo = c.cod_tipo AND b.cod_sec = c.cod_sec) ", " AND c.status_t IS NULL " , " AND b.status_t IS NULL ", "GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.exist_min,b.descrip_esp,b.descrip_ing,b.unidad_med ", @@ -79,7 +79,7 @@ FUNCTION irprrp006() " b.descrip_ing,b.unidad_med,b.exist_min,ISNULL(sum(c.cantidad_2),0) ", "FROM irtb00002 b,irtb00006 c ", "WHERE ",criterio CLIPPED, - " AND (c.cod_n = c.cod_n AND b.cod_Grupo = c.cod_Grupo AND b.cod_tipo = c.cod_tipo AND b.cod_sec = c.cod_sec) ", + " AND (b.cod_n = c.cod_n AND b.cod_Grupo = c.cod_Grupo AND b.cod_tipo = c.cod_tipo AND b.cod_sec = c.cod_sec) ", " AND c.status_t IS NULL " , " AND b.status_t IS NULL ", "GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.exist_min,b.descrip_esp,b.descrip_ing,b.unidad_med ", diff --git a/PROYECTO/irdir/irprrp009.4gl b/PROYECTO/irdir/irprrp009.4gl index 30c3cb7..078ecbe 100644 --- a/PROYECTO/irdir/irprrp009.4gl +++ b/PROYECTO/irdir/irprrp009.4gl @@ -71,7 +71,10 @@ FUNCTION irprrp009() OPEN FORM edfmrp118 FROM "irfmrp009" DISPLAY FORM edfmrp118 - CONSTRUCT BY NAME criterio ON cod_mov,cod_n,cod_grupo,cod_tipo,cod_sec + -- columnas calificadas con b. (irtb00006): sin prefijo, cod_n/cod_grupo/cod_tipo/cod_sec + -- son ambiguas en el JOIN con irtb00002 y cualquier filtro por codigo fallaba + CONSTRUCT criterio ON b.cod_mov,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec + FROM cod_mov,cod_n,cod_grupo,cod_tipo,cod_sec BEFORE CONSTRUCT CALL ircmovimientos() AFTER CONSTRUCT diff --git a/PROYECTO/irdir/irprrp045.4gl b/PROYECTO/irdir/irprrp045.4gl index fef5ba1..7944ec0 100644 --- a/PROYECTO/irdir/irprrp045.4gl +++ b/PROYECTO/irdir/irprrp045.4gl @@ -110,13 +110,16 @@ FUNCTION irprrp045() ##### Selecionando la informacion requerida para la salida de ##### informacion IF departamento IS NULL THEN - LET selec = + -- Sin departamento: solo los departamentos asignados al usuario (adtb00056), igual + -- que el combo; antes dejarlo vacio mostraba el consumo de TODOS los departamentos. + LET selec = "SELECT 'REPUESTOS',a.sec_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ", " c.descrip_esp,c.unidad_med,a.fecha,a.num_doc,cast(d.cod_mov as char(5))+'-'+d.descrip_mov, a.cantidad_2*-1 ", - "FROM irtb00006 a,adtb00001 b,irtb00002 c,irtb00005 d ", + "FROM irtb00006 a,adtb00001 b,irtb00002 c,irtb00005 d ", "WHERE a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ", " a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec AND ", - " a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ", + " a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ", + " a.sec_a IN (SELECT u.departamento_visualiza FROM adtb00056 u WHERE u.usuario = '", usuarios CLIPPED, "') AND ", " a.sec_a = b.departamento AND a.status_t is NULL AND ", " a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ", criterio CLIPPED , @@ -126,12 +129,13 @@ IF departamento IS NULL THEN "FROM intb00006 a,adtb00001 b,intb00001 c,intb00005 d ", "WHERE a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND ", " a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec AND ", - " a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ", + " a.cod_mov = d.cod_mov AND d.consumo = 'SI' AND ", + " a.depto_a IN (SELECT u.departamento_visualiza FROM adtb00056 u WHERE u.usuario = '", usuarios CLIPPED, "') AND ", " a.depto_a = b.departamento AND a.status_t is NULL AND ", " a.fecha BETWEEN ? AND ? AND a.cantidad_2 < 0 AND ", criterio CLIPPED, - - " ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec" + + " ORDER BY a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec" ELSE LET selec = "SELECT 'REPUESTOS',a.sec_a as departamento,b.nom_dpto,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",