Files
MBS/PROYECTO/irdir/irprmt021.4gl
T
jsotoandClaude Opus 5.5 705fadfdb4 JSOTO QA G6 (.250): arreglos CG/Activos/Repuestos/Informatica, DBDATE, imagenes de reportes y cgprrp008
Programas (bugs encontrados en las pruebas funcionales en la .250):
- acprmt004/acprmt005: MIN/MAX sobre la fecha real (no sobre texto CONVERT 103); acprmt004 alinea rowid.
- cgprrp008: lee cgtb00004 (no la copia cgtb00004_tmp del 14-mar-2026) y solo regenera
  cgtb00016 cuando se corre sin filtro de cuenta.
- cgprrp014: CONSTRUCT con los nombres de campo del form (cod_sp_sc).
- cgfmrp013: defaultValue del combo = cgprrp012.4rp.
- cgprrp022/edprrp029: salida getPreviewDevice() en lugar de SVG fijo.
- edprrp080: no consume numero ED con afecta = NO.
- cgprmt004/022/037, segprmt0001: sin CONNECT "IFMX" (-6366); EXTERIOR via cross-DB.
- irprcs001: agrega CONNECT; irprmt021: columna idestado; irprmt066: la anulacion sin
  MaintainX ya no se deshace (-255); otrodir/bodegas: rama '2' llena origen y destino.
- teprmt001: ajustes G6.

Despliegue G6:
- DBDATE=dmy4 en config/Application.xcf, config/Main_prg.xcf, resources/Application.xcf
  y en el grupo MODULOS del .4pw (los programas lanzados por el menu heredan el entorno).
- 31 .4rp: IMAGEBOX con rutas absolutas file:///E:|F:|C: -> relativas IMAGENES/...;
  se agregan IMAGENES/LOGO.JPG y genero_logo.png.
- Paquete mbs: incluye bin/*.4rp y bin/IMAGENES (antes el GAR no llevaba los reportes).
- resources/TopMenu.4st (irprcs008 daba -8014); bin/cgprcs024.4rp.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:30:24 -04:00

106 lines
4.3 KiB
Plaintext

{
PROGRAMA: ipprmt021.4gl
OBJETIVO: AUTORIZAR REQUISICIONES A ALMACENES
DESARROLLADO POR: ING. JUAN SOTO
FECHA : MAYO 5, 2022
}
GLOBALS
"irprgb000.4gl"
DEFINE arr_busqueda DYNAMIC ARRAY OF RECORD
estado VARCHAR(50),
idestado int,
tipo_documento VARCHAR(100),
numeroid INT,
fechadoc DATE,
nombre VARCHAR(100),
observacion,usuario VARCHAR(200),
cod_mov INT ,
us_crea VARCHAR(50)
END RECORD
DEFINE nombreUsuario,email,etiqueta STRING
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" USER usuarios USING clave
CALL ipprmt021()
END MAIN
FUNCTION ipprmt021()
OPEN WINDOW w1 WITH FORM "irfmmt021"
DIALOG ATTRIBUTE(UNBUFFERED)
CONSTRUCT criterio ON b.estado,b.idestado FROM estado1,idestado1
BEFORE CONSTRUCT
LET etiqueta = "AUTORIZACIONES REQUISICIONES REPUESTOS"
DISPLAY BY NAME etiqueta
CALL estadosprocesos(2)
CALL arr_busqueda.clear()
ON ACTION buscar ATTRIBUTE(TEXT="Buscar",IMAGE="find")
CALL arr_busqueda.clear()
LET selec =
"SELECT b.estado,b.idestado,CAST(a.cod_mov AS VARCHAR(10))||' '||a.descrip_mov,b.numero_doc,b.fecha,c.nombre,
b.observacion,' ',b.cod_mov,b.us_crea
FROM irtb00005 a,irtb00057 b INNER JOIN irtb00061 d ON b.idestado = d.idestado
LEFT OUTER JOIN vetb00004 c ON c.tipo_cliente = b.tipo_cliente AND
c.sec_cliente = b.sec_cliente
WHERE a.cod_mov = b.cod_mov AND
b.status_t IS NULL AND
", criterio CLIPPED
PREPARE comando FROM selec
DECLARE buscardata CURSOR FOR comando
LET idx = 1
FOREACH buscardata INTO arr_busqueda[idx].*
CALL usuarioSistema(arr_busqueda[idx].us_crea) RETURNING nombreUsuario,email
LET arr_busqueda[idx].usuario = nombreUsuario
LET idx = idx + 1
END FOREACH
IF idx = 1 THEN
CALL msg(3)
CALL arr_busqueda.clear()
END IF
END CONSTRUCT
INPUT ARRAY arr_busqueda FROM sautoriza.* ATTRIBUTE(WITHOUT DEFAULTS)
BEFORE INPUT
CALL estadosprocesos(1)
ON CHANGE estado
UPDATE irtb00057 SET estado = arr_busqueda[arr_curr()].estado,us_mod=usuarios,fech_mod=getdate()
WHERE numero_doc = arr_busqueda[arr_curr()].numeroid AND
cod_mov = arr_busqueda[arr_curr()].cod_mov
ON CHANGE observacion
UPDATE irtb00057 SET us_mod=usuarios,fech_mod=getdate(),
observacion = arr_busqueda[arr_curr()].observacion
WHERE numero_doc = arr_busqueda[arr_curr()].numeroid AND
cod_mov = arr_busqueda[arr_curr()].cod_mov
ON CHANGE idestado
UPDATE irtb00057 SET us_mod=usuarios,fech_mod=getdate(),
idestado = arr_busqueda[arr_curr()].idestado -- G6: estado_proceso no existe en irtb00057 (-207)
WHERE numero_doc = arr_busqueda[arr_curr()].numeroid AND
cod_mov = arr_busqueda[arr_curr()].cod_mov
ON ACTION imprime ATTRIBUTE(TEXT="Imprimir", IMAGE="printer")
CALL impdocumentos(arr_busqueda[arr_curr()].numeroid,arr_busqueda[arr_curr()].cod_mov)
AFTER INPUT
END INPUT
ON ACTION CANCEL ATTRIBUTE(TEXT="Cancelar",IMAGE="quit")
EXIT PROGRAM
END DIALOG
CLOSE WINDOW w1
END FUNCTION