285 lines
7.3 KiB
Plaintext
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
|