{ ------------------------------------------------------------------ PROGRAMA : NOPRMT009 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Control Periodos de la Nomina PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Agosto 24, 1993 ------------------------------------------------------------------ } GLOBALS "noprgb000.4gl" 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 noprmt009() END MAIN FUNCTION noprmt009() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 LET formulario = formulario CLIPPED,"nofmmt009" OPEN FORM nofmmt009 FROM "nofmmt009" DISPLAY FORM nofmmt009 # CALL pantalla() # DISPLAY "noprmt009" AT 4,3 # DISPLAY "Control Periodos de la Nomina" AT 6,25 MENU ON ACTION nuevo let int_flag = false CLEAR FORM CALL nopcad009() ON ACTION buscar let int_flag = false CALL nopcmf009() ON ACTION Salir EXIT MENU END MENU END FUNCTION FUNCTION nopcad009() # WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro INPUT BY NAME per_nomi.* ## Verifica que el periodo de la nomina no exista en el catalogo de periodos. ## Si existe entonces despliega los dato del registro existente. AFTER FIELD tipo_emp IF per_nomi.tipo_emp IS NOT NULL THEN IF per_nomi.tipo_emp = "Q" THEN LET descr = "QUINCENAL" END IF IF per_nomi.tipo_emp = "S" THEN LET descr = "SEMANAL" END IF IF per_nomi.tipo_emp = "V" THEN LET descr = "VENDEDOR" END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_emp END IF AFTER FIELD h_normal IF per_nomi.h_normal is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_emp END IF AFTER FIELD num_nomi IF per_nomi.num_nomi IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_nomi ELSE SELECT a.num_nomi INTO per_nomi.num_nomi FROM notb00010 a WHERE a.tipo_emp = per_nomi.tipo_emp and a.num_nomi = per_nomi.num_nomi IF status >= 0 THEN IF status != NOTFOUND THEN IF per_nomi.status_t = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD tipo_emp END IF DISPLAY BY NAME per_nomi.* LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD tipo_emp ELSE LET per_nomi.mes = NULL LET per_nomi.ano = NULL LET per_nomi.num_sem = NULL LET per_nomi.fecha_del = NULL LET per_nomi.fecha_al = NULL DISPLAY BY NAME per_nomi.mes,per_nomi.ano,per_nomi.num_sem, per_nomi.fecha_del,per_nomi.fecha_al END IF ELSE CALL integridad() IF bandera = 1 THEN CLEAR SCREEN RETURN END IF END IF END IF AFTER FIELD mes IF per_nomi.mes IS NOT NULL THEN SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = per_nomi.mes and a.status_t is null IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD mes END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD mes END IF DISPLAY BY NAME nombre_mes AFTER FIELD ano IF per_nomi.ano IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano END IF AFTER FIELD num_sem IF per_nomi.num_sem IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_sem END IF AFTER FIELD fecha_del IF per_nomi.fecha_del IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_del END IF AFTER FIELD fecha_al IF per_nomi.fecha_al IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_al END IF IF per_nomi.fecha_al < per_nomi.fecha_del THEN CALL msg(51) NEXT FIELD fecha_del END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF per_nomi.tipo_emp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_emp END IF IF per_nomi.h_normal IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD h_normal END IF IF per_nomi.num_nomi IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_nomi END IF IF per_nomi.mes IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD mes END IF IF per_nomi.ano IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano END IF IF per_nomi.num_sem IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_sem END IF IF per_nomi.fecha_del IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_del END IF IF per_nomi.fecha_inicio_trabajadas > per_nomi.fecha_final_trabajadas THEN CALL msg(149) NEXT FIELD fecha_inicio_trabajadas END IF IF per_nomi.fecha_al IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_al ELSE INSERT INTO notb00010 (tipo_emp ,h_normal ,num_nomi ,mes ,ano ,num_sem ,fecha_del ,fecha_al ,us_crea ,fech_crea ,fecha_cierre_nomina ,estado_legal ,fecha_inicio_trabajadas ,fecha_final_trabajadas ) VALUES (per_nomi.tipo_emp,per_nomi.h_normal, per_nomi.num_nomi, per_nomi.mes,per_nomi.ano, per_nomi.num_sem, per_nomi.fecha_del,per_nomi.fecha_al, usuarios,GETDATE(), per_nomi.fecha_cierre_nomina,per_nomi.estado_legal, per_nomi.fecha_inicio_trabajadas,per_nomi.fecha_final_trabajadas) LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM NEXT FIELD tipo_emp END IF AFTER FIELD fech_mod EXIT INPUT END INPUT END FUNCTION FUNCTION nopcmf009() ## Aqui se prepara para la captura del criterio de seleccion para modificar ## el registro # WHENEVER ERROR CONTINUE CONSTRUCT criterio ON a.tipo_emp,a.num_nomi,a.mes,a.ano FROM tipo_emp,num_nomi,mes,ano IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT a.tipo_emp,a.h_normal,", " a.num_nomi,a.mes,a.ano,a.num_sem,CONVERT(CHAR(10),a.fecha_del,103),CONVERT(CHAR(10),a.fecha_al,103), ", " a.status_t,CONVERT(CHAR(10),a.fecha_cierre_nomina,103),a.estado_legal,a.monto, a.fecha_inicio_trabajadas,a.fecha_final_trabajadas FROM notb00010 a where ", criterio clipped, " ORDER BY 1,2" 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 per_nomi.tipo_emp,per_nomi.h_normal, per_nomi.num_nomi,per_nomi.mes, per_nomi.ano,per_nomi.num_sem, per_nomi.fecha_del,per_nomi.fecha_al, per_nomi.status_t, per_nomi.fecha_cierre_nomina, per_nomi.estado_legal, per_nomi.monto, per_nomi.fecha_inicio_trabajadas, per_nomi.fecha_final_trabajadas 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 INTO nombre_mes FROM mestable a WHERE a.mes = per_nomi.mes DISPLAY BY NAME per_nomi.*,nombre_mes MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO per_nomi.tipo_emp,per_nomi.h_normal, per_nomi.num_nomi,per_nomi.mes, per_nomi.ano,per_nomi.num_sem, per_nomi.fecha_del,per_nomi.fecha_al, per_nomi.status_t,per_nomi.fecha_cierre_nomina, per_nomi.estado_legal,per_nomi.monto, per_nomi.fecha_inicio_trabajadas, per_nomi.fecha_final_trabajadas IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = per_nomi.mes DISPLAY BY NAME per_nomi.*,nombre_mes COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO per_nomi.tipo_emp,per_nomi.h_normal, per_nomi.num_nomi,per_nomi.mes, per_nomi.ano,per_nomi.num_sem, per_nomi.fecha_del,per_nomi.fecha_al, per_nomi.status_t,per_nomi.fecha_cierre_nomina, per_nomi.estado_legal,per_nomi.monto, per_nomi.fecha_inicio_trabajadas, per_nomi.fecha_final_trabajadas IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = per_nomi.mes DISPLAY BY NAME per_nomi.*,nombre_mes COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO per_nomi.tipo_emp,per_nomi.h_normal, per_nomi.num_nomi,per_nomi.mes, per_nomi.ano,per_nomi.num_sem, per_nomi.fecha_del,per_nomi.fecha_al, per_nomi.status_t,per_nomi.fecha_cierre_nomina, per_nomi.estado_legal,per_nomi.monto, per_nomi.fecha_inicio_trabajadas, per_nomi.fecha_final_trabajadas SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = per_nomi.mes DISPLAY BY NAME per_nomi.*,nombre_mes LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO per_nomi.tipo_emp,per_nomi.h_normal, per_nomi.num_nomi,per_nomi.mes, per_nomi.ano,per_nomi.num_sem, per_nomi.fecha_del,per_nomi.fecha_al, per_nomi.status_t,per_nomi.fecha_cierre_nomina, per_nomi.estado_legal,per_nomi.monto, per_nomi.fecha_inicio_trabajadas, per_nomi.fecha_final_trabajadas SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = per_nomi.mes DISPLAY BY NAME per_nomi.*,nombre_mes LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF per_nomi.status_t = "P" THEN LET numero_msg = 199 CALL msg(numero_msg) RETURN END IF IF per_nomi.status_t = "E" THEN LET numero_msg = 39 CALL msg(numero_msg) RETURN END IF IF per_nomi.status_t = "P" THEN LET numero_msg = 199 CALL msg(numero_msg) RETURN END IF INPUT BY NAME per_nomi.h_normal,per_nomi.mes,per_nomi.ano, per_nomi.num_sem, per_nomi.fecha_del,per_nomi.fecha_al, per_nomi.fecha_cierre_nomina, per_nomi.fecha_inicio_trabajadas, per_nomi.fecha_final_trabajadas, per_nomi.estado_legal, per_nomi.us_crea,per_nomi.fech_crea, per_nomi.us_mod,per_nomi.fech_mod WITHOUT DEFAULTS AFTER FIELD h_normal IF per_nomi.h_normal is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD tipo_emp END IF AFTER FIELD mes IF per_nomi.mes IS NOT NULL THEN SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = per_nomi.mes and status_t is null IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD mes END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD mes END IF DISPLAY BY NAME nombre_mes AFTER FIELD ano IF per_nomi.ano IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano END IF AFTER FIELD num_sem IF per_nomi.num_sem IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_sem END IF AFTER FIELD fecha_del IF per_nomi.fecha_del IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_del END IF AFTER FIELD fecha_al IF per_nomi.fecha_al IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_al END IF IF per_nomi.fecha_al < per_nomi.fecha_del THEN CALL msg(51) NEXT FIELD fecha_del 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 CALL integridad() IF bandera = 1 THEN CLEAR SCREEN RETURN END IF IF per_nomi.fecha_inicio_trabajadas > per_nomi.fecha_final_trabajadas THEN CALL msg(149) NEXT FIELD fecha_inicio_trabajadas END IF UPDATE notb00010 SET h_normal = per_nomi.h_normal, mes = per_nomi.mes, ano = per_nomi.ano, num_sem = per_nomi.num_sem, fecha_del = per_nomi.fecha_del, fecha_al = per_nomi.fecha_al, fecha_cierre_nomina = per_nomi.fecha_cierre_nomina, us_mod = SUSER_SNAME(), fech_mod = GETDATE(), estado_legal = per_nomi.estado_legal, fecha_inicio_trabajadas = per_nomi.fecha_inicio_trabajadas, fecha_final_trabajadas = per_nomi.fecha_final_trabajadas WHERE tipo_emp = per_nomi.tipo_emp and num_nomi = per_nomi.num_nomi LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" UPDATE notb00010 SET status_t = "E", us_mod = usuarios, fech_mod = getdate() WHERE tipo_emp = per_nomi.tipo_emp and num_nomi = per_nomi.num_nomi LET numero_msg = 39 CALL msg(numero_msg) COMMAND KEY ("C") "Activa" UPDATE notb00010 SET status_t = NULL, us_mod = suser_sname(), fech_mod = getdate() WHERE num_nomi = per_nomi.num_nomi AND tipo_emp = per_nomi.tipo_emp CALL fgl_winmessage("Warning","Registro Activado","stop") COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION