Completa Buscar Documentos en inprmt036 y agrega inprmt066
- inprfu000.4gl: corrige reimprime()/busca_info() para que branchen correctamente segun el programa llamante (inprmt046 vs otros). Antes usaban siempre las variables de inprmt046 (otros_mov), causando errores en inprmt036. Se activa y corrige la logica que estaba comentada para el caso generico (Johnny autorizo completarla, confirmado que tampoco funcionaba en produccion). - inprmt066 (Anular Documentos): agrega formulario faltante y el campo Bodega (combo) que no existia. Ensancha el combo para legibilidad. Probado: anulacion de documento real, funciona.
This commit is contained in:
+161
-116
@@ -3,7 +3,8 @@ GLOBALS
|
||||
DEFINE nombre,apellido CHAR(30),
|
||||
xinserta CHAR(1),
|
||||
kprograma varchar(20),
|
||||
xdescrip_mov VARCHAR(50)
|
||||
xdescrip_mov VARCHAR(50),
|
||||
xcod_mov_tmp LIKE intb00005.cod_mov
|
||||
|
||||
FUNCTION reimprime(xprograma)
|
||||
DEFINE xprograma CHAR(20),
|
||||
@@ -41,148 +42,192 @@ FUNCTION reimprime(xprograma)
|
||||
LET xinserta = 'N'
|
||||
END IF
|
||||
|
||||
LET kprograma = xprograma
|
||||
|
||||
PREPARE breimprime FROM selec
|
||||
DECLARE bdocumento SCROLL CURSOR FOR breimprime
|
||||
OPEN bdocumento
|
||||
|
||||
FETCH FIRST bdocumento INTO otros_mov.cod_mov,xdescrip_mov,
|
||||
otros_mov.num_doc,otros_mov.fecha,
|
||||
datos1.depto_a,pnum_emp,otros_mov.bodega
|
||||
|
||||
IF kprograma = 'inprmt046' THEN
|
||||
FETCH FIRST bdocumento INTO otros_mov.cod_mov,xdescrip_mov,
|
||||
otros_mov.num_doc,otros_mov.fecha,
|
||||
datos1.depto_a,pnum_emp,otros_mov.bodega
|
||||
ELSE
|
||||
FETCH FIRST bdocumento INTO xcod_mov_tmp,xdescrip_mov,
|
||||
datos1.num_doc,datos1.fecha,
|
||||
datos1.depto_a,pnum_emp,datos1.bodega
|
||||
END IF
|
||||
|
||||
IF STATUS = NOTFOUND THEN
|
||||
CALL msg(3)
|
||||
RETURN
|
||||
END IF
|
||||
LET kprograma = xprograma
|
||||
CALL busca_info()
|
||||
|
||||
|
||||
MENU "NAVEGACION:"
|
||||
COMMAND "Siguiente" "Busca el siguiente documento"
|
||||
FETCH NEXT bdocumento INTO otros_mov.cod_mov,xdescrip_mov,
|
||||
otros_mov.num_doc,otros_mov.fecha,
|
||||
datos1.depto_a,pnum_emp,otros_mov.bodega
|
||||
IF kprograma = 'inprmt046' THEN
|
||||
FETCH NEXT bdocumento INTO otros_mov.cod_mov,xdescrip_mov,
|
||||
otros_mov.num_doc,otros_mov.fecha,
|
||||
datos1.depto_a,pnum_emp,otros_mov.bodega
|
||||
ELSE
|
||||
FETCH NEXT bdocumento INTO xcod_mov_tmp,xdescrip_mov,
|
||||
datos1.num_doc,datos1.fecha,
|
||||
datos1.depto_a,pnum_emp,datos1.bodega
|
||||
END IF
|
||||
CALL busca_info()
|
||||
|
||||
|
||||
COMMAND "Primero" "Busca el siguiente documento"
|
||||
FETCH FIRST bdocumento INTO otros_mov.cod_mov,xdescrip_mov,
|
||||
otros_mov.num_doc,otros_mov.fecha,
|
||||
datos1.depto_a,pnum_emp,otros_mov.bodega
|
||||
CALL busca_info()
|
||||
IF kprograma = 'inprmt046' THEN
|
||||
FETCH FIRST bdocumento INTO otros_mov.cod_mov,xdescrip_mov,
|
||||
otros_mov.num_doc,otros_mov.fecha,
|
||||
datos1.depto_a,pnum_emp,otros_mov.bodega
|
||||
ELSE
|
||||
FETCH FIRST bdocumento INTO xcod_mov_tmp,xdescrip_mov,
|
||||
datos1.num_doc,datos1.fecha,
|
||||
datos1.depto_a,pnum_emp,datos1.bodega
|
||||
END IF
|
||||
CALL busca_info()
|
||||
COMMAND "Anterior" "Busca el Registrosiguiente documento"
|
||||
FETCH PREVIOUS bdocumento INTO otros_mov.cod_mov,xdescrip_mov,
|
||||
otros_mov.num_doc,otros_mov.fecha,
|
||||
datos1.depto_a,pnum_emp,otros_mov.bodega
|
||||
IF kprograma = 'inprmt046' THEN
|
||||
FETCH PREVIOUS bdocumento INTO otros_mov.cod_mov,xdescrip_mov,
|
||||
otros_mov.num_doc,otros_mov.fecha,
|
||||
datos1.depto_a,pnum_emp,otros_mov.bodega
|
||||
ELSE
|
||||
FETCH PREVIOUS bdocumento INTO xcod_mov_tmp,xdescrip_mov,
|
||||
datos1.num_doc,datos1.fecha,
|
||||
datos1.depto_a,pnum_emp,datos1.bodega
|
||||
END IF
|
||||
CALL busca_info()
|
||||
COMMAND "Ultimo" "Busca el Ultimo Documento"
|
||||
FETCH LAST bdocumento INTO otros_mov.cod_mov,xdescrip_mov,
|
||||
otros_mov.num_doc,otros_mov.fecha,
|
||||
datos1.depto_a,pnum_emp,otros_mov.bodega
|
||||
IF kprograma = 'inprmt046' THEN
|
||||
FETCH LAST bdocumento INTO otros_mov.cod_mov,xdescrip_mov,
|
||||
otros_mov.num_doc,otros_mov.fecha,
|
||||
datos1.depto_a,pnum_emp,otros_mov.bodega
|
||||
ELSE
|
||||
FETCH LAST bdocumento INTO xcod_mov_tmp,xdescrip_mov,
|
||||
datos1.num_doc,datos1.fecha,
|
||||
datos1.depto_a,pnum_emp,datos1.bodega
|
||||
END IF
|
||||
CALL busca_info()
|
||||
COMMAND KEY("T") "reTornar" "Salir de busqueda"
|
||||
EXIT MENU
|
||||
END MENU
|
||||
END FUNCTION
|
||||
FUNCTION busca_info()
|
||||
|
||||
SELECT UNIQUE nom_dpto INTO nombre_d FROM adtb00001 a
|
||||
WHERE a.departamento = datos1.depto_a and
|
||||
a.status_t is NULL
|
||||
|
||||
LET nombre =NULL
|
||||
LET apellido = NULL
|
||||
|
||||
SELECT a.nom1_emp,a.apell1_emp INTO nombre,apellido FROM adtb00003 a
|
||||
WHERE a.num_Emp = pnum_emp
|
||||
|
||||
DISPLAY BY NAME otros_mov.cod_mov,otros_mov.num_doc,
|
||||
otros_mov.fecha,nombre,apellido
|
||||
DISPLAY datos1.depto_a TO departamento
|
||||
DECLARE busca CURSOR FOR
|
||||
SELECT a.cod_n,a.cod_Grupo,a.cod_tipo,a.cod_Sec,a.cantidad_2, b.unidad_med, b.descrip_Esp,NULL,
|
||||
a.maquina, a.clasf_bloque
|
||||
FROM intb00006 a,intb00001 b
|
||||
WHERE a.num_Doc = otros_mov.num_doc AND
|
||||
a.cod_mov = otros_mov.cod_mov 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
|
||||
a.bodega = otros_mov.bodega
|
||||
IF kprograma = 'inprmt046' THEN
|
||||
SELECT UNIQUE nom_dpto INTO nombre_d FROM adtb00001 a
|
||||
WHERE a.departamento = datos1.depto_a and
|
||||
a.status_t is NULL
|
||||
|
||||
LET idx = 1
|
||||
IF kprograma = 'inprmt046' THEN
|
||||
FOREACH busca INTO movi2[idx].cod_n,movi2[idx].cod_grupo,
|
||||
movi2[idx].cod_tipo,movi2[idx].cod_sec,
|
||||
movi2[idx].cantidad_2, movi2[idx].unidad_med,
|
||||
movi2[idx].descrip_esp, movi2[idx].existencia,
|
||||
movi2[idx].maquina, movi2[idx].clasf_bloque
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
|
||||
CALL set_count(idx-1)
|
||||
DISPLAY ARRAY movi2 TO s_movi1.*
|
||||
BEFORE DISPLAY
|
||||
CALL maquinaria()
|
||||
CALL clasf_bloque()
|
||||
ON ACTION rimprimir
|
||||
|
||||
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
||||
doble_on,doble_off,comp_on,comp_off,
|
||||
doce,normal,archivo,copia
|
||||
LET nombre =NULL
|
||||
LET apellido = NULL
|
||||
|
||||
# CALL configureoutput('PDF') RETURNING handler
|
||||
# START REPORT formu46 TO XML HANDLER handler
|
||||
SELECT a.nom1_emp,a.apell1_emp INTO nombre,apellido FROM adtb00003 a
|
||||
WHERE a.num_Emp = pnum_emp
|
||||
|
||||
DISPLAY BY NAME otros_mov.cod_mov,otros_mov.num_doc,
|
||||
otros_mov.fecha,nombre,apellido
|
||||
DISPLAY datos1.depto_a TO departamento
|
||||
DECLARE busca CURSOR FOR
|
||||
SELECT a.cod_n,a.cod_Grupo,a.cod_tipo,a.cod_Sec,a.cantidad_2, b.unidad_med, b.descrip_Esp,NULL,
|
||||
a.maquina, a.clasf_bloque
|
||||
FROM intb00006 a,intb00001 b
|
||||
WHERE a.num_Doc = otros_mov.num_doc AND
|
||||
a.cod_mov = otros_mov.cod_mov 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
|
||||
a.bodega = otros_mov.bodega
|
||||
|
||||
LET idx = 1
|
||||
FOREACH busca INTO movi2[idx].cod_n,movi2[idx].cod_grupo,
|
||||
movi2[idx].cod_tipo,movi2[idx].cod_sec,
|
||||
movi2[idx].cantidad_2, movi2[idx].unidad_med,
|
||||
movi2[idx].descrip_esp, movi2[idx].existencia,
|
||||
movi2[idx].maquina, movi2[idx].clasf_bloque
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
|
||||
CALL set_count(idx-1)
|
||||
DISPLAY ARRAY movi2 TO s_movi1.*
|
||||
BEFORE DISPLAY
|
||||
CALL maquinaria()
|
||||
CALL clasf_bloque()
|
||||
ON ACTION rimprimir
|
||||
|
||||
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
||||
doble_on,doble_off,comp_on,comp_off,
|
||||
doce,normal,archivo,copia
|
||||
|
||||
START REPORT formu46 TO archivo
|
||||
|
||||
FOR idx = 1 TO movi2.getLength()
|
||||
OUTPUT TO REPORT formu46(otros_mov.num_doc,otros_mov.fecha,
|
||||
otros_mov.cod_mov,otros_mov.bodega,xdescrip_mov,
|
||||
nombre_d,
|
||||
movi2[idx].*)
|
||||
END FOR
|
||||
FINISH REPORT formu46
|
||||
|
||||
RUN imprime
|
||||
END DISPLAY
|
||||
ELSE
|
||||
SELECT UNIQUE nom_dpto INTO datos1.nom_dpto FROM adtb00001 a
|
||||
WHERE a.departamento = datos1.depto_a and
|
||||
a.status_t is NULL
|
||||
|
||||
DISPLAY BY NAME datos1.num_doc,datos1.fecha,datos1.depto_a,datos1.bodega
|
||||
DISPLAY datos1.nom_dpto TO nombre_d
|
||||
|
||||
DECLARE busca36 CURSOR FOR
|
||||
SELECT a.cod_n,a.cod_Grupo,a.cod_tipo,a.cod_Sec,a.cantidad_1,a.cantidad_2,
|
||||
b.unidad_med, b.descrip_Esp
|
||||
FROM intb00006 a,intb00001 b
|
||||
WHERE a.num_Doc = datos1.num_doc AND
|
||||
a.cod_mov = 36 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
|
||||
a.bodega = datos1.bodega
|
||||
|
||||
LET idx = 1
|
||||
FOREACH busca36 INTO movi[idx].cod_n,movi[idx].cod_grupo,
|
||||
movi[idx].cod_tipo,movi[idx].cod_sec,
|
||||
movi[idx].cantidad_1,movi[idx].cantidad_2,
|
||||
movi[idx].unidad_med,movi[idx].descrip_esp
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
|
||||
CALL set_count(idx-1)
|
||||
DISPLAY ARRAY movi TO s_movi1.*
|
||||
ON ACTION rimprimir
|
||||
|
||||
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
||||
doble_on,doble_off,comp_on,comp_off,
|
||||
doce,normal,archivo,copia
|
||||
|
||||
START REPORT formu36 TO archivo
|
||||
|
||||
FOR idx = 1 TO movi.getLength()
|
||||
IF movi[idx].cod_n is not null and movi[idx].cod_grupo is not null and
|
||||
movi[idx].cod_tipo is not null and movi[idx].cod_sec is not null THEN
|
||||
|
||||
LET movi[idx].cantidad_2 = movi[idx].cantidad_2 * -1
|
||||
|
||||
OUTPUT TO REPORT formu36(datos1.num_doc,datos1.fecha,
|
||||
datos1.depto_a,datos1.nom_dpto,
|
||||
movi[idx].*)
|
||||
END IF
|
||||
END FOR
|
||||
FINISH REPORT formu36
|
||||
RUN imprime
|
||||
|
||||
START REPORT formu46 TO archivo
|
||||
|
||||
FOR idx = 1 TO movi2.getLength()
|
||||
OUTPUT TO REPORT formu46(otros_mov.num_doc,otros_mov.fecha,
|
||||
otros_mov.cod_mov,otros_mov.bodega,xdescrip_mov,
|
||||
nombre_d,
|
||||
movi2[idx].*)
|
||||
END FOR
|
||||
FINISH REPORT formu46
|
||||
|
||||
RUN imprime
|
||||
END DISPLAY
|
||||
{ ELSE
|
||||
FOREACH busca INTO movi[idx].cod_n,movi[idx].cod_grupo,
|
||||
movi[idx].cod_tipo,movi[idx].cod_sec,
|
||||
movi[idx].descrip_esp,movi[idx].cantidad_2
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
|
||||
|
||||
DISPLAY ARRAY movi TO s_movi1.*
|
||||
ON ACTION rimprimir
|
||||
|
||||
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
|
||||
doble_on,doble_off,comp_on,comp_off,
|
||||
doce,normal,archivo,copia
|
||||
|
||||
# CALL configureoutput('PDF') RETURNING HANDLER
|
||||
# START REPORT formu36 TO XML HANDLER HANDLER
|
||||
|
||||
START REPORT formu36 TO archivo
|
||||
|
||||
FOR idx = 1 TO movi.getLength()
|
||||
IF movi[idx].cod_n is not null and movi[idx].cod_grupo is not null and
|
||||
movi[idx].cod_tipo is not null and movi[idx].cod_sec is not null THEN
|
||||
|
||||
LET movi[idx].cantidad_2 = movi[idx].cantidad_2 * -1
|
||||
|
||||
|
||||
OUTPUT TO REPORT formu36(datos1.num_doc,datos1.fecha,
|
||||
datos1.depto_a,datos1.nom_dpto,
|
||||
movi[idx].*)
|
||||
END IF
|
||||
END FOR
|
||||
FINISH REPORT formu36
|
||||
RUN imprime
|
||||
|
||||
END DISPLAY
|
||||
}
|
||||
END IF
|
||||
END IF
|
||||
END FUNCTION
|
||||
|
||||
REPORT formu46(x,xnombre_d,z)
|
||||
|
||||
Reference in New Issue
Block a user