JSOTO QA G6 (.250): arreglos en reportes de Repuestos y Contabilidad

Repuestos (irdir):
- irprrp002: cod_sec USING '&&&&' (con '&&&' salia *** en sec >= 1000); encabezado
  con companias.nombre (estaba fijo "EUROSTONE").
- irprrp003: filtro de fecha real con parametros (antes CONVERT(...,103) BETWEEN texto:
  traia movimientos de cualquier ano); codigo CHAR(8)/'&&&&' (los sec >= 1000 se
  mezclaban en un mismo grupo y saldo); RIGHT MARGIN 170 (saldo y balance cortados).
- irprrp004: CONSTRUCT sobre irtb00005.cod_mov (antes intb00005: fallaba con filtro).
- irprrp006: JOIN b.cod_n = c.cod_n (antes c.cod_n = c.cod_n).
- irprrp009: CONSTRUCT calificado con b. (columnas ambiguas en el JOIN).
- irprrp045: sin departamento solo muestra los departamentos del usuario (adtb00056).

Contabilidad (cgdir):
- cgprrp014: saldo de apertura acreedor va positivo a la columna CR (restaba en totales).
- cgprrp009: ya no modifica cgtb00004 (UPDATE departamento=0 y reversion); el NULL se
  trata como 0 en las consultas; corrige idx1 (START REPORT se repetia por fila).
- cgprcs024: el acumulado anterior termina el dia antes de "desde" (se contaba doble).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-16 16:50:08 -04:00
co-authored by Claude Opus 5.5
parent 705fadfdb4
commit 0991743a80
9 changed files with 44 additions and 36 deletions
+2 -2
View File
@@ -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 "###",
+12 -10
View File
@@ -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 ---> ",
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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 ",
+4 -1
View File
@@ -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
+10 -6
View File
@@ -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, ",