Files
MBS/PROYECTO/ipdir/ipprmt014.4gl
T
jpegueroandClaude Sonnet 5 b6085d4140 Mueve ipdir (Productos Terminados) de PROYECTOS a PROYECTO
Instruccion de Johnny: todos los directorios de fuentes de inventario
deben migrarse de la carpeta temporal PROYECTOS a la carpeta real
PROYECTO, ya que PROYECTOS sera eliminada.

Se elimino tambien un archivo suelto sin relacion llamado "ipdir"
que existia en PROYECTO (del commit inicial) y bloqueaba el nombre
de la carpeta.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 09:29:01 -04:00

202 lines
5.6 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : IPPRMT014
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla Medidas iptb00030.
PROGRAMADOR : Ing. Juan Soto.
FECHA REALIZACION : Enero 20, 2010.
------------------------------------------------------------------
}
GLOBALS "ipprgb000.4gl"
DEFINE iptb30 RECORD LIKE iptb00030.*
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL ipprmt014()
END MAIN
FUNCTION ipprmt014()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM ipfmmt014 FROM "ipfmmt014"
DISPLAY FORM ipfmmt014
MENU
ON ACTION nuevo
let int_flag = false
CLEAR FORM
let int_flag = false
CALL ippcad012()
ON ACTION buscar
CALL ippcmf012()
ON ACTION salir
EXIT MENU
END MENU
END FUNCTION
FUNCTION ippcad012()
## Captura los datos que va a contener el registro
#WHENEVER ERROR CONTINUE
INPUT BY NAME iptb30.*
AFTER INPUT
IF int_flag THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
END INPUT
SELECT MAX(a.cod_sec) INTO iptb30.cod_sec
FROM iptb00030 a
IF iptb30.cod_sec IS NULL THEN
LET iptb30.cod_sec = 0
END IF
LET iptb30.cod_sec = iptb30.cod_sec + 1
DISPLAY iptb30.cod_sec TO cod_sec
INSERT INTO iptb00030 VALUES (iptb30.*)
UPDATE iptb00030 set us_crea = SUSER_SNAME(),
fech_crea = GETDATE()
WHERE cod_sec = iptb30.cod_sec
LET numero_msg = 1
CALL msg(numero_msg)
END FUNCTION
FUNCTION ippcmf012()
DEFINE encontrados INTEGER
## Aqui se prepara para la captura del criterio de seleccion
#WHENEVER ERROR CONTINUE
CONSTRUCT BY NAME criterio ON iptb00030.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET SELEC = " SELECT DISTINCT * FROM iptb00030 ",
" WHERE ",
criterio clipped,
" ORDER BY cod_sec"
PREPARE busca FROM selec
DECLARE datos SCROLL CURSOR WITH HOLD FOR busca
OPEN datos
FETCH FIRST datos INTO iptb30.*
IF status >= 0 THEN
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
ELSE
END IF
DISPLAY BY NAME iptb30.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO iptb30.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME iptb30.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO iptb30.*
IF STATUS = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME iptb30.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO iptb30.*
DISPLAY BY NAME iptb30.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO iptb30.*
DISPLAY BY NAME iptb30.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
# Verifica que el movimiento sea del usuario creador
INPUT BY NAME iptb30.descripcion WITHOUT DEFAULTS
AFTER INPUT
#### Verifica si el usuario presiono la tecla <Ctrl-C>
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
EXIT INPUT
END IF
UPDATE iptb00030 SET descripcion = iptb30.descripcion,
us_mod = SUSER_SNAME(),
fech_mod = GETDATE()
WHERE cod_sec = iptb30.cod_sec
LET numero_msg = 13
CALL msg(numero_msg)
EXIT INPUT
END INPUT
COMMAND KEY ("L") "eLiminar"
LET encontrados = 0
SELECT count(*) INTO encontrados
FROM iptb00002
WHERE cod_sec = iptb30.cod_sec AND status_t IS NULL
IF encontrados = 0 THEN
UPDATE iptb00030 SET status_t = "E",
us_mod = SUSER_SNAME(),
fech_mod = GETDATE()
WHERE cod_sec = iptb30.cod_sec
LET numero_msg = 39
CALL msg(numero_msg)
ELSE
LET numero_msg = 383
CALL msg(numero_msg)
END IF
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION