Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md

This commit is contained in:
2026-08-18 20:59:52 -04:00
commit 454973e269
5978 changed files with 2664094 additions and 0 deletions
+440
View File
@@ -0,0 +1,440 @@
{
------------------------------------------------------------------
PROGRAMA : INPRMT011
OBJETIVO : Capturar, Modificar, Eliminar registros de la
Tabla de Solicitud de Internamiento de material.
PROGRAMADOR : Tadeo A. Ferreas
FECHA REALIZACION : Julio 22, 1993.
------------------------------------------------------------------
}
GLOBALS "inprgb000.4gl"
DEFINE solicitud RECORD
num_sol SMALLINT, #### Numero de solicitud de internamento material.
fecha DATE #### Fecha dee la solicitud.
END RECORD
DEFINE codgp SMALLINT
DEFINE arr_form2 ARRAY[200] OF RECORD
cod_n_p SMALLINT, #### Parte del codigo de la pila
cod_grupo_p SMALLINT, ## Parte del codigo de la pila (Grupo a que pertenece
descrip1 CHAR(30), ### Descripcion del tipo del pila
cantidad INTEGER ### Cantidad a solicitar
END RECORD
DEFINE descrip CHAR(30)
DEFINE curr,i INTEGER
#### Funcion para manejar el menu de proceso en la solicitud.
FUNCTION inprmt011()
CLEAR SCREEN
OPTIONS
FORM LINE 9,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM infmmt011 FROM "infmmt011"
DISPLAY FORM infmmt011
CALL pantalla()
DISPLAY "inprmt011" AT 4,3
DISPLAY "Solicitud de Exoneracion" AT 6,28
MENU "OPCIONES"
COMMAND "Adicionar"
"<Esc> Adiciona Registro <Ctrl-C> Cancela Operacion"
CLEAR FORM
CALL inmtad018()
COMMAND "Consultar-modificar"
"<Esc> Realiza Busqueda <Ctrl-C> Cancela Operacion"
CALL inmtmd018()
COMMAND "Salir" "Retorna Menu Anterior"
EXIT MENU
END MENU
END FUNCTION
### Funcion para agregar un registro.
FUNCTION inmtad018()
# WHENEVER ERROR CONTINUE
# Captura los datos que va a contener el registro
INPUT BY NAME solicitud.*
AFTER FIELD num_sol
IF solicitud.num_sol = 0 OR solicitud.num_sol IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_sol
END IF
SELECT UNIQUE a.num_sol FROM intb00017 a
WHERE a.num_sol = solicitud.num_sol
IF status != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD num_sol
END IF
BEFORE FIELD fecha
LET solicitud.fecha = today
DISPLAY BY NAME solicitud.fecha
AFTER FIELD fecha
IF solicitud.fecha IS NULL THEN
LET solicitud.fecha = today
END IF
LET p_fechas = solicitud.fecha
CALL prd()
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
##### Para manejar arreglo de los diferentes item en la solicitud de inter-
##### namiento de un material.
INPUT ARRAY arr_form2 FROM arr_form3.*
BEFORE ROW
LET curr = ARR_CURR()
LET fila = SCR_LINE()
AFTER FIELD cod_n_p
IF arr_form2[curr].cod_n_p IS NOT NULL THEN
IF arr_form2[curr].cod_n_p != 3 THEN
LET numero_msg = 157
CALL msg(numero_msg)
NEXT FIELD cod_n_p
END IF
END IF
AFTER FIELD cod_grupo_p
IF arr_form2[curr].cod_grupo_p < 1 OR arr_form2[curr].cod_grupo_p > 3 THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n_p
END IF
SELECT UNIQUE a.cod_n_p,a.cod_grupo_p
FROM intb00016 a
WHERE a.cod_n_p = arr_form2[curr].cod_n_p AND
a.cod_grupo_p = arr_form2[curr].cod_grupo_p
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n_p
END IF
##### Chequea que el codigo a digitar no exista mas de una vez en el
##### registro.
FOR i = 1 TO ARR_COUNT() - 1
IF arr_form2[curr].cod_grupo_p = arr_form2[i].cod_grupo_p THEN
LET numero_msg = 135
CALL msg(numero_msg)
NEXT FIELD cod_n_p
END IF
END FOR
CASE
WHEN arr_form2[curr].cod_grupo_p = 1
LET descrip = "PILA TIPO D (2LP)"
WHEN arr_form2[curr].cod_grupo_p = 2
LET descrip = "PILA TIPO C (1LP)"
WHEN arr_form2[curr].cod_grupo_p = 3
LET descrip = "PILA TIPO AA (R6/7HD)"
END CASE
LET arr_form2[curr].descrip1 = descrip
DISPLAY arr_form2[curr].descrip1 TO arr_form3[fila].descrip1
AFTER FIELD cantidad
IF arr_form2[curr].cantidad IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cantidad
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
###### Proceso para insertar registro dentro de la maestra de solicitud de
###### internamiento de un amterial.
FOR i = 1 TO ARR_COUNT()
IF arr_form2[i].cod_n_p IS NOT NULL AND
arr_form2[i].cod_grupo_p IS NOT NULL THEN
INSERT INTO intb00017 VALUES (solicitud.*,arr_form2[i].cod_n_p,
arr_form2[i].cod_grupo_p,arr_form2[i].cantidad,NULL,USER,CURRENT,
NULL,NULL)
END IF
END FOR
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
END FUNCTION
###### Funcion para modificar un registro que contenga un solicitud.
FUNCTION inmtmd018()
# Aqui se prepara para la captura del criterio de seleccion
CONSTRUCT criterio ON a.num_sol,a.fecha FROM num_sol,fecha
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET SELEC = "SELECT UNIQUE a.num_sol,a.fecha FROM intb00017 a WHERE ",
"a.status_t is null AND ",
criterio clipped,
"ORDER BY 1,2"
PREPARE busca FROM selec
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
DECLARE datos SCROLL CURSOR FOR busca
OPEN datos
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
FETCH FIRST datos INTO solicitud.*
IF status >= 0 THEN
IF status = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
RETURN
END IF
CALL integridad()
IF bandera = 1 THEN
LET bandera = 0
RETURN
END IF
END IF
DISPLAY BY NAME solicitud.*
MENU "OPCIONES "
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos INTO solicitud.*
IF status = NOTFOUND THEN
LET numero_msg = 4
CALL msg(numero_msg)
END IF
DISPLAY BY NAME solicitud.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos INTO solicitud.*
IF status = NOTFOUND THEN
LET numero_msg = 5
CALL msg(numero_msg)
END IF
DISPLAY BY NAME solicitud.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos INTO solicitud.*
DISPLAY BY NAME solicitud.*
LET numero_msg = 5
CALL msg(numero_msg)
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos INTO solicitud.*
DISPLAY BY NAME solicitud.*
LET numero_msg = 4
CALL msg(numero_msg)
COMMAND "Escoger"
"<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
INPUT BY NAME solicitud.fecha WITHOUT DEFAULTS
AFTER FIELD fecha
IF solicitud.fecha IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha
END IF
LET p_fechas = solicitud.fecha
CALL prd()
IF bandera = 1 THEN
LET bandera = 0
NEXT FIELD fecha
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
DECLARE buscar CURSOR FOR
SELECT a.cod_n_p,a.cod_grupo_p,a.us_crea,a.cantidad
FROM intb00017 a WHERE a.num_sol = solicitud.num_sol
LET i = 1
FOREACH buscar INTO arr_form2[i].*
IF arr_form2[i].cod_grupo_p = 1 THEN
LET arr_form2[i].descrip1 = "PILA TIPO D (2LP)"
ELSE
IF arr_form2[i].cod_grupo_p = 2 THEN
LET arr_form2[i].descrip1 = "PILA TIPO C (1LP)"
ELSE
LET arr_form2[i].descrip1 = "PILA TIPO AA (R6/7HD)"
END IF
END IF
LET i = i + 1
END FOREACH
CALL SET_COUNT(i - 1)
INPUT ARRAY arr_form2 WITHOUT DEFAULTS FROM arr_form3.*
BEFORE ROW
LET curr = ARR_CURR()
LET fila = SCR_LINE()
AFTER FIELD cod_n_p
IF arr_form2[curr].cod_n_p IS NOT NULL THEN
IF arr_form2[curr].cod_n_p != 3 THEN
LET numero_msg = 157
CALL msg(numero_msg)
NEXT FIELD cod_n_p
END IF
END IF
AFTER FIELD cod_grupo_p
IF arr_form2[curr].cod_grupo_p < 1 OR arr_form2[curr].cod_grupo_p > 3 THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n_p
END IF
FOR i = 1 TO ARR_COUNT()
IF i <> curr THEN
IF arr_form2[curr].cod_grupo_p = arr_form2[i].cod_grupo_p THEN
LET numero_msg = 135
CALL msg(numero_msg)
NEXT FIELD cod_n_p
END IF
END IF
END FOR
SELECT UNIQUE a.cod_n_p,a.cod_grupo_p
FROM intb00016 a
WHERE a.cod_n_p = arr_form2[curr].cod_n_p AND
a.cod_grupo_p = arr_form2[curr].cod_grupo_p
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n_p
END IF
CASE
WHEN arr_form2[curr].cod_grupo_p = 1
LET descrip = "PILA TIPO D (2LP)"
WHEN arr_form2[curr].cod_grupo_p = 2
LET descrip = "PILA TIPO C (1LP)"
WHEN arr_form2[curr].cod_grupo_p = 3
LET descrip = "PILA TIPO AA (R6/7HD)"
END CASE
LET arr_form2[curr].descrip1 = descrip
DISPLAY arr_form2[curr].descrip1 TO arr_form3[fila].descrip1
AFTER FIELD cantidad
IF arr_form2[curr].cantidad IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD cantidad
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
CLEAR FORM
RETURN
END IF
###### Proceso de actualizacion de un registro en la maestra de solicitud.
DELETE FROM intb00017 WHERE num_sol = solicitud.num_sol
FOR i = 1 TO ARR_COUNT()
IF arr_form2[i].cod_n_p IS NOT NULL AND
arr_form2[i].cod_grupo_p IS NOT NULL THEN
INSERT INTO intb00017 VALUES (solicitud.*,arr_form2[i].cod_n_p,
arr_form2[i].cod_grupo_p,arr_form2[i].cantidad,NULL,USER,CURRENT,
USER,CURRENT)
END IF
END FOR
LET numero_msg = 13
CALL msg(numero_msg)
##### Proceso para elimianr logicamente un registro.
COMMAND KEY ("L") "eLiminar"
UPDATE intb00017 set (status_t,us_mod,fech_mod) =
("E",USER,CURRENT)
WHERE num_sol = solicitud.num_sol
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
"Retorna al menu anterior"
CLEAR FORM
EXIT MENU
END MENU
END FUNCTION