482 lines
16 KiB
Plaintext
482 lines
16 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : NOPRMT018
|
|
OBJETIVO : Capturar, Modificar, Eliminar registros de la
|
|
Tabla de Control de Recibos En Efectivos
|
|
PROGRAMADOR : Ing. Tadeo Ferreras
|
|
FECHA REALIZACION : Septiembre 09, 1993
|
|
------------------------------------------------------------------
|
|
}
|
|
GLOBALS "noprgb000.4gl"
|
|
|
|
DEFINE descrip_mov CHAR(30)
|
|
DEFINE monto1 DECIMAL(10,2)
|
|
DEFINE p_nomina CHAR(1)
|
|
|
|
DEFINE prestamo18 RECORD
|
|
num_emp LIKE notb00008.num_emp,
|
|
departamento LIKE notb00008.departamento,
|
|
nivel_emp LIKE notb00008.nivel_emp,
|
|
cod_puesto LIKE notb00008.cod_puesto,
|
|
num_doc LIKE notb00008.num_nomi,
|
|
fecha DATE,
|
|
cod_mov SMALLINT,
|
|
monto DECIMAL(12,2),
|
|
status_t CHAR(1),
|
|
us_crea CHAR(50),
|
|
fech_crea CHAR(16),
|
|
us_mod CHAR(50),
|
|
fech_mod CHAR(16)
|
|
END RECORD
|
|
DEFINE nombre18,apellido18 CHAR(14)
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
# LET usuarios = 'jsoto'
|
|
# LET clave = 'lmmjvsd2009'
|
|
|
|
CONNECT to "smarmotech" USER usuarios USING clave
|
|
SELECT a.* INTO p_companias.* FROM companias a
|
|
CALL noprmt018()
|
|
END MAIN
|
|
|
|
FUNCTION noprmt018()
|
|
CLEAR SCREEN
|
|
OPTIONS
|
|
FORM LINE 9,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
|
|
OPEN FORM nofmmt018 FROM "nofmmt018"
|
|
|
|
DISPLAY FORM nofmmt018
|
|
|
|
MENU "OPCIONES"
|
|
COMMAND "Adicionar"
|
|
"<Esc> Adiciona Registro <CTRL-C> Cancela Operacion"
|
|
let int_flag = false
|
|
CLEAR FORM
|
|
CALL nopcad018()
|
|
COMMAND "Consultar-modificar"
|
|
"<Esc> Realiza Busqueda <CTRL-C> Cancela Operacion"
|
|
let int_flag = false
|
|
CALL nopcmf018()
|
|
COMMAND "Salir" "Retorna Menu Anterior"
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION nopcad018()
|
|
# WHENEVER ERROR CONTINUE
|
|
## Captura los datos que va a contener el registro
|
|
|
|
INPUT BY NAME prestamo18.*
|
|
|
|
## Verifica que el registro no exista. Si existe, entonces despliega los
|
|
## datos del registro existente.
|
|
|
|
AFTER FIELD num_emp
|
|
IF prestamo18.num_emp IS NOT NULL THEN
|
|
SELECT departamento,nivel_emp,cod_puesto,nom1_emp,apell1_emp,
|
|
nomina
|
|
INTO prestamo18.departamento,prestamo18.nivel_emp,
|
|
prestamo18.cod_puesto,nombre18,apellido18,p_nomina
|
|
FROM adtb00003
|
|
WHERE num_emp = prestamo18.num_emp and
|
|
(status_t IS NULL OR status_t NOT IN ("T","E"))
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 159
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
ELSE
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_puesto
|
|
END IF
|
|
|
|
LET descrip1 = nombre18 clipped," ",apellido18 clipped
|
|
DISPLAY BY NAME prestamo18.departamento,prestamo18.nivel_emp,
|
|
prestamo18.cod_puesto,descrip1
|
|
|
|
AFTER FIELD num_doc
|
|
|
|
IF prestamo18.num_doc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
AFTER FIELD cod_mov
|
|
|
|
IF prestamo18.cod_mov IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
SELECT unique a.num_nomi FROM notb00008 a
|
|
WHERE a.num_emp = prestamo18.num_emp and
|
|
a.num_nomi= prestamo18.num_doc and
|
|
a.cod_mov = prestamo18.cod_mov AND
|
|
a.clase_mov = 'P'
|
|
|
|
IF status != NOTFOUND THEN
|
|
IF prestamo18.status_t = "E" THEN
|
|
LET numero_msg = 36
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
SELECT a.descrip_mov INTO descrip_mov FROM notb00002 a
|
|
WHERE a.cod_mov = prestamo18.cod_mov and a.status_t is null AND
|
|
a.clase_mov = "D"
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
DISPLAY BY NAME descrip_mov
|
|
|
|
SELECT SUM(a.valor) INTO monto1 FROM notb00008 a
|
|
WHERE a.num_emp = prestamo18.num_emp AND
|
|
a.status_t IS NULL AND
|
|
a.cod_mov = prestamo18.cod_mov
|
|
|
|
IF monto1 <= 0 THEN
|
|
LET numero_msg = 202
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
AFTER FIELD fecha
|
|
IF prestamo18.fecha IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
AFTER FIELD monto
|
|
IF prestamo18.monto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD monto
|
|
END IF
|
|
|
|
IF prestamo18.monto > monto1 THEN
|
|
LET numero_msg = 202
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD monto
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
IF prestamo18.num_emp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
IF prestamo18.num_doc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
IF prestamo18.cod_mov IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
|
|
IF prestamo18.fecha IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
IF prestamo18.monto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD monto
|
|
ELSE
|
|
|
|
# Inserta en nomina los prestamo18mos de los empleados
|
|
|
|
IF prestamo18.monto > 0 THEN
|
|
LET prestamo18.monto = prestamo18.monto * -1
|
|
END IF
|
|
|
|
IF prestamo18.monto < 0 THEN
|
|
INSERT INTO notb00008 (num_emp,departamento,nivel_emp,cod_puesto,
|
|
cod_mov,valor,fecha,num_nomi,tipo_emp,
|
|
us_crea,fech_crea,clase_mov)
|
|
VALUES (prestamo18.num_emp,prestamo18.departamento,
|
|
prestamo18.nivel_emp,prestamo18.cod_puesto,
|
|
prestamo18.cod_mov,prestamo18.monto,prestamo18.fecha,
|
|
prestamo18.num_doc,p_nomina,SUSER_SNAME(),GETDATE(),'P')
|
|
END IF
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
CLEAR FORM
|
|
LET prestamo18.num_emp = NULL
|
|
LET prestamo18.departamento = NULL
|
|
LET prestamo18.nivel_emp = NULL
|
|
LET prestamo18.cod_puesto = NULL
|
|
LET prestamo18.num_doc = NULL
|
|
LET prestamo18.cod_mov = NULL
|
|
LET prestamo18.fecha = NULL
|
|
LET prestamo18.monto = NULL
|
|
LET p_nomina = NULL
|
|
NEXT FIELD num_emp
|
|
|
|
END IF
|
|
|
|
AFTER FIELD fech_mod
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION nopcmf018()
|
|
## Aqui se prepara para la captura del criterio de selenoion
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
CONSTRUCT criterio ON a.num_emp,a.num_nomi,a.cod_mov
|
|
FROM num_emp,num_doc,cod_mov
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET SELEC =
|
|
{ " SELECT DISTINCT a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ",
|
|
" a.num_nomi,CONVERT(CHAR(10),a.fecha,103),a.cod_mov,a.valor*-1,a.status_t,a.us_crea, ",
|
|
" a.fech_crea",
|
|
" FROM notb00008 a where a.status_t is null and a.clase_mov = 'P' AND ",
|
|
criterio clipped," ORDER BY a.num_emp,a.departamento,a.num_nomi"
|
|
}
|
|
" SELECT DISTINCT a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ",
|
|
" a.num_nomi,CONVERT(CHAR(10),a.fecha,103),a.cod_mov,a.valor*-1,a.status_t,a.us_crea, ",
|
|
"cast(a.fech_crea as varchar(20)) ",
|
|
" FROM notb00008 a where a.status_t is null and a.clase_mov = 'P' AND ",
|
|
criterio clipped," ORDER BY a.num_emp,a.departamento,a.num_nomi"
|
|
|
|
|
|
|
|
PREPARE busca FROM selec
|
|
CALL integridad()
|
|
|
|
IF bandera = 1 THEN
|
|
CLEAR SCREEN
|
|
RETURN
|
|
END IF
|
|
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
FETCH FIRST datos INTO prestamo18.*
|
|
|
|
IF status >= 0 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
|
|
IF bandera = 1 THEN
|
|
CLEAR SCREEN
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
|
|
SELECT a.descrip_mov INTO descrip_mov FROM notb00002 a
|
|
WHERE a.cod_mov = prestamo18.cod_mov
|
|
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombre18,apellido18 FROM adtb00003 a
|
|
WHERE a.num_emp = prestamo18.num_emp
|
|
LET descrip1 = nombre18 clipped," ",apellido18 clipped
|
|
DISPLAY BY NAME prestamo18.*,descrip1,descrip_mov
|
|
|
|
MENU "OPCIONES "
|
|
COMMAND "Siguiente"
|
|
"Presenta en pantalla el proximo registro encontrado"
|
|
FETCH NEXT datos INTO prestamo18.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
SELECT a.descrip_mov INTO descrip_mov FROM notb00002 a
|
|
WHERE a.cod_mov = prestamo18.cod_mov
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombre18,apellido18 FROM adtb00003 a
|
|
WHERE a.num_emp = prestamo18.num_emp
|
|
LET descrip1 = nombre18 clipped," ",apellido18 clipped
|
|
DISPLAY BY NAME prestamo18.*,descrip1,descrip_mov
|
|
|
|
COMMAND "Anterior"
|
|
"Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS datos INTO prestamo18.*
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
SELECT a.descrip_mov INTO descrip_mov FROM notb00002 a
|
|
WHERE a.cod_mov = prestamo18.cod_mov
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombre18,apellido18 FROM adtb00003 a
|
|
WHERE a.num_emp = prestamo18.num_emp
|
|
LET descrip1 = nombre18 clipped," ",apellido18 clipped
|
|
DISPLAY BY NAME prestamo18.*,descrip1,descrip_mov
|
|
|
|
COMMAND "Primero"
|
|
"Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST datos INTO prestamo18.*
|
|
SELECT a.descrip_mov INTO descrip_mov FROM notb00002 a
|
|
WHERE a.cod_mov = prestamo18.cod_mov
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombre18,apellido18 FROM adtb00003 a
|
|
WHERE a.num_emp = prestamo18.num_emp
|
|
LET descrip1 = nombre18 clipped," ",apellido18 clipped
|
|
DISPLAY BY NAME prestamo18.*,descrip1,descrip_mov
|
|
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Ultimo"
|
|
"Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST datos INTO prestamo18.*
|
|
SELECT a.descrip_mov INTO descrip_mov FROM notb00002 a
|
|
WHERE a.cod_mov = prestamo18.cod_mov
|
|
SELECT a.nom1_emp,a.apell1_emp INTO nombre18,apellido18 FROM adtb00003 a
|
|
WHERE a.num_emp = prestamo18.num_emp
|
|
LET descrip1 = nombre18 clipped," ",apellido18 clipped
|
|
DISPLAY BY NAME prestamo18.*,descrip1,descrip_mov
|
|
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Escoger"
|
|
"<Esc> Actualiza Registro <CTRL-C> Cancela Operacion"
|
|
IF prestamo18.status_t = "E" THEN
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
INPUT BY NAME prestamo18.num_doc,prestamo18.fecha,prestamo18.cod_mov,
|
|
prestamo18.monto WITHOUT DEFAULTS
|
|
|
|
AFTER FIELD num_doc
|
|
IF prestamo18.num_doc IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_doc
|
|
END IF
|
|
|
|
AFTER FIELD cod_mov
|
|
IF prestamo18.cod_mov is not null THEN
|
|
SELECT a.descrip_mov INTO descrip_mov FROM notb00002 a
|
|
WHERE a.cod_mov = prestamo18.cod_mov and a.status_t is null AND
|
|
a.clase_mov = "D"
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 34
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
ELSE
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mov
|
|
END IF
|
|
DISPLAY BY NAME descrip_mov
|
|
|
|
AFTER FIELD monto
|
|
IF prestamo18.monto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD monto
|
|
END IF
|
|
|
|
#### Verifica si el usuario presiono la tecla <CTRL-C>
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
# Inserta en nomina los prestamo18mos de los empleados
|
|
SELECT nomina INTO p_nomina FROM adtb00003
|
|
WHERE num_emp = prestamo18.num_emp AND (status_t IS NULL OR
|
|
status_t NOT IN ("E","T"))
|
|
|
|
DELETE FROM notb00008
|
|
WHERE num_emp = prestamo18.num_emp and clase_mov= "P" and
|
|
num_nomi = prestamo18.num_doc
|
|
|
|
IF prestamo18.monto > 0 THEN
|
|
LET prestamo18.monto = prestamo18.monto * -1
|
|
END IF
|
|
|
|
IF prestamo18.monto < 0 THEN
|
|
INSERT INTO notb00008 (num_emp,departamento,nivel_emp,cod_puesto,
|
|
cod_mov,valor,fecha,num_nomi,tipo_emp,
|
|
us_crea,fech_crea,clase_mov)
|
|
VALUES (prestamo18.num_emp,prestamo18.departamento,
|
|
prestamo18.nivel_emp,prestamo18.cod_puesto,
|
|
prestamo18.cod_mov,prestamo18.monto,prestamo18.fecha,
|
|
prestamo18.num_doc,p_nomina,SUSER_SNAME(),GETDATE(),'P')
|
|
END IF
|
|
|
|
CALL integridad()
|
|
|
|
IF bandera = 1 THEN
|
|
CLEAR SCREEN
|
|
RETURN
|
|
END IF
|
|
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
COMMAND KEY ("L") "eLiminar"
|
|
UPDATE notb00008 set status_t = "E",
|
|
us_mod = suser_sname(),
|
|
fech_mod = getdate()
|
|
WHERE num_emp = prestamo18.num_emp AND num_nomi = prestamo18.num_doc
|
|
AND cod_mov = prestamo18.cod_mov AND clase_mov = 'P'
|
|
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Retornar" "Retorna al menu anterior"
|
|
CLEAR FORM
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|