Files
MBS/PROYECTO/nodir/noprmt017.4gl
T

285 lines
7.3 KiB
Plaintext

{
----------------------------------------------------------------------------
PROGRAMA : NOPRMT017
OBEJTIVO : Establecer equivalencia de movimientos nomina
PROGRAMADOR : Tadeo A. Ferreras
FECHA : Enero 29, 1993.
----------------------------------------------------------------------------
}
GLOBALS
"noprgb000.4gl"
DEFINE datos_agr RECORD
cod_mov SMALLINT,
nombre1 CHAR(30)
END RECORD
DEFINE arr_mov ARRAY[200] OF RECORD
cod_mov_a SMALLINT,
descrip_mov CHAR(30)
END RECORD
FUNCTION noprmt017()
OPTIONS
FORM LINE 8,
ERROR LINE 24
CLEAR SCREEN
CALL pantalla()
DISPLAY "noprmt017" AT 4,3
DISPLAY "Equivalencia de Movimientos" AT 6,26
LET formulario = formulario CLIPPED,"nofmmt017"
OPEN FORM nofmmt017 FROM "nofmmt017"
DISPLAY FORM nofmmt017
MENU "Mant."
COMMAND "Agregar"
CALL agrego()
COMMAND "Modificar"
CALL modifico()
COMMAND "Salir"
EXIT MENU
END MENU
END FUNCTION
FUNCTION agrego()
INPUT BY NAME datos_agr.* WITHOUT DEFAULTS
AFTER FIELD cod_mov
IF datos_agr.cod_mov IS NULL THEN
ERROR "No puede ser"
NEXT FIELD cod_mov
END IF
SELECT UNIQUE descrip_mov INTO datos_agr.nombre1 FROM notb00002
WHERE cod_mov = datos_agr.cod_mov AND status_t IS NULL
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
DISPLAY BY NAME datos_agr.nombre1
SELECT UNIQUE a.cod_mov FROM notb00013 a
WHERE a.status_t IS NULL AND a.cod_mov = datos_agr.cod_mov
IF STATUS != NOTFOUND THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD cod_mov
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
INPUT ARRAY arr_mov FROM scr_mov.*
BEFORE ROW
LET curr1 = arr_curr()
LET scr_l = scr_line()
AFTER FIELD cod_mov_a
IF arr_mov[curr1].cod_mov_a IS NOT NULL THEN
SELECT UNIQUE a.descrip_mov INTO arr_mov[curr1].descrip_mov
FROM notb00002 a
WHERE a.cod_mov = arr_mov[curr1].cod_mov_a AND a.status_t is null
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov_a
END IF
SELECT UNIQUE a.cod_mov FROM notb00013 a
WHERE a.cod_mov = arr_mov[curr1].cod_mov_a AND a.status_t is null
IF status != notfound THEN
LET numero_msg = 198
CALL msg(numero_msg)
NEXT FIELD cod_mov_a
END IF
SELECT UNIQUE a.cod_mov FROM notb00013 a
WHERE a.cod_mov_a = arr_mov[curr1].cod_mov_a AND a.status_t is null
IF status != notfound THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD cod_mov_a
END IF
DISPLAY arr_mov[curr1].descrip_mov to scr_mov[scr_l].descrip_mov
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
FOR idx = 1 to arr_count()
IF arr_mov[idx].cod_mov_a is not null THEN
INSERT INTO notb00013 values (datos_agr.cod_mov,arr_mov[idx].cod_mov_a,
null,USER,CURRENT,null,null)
END IF
END FOR
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
END FUNCTION
FUNCTION modifico()
CONSTRUCT criterio ON a.cod_mov FROM cod_mov
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET selec = "SELECT UNIQUE a.cod_mov,b.descrip_mov ",
"FROM notb00013 a,notb00002 b ",
"WHERE a.cod_mov = b.cod_mov AND ",
" a.status_t IS NULL AND ",
criterio clipped," ORDER BY 1 "
PREPARE busca FROM selec
DECLARE datos_agr SCROLL CURSOR FOR busca
OPEN datos_agr
FETCH FIRST datos_agr INTO datos_agr.*
IF status = notfound THEN
ERROR "No puede ser posible"
RETURN
END IF
DISPLAY BY NAME datos_agr.*
MENU "OPCION"
COMMAND "Siguiente"
"Presenta en pantalla el proximo registro encontrado"
FETCH NEXT datos_agr INTO datos_agr.*
IF status = notfound THEN
ERROR "No puede ser posible"
END IF
DISPLAY BY NAME datos_agr.*
COMMAND "Anterior"
"Presenta en pantalla el registro anterior encontrado"
FETCH PREVIOUS datos_agr INTO datos_agr.*
IF status = notfound THEN
ERROR "No puede ser posible"
END IF
DISPLAY BY NAME datos_agr.*
COMMAND "Primero"
"Presenta en pantalla el primer registro encontrado"
FETCH FIRST datos_agr INTO datos_agr.*
IF status = notfound THEN
ERROR "No puede ser posible"
END IF
DISPLAY BY NAME datos_agr.*
COMMAND "Ultimo"
"Presenta en pantalla el ultimo registro encontrado"
FETCH LAST datos_agr INTO datos_agr.*
IF status = notfound THEN
ERROR "No puede ser posible"
END IF
DISPLAY BY NAME datos_agr.*
COMMAND "Escoger"
"<Esc> Actualiza Registro <CTRL-C> Cancela Operacion"
DECLARE buscate1 CURSOR FOR
SELECT UNIQUE a.cod_mov_a,b.descrip_mov
FROM notb00013 a,notb00002 b
WHERE a.cod_mov_a = b.cod_mov AND a.status_t is NULL AND
a.cod_mov = datos_agr.cod_mov
GROUP BY 1,2 ORDER BY 1
LET idx = 1
FOREACH buscate1 INTO arr_mov[idx].*
LET idx = idx + 1
END FOREACH
CALL set_count(idx - 1)
INPUT ARRAY arr_mov WITHOUT DEFAULTS FROM scr_mov.*
BEFORE ROW
LET curr1 = arr_curr()
LET scr_l = scr_line()
AFTER FIELD cod_mov_a
IF arr_mov[curr1].cod_mov_a IS NOT NULL THEN
SELECT UNIQUE descrip_mov INTO arr_mov[curr1].descrip_mov
FROM notb00002
WHERE cod_mov = arr_mov[curr1].cod_mov_a and
status_t is null
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_mov_a
END IF
DISPLAY arr_mov[curr1].descrip_mov to scr_mov[scr_l].descrip_mov
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
DELETE FROM notb00013 WHERE cod_mov = datos_agr.cod_mov
FOR idx = 1 to arr_count()
IF arr_mov[idx].cod_mov_a is not null THEN
INSERT INTO notb00013 values (datos_agr.cod_mov,arr_mov[idx].cod_mov_a,
null,user,current,user,current)
END IF
END FOR
LET numero_msg = 13
CALL msg(numero_msg)
COMMAND KEY ("L") "eLiminar"
DELETE FROM notb00013 WHERE cod_mov = datos_agr.cod_mov
LET numero_msg = 39
CALL msg(numero_msg)
COMMAND "Retornar"
CLEAR FORM
EXIT MENU
END MENU
RETURN
END FUNCTION