{ ------------------------------------------------------------------ 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" " Adiciona Registro Cancela Operacion" let int_flag = false CLEAR FORM CALL nopcad018() COMMAND "Consultar-modificar" " Realiza Busqueda 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" " Actualiza Registro 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 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