{ ------------------------------------------------------------------ PROGRAMA : NOPRMT009 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Control Periodos del Seguro Social PROGRAMADOR : Oscar Castillo FECHA REALIZACION : Wednesday, 22 November, 2000 ------------------------------------------------------------------ } GLOBALS "adprgb000.4gl" DEFINE per_aseg RECORD LIKE adtb00041.*, nom_mes LIKE mestable.descrip MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor let usuarios = "kpolanco" let clave = "RevolutionX3" CONNECT to "smarmotech" USER usuarios USING clave SELECT a.* INTO p_companias.* FROM companias a CALL adprmt030() END MAIN FUNCTION adprmt030() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 #LET formulario = formulario CLIPPED,"nofmmt009" OPEN FORM adfmmt030 FROM "adfmmt030" DISPLAY FORM adfmmt030 DISPLAY "adprmt030" AT 4,3 ATTRIBUTE(RED) DISPLAY "Control Periodos del Seguro Social" AT 6,25 ATTRIBUTE(BLACK) MENU ON ACTION nuevo let int_flag = false INITIALIZE emplea.* TO NULL CALL adpcad030() ON ACTION buscar let int_flag = false CALL adpcmf030() ON ACTION Salir EXIT MENU END MENU END FUNCTION FUNCTION adpcad030() # WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro INPUT BY NAME per_aseg.* ## 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 mes IF per_aseg.mes IS NOT NULL THEN SELECT a.descrip INTO nom_mes FROM mestable a WHERE a.mes = per_aseg.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 nom_mes AFTER FIELD ano IF per_aseg.ano IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano END IF SELECT a.* FROM adtb00041 a WHERE a.mes = per_aseg.mes AND a.ano = per_aseg.ano IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD mes END IF AFTER FIELD num_sem IF per_aseg.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_aseg.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_aseg.fecha_al IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_al 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_aseg.mes IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD mes END IF IF per_aseg.ano IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano END IF IF per_aseg.num_sem IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_sem END IF IF per_aseg.fecha_del IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_del END IF IF per_aseg.fecha_al IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_al ELSE INSERT INTO adtb00041 VALUES (per_aseg.mes,per_aseg.ano, per_aseg.num_sem, per_aseg.fecha_del,per_aseg.fecha_al, null, SUSER_SNAME (),GETDATE (),null,null) LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM #NEXT FIELD tipo_emp END IF END INPUT END FUNCTION FUNCTION adpcmf030() ## Aqui se prepara para la captura del criterio de seleccion para modificar ## el registro # WHENEVER ERROR CONTINUE CONSTRUCT BY NAME criterio ON a.mes,a.ano IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE convert(char(10),a.mes,103) FROM adtb00041 a ", " where a.status_t IS NULL AND ", criterio clipped, " ORDER BY 1" 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_aseg.* #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 nom_mes FROM mestable a WHERE a.mes = per_aseg.mes DISPLAY BY NAME per_aseg.*,nom_mes MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO per_aseg.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT a.descrip INTO nom_mes FROM mestable a WHERE a.mes = per_aseg.mes DISPLAY BY NAME per_aseg.*,nom_mes COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO per_aseg.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT a.descrip INTO nom_mes FROM mestable a WHERE a.mes = per_aseg.mes DISPLAY BY NAME per_aseg.*,nom_mes COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO per_aseg.* SELECT a.descrip INTO nom_mes FROM mestable a WHERE a.mes = per_aseg.mes DISPLAY BY NAME per_aseg.*,nom_mes LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO per_aseg.* SELECT a.descrip INTO nom_mes FROM mestable a WHERE a.mes = per_aseg.mes DISPLAY BY NAME per_aseg.*,nom_mes LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" { IF per_aseg.status_t = "P" THEN LET numero_msg = 199 CALL msg(numero_msg) RETURN END IF IF per_aseg.status_t = "E" THEN LET numero_msg = 39 CALL msg(numero_msg) RETURN END IF IF per_aseg.status_t = "P" THEN LET numero_msg = 199 CALL msg(numero_msg) RETURN END IF } INPUT BY NAME per_aseg.num_sem, per_aseg.fecha_del,per_aseg.fecha_al WITHOUT DEFAULTS AFTER FIELD num_sem IF per_aseg.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_aseg.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_aseg.fecha_al IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_al 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 } UPDATE adtb00041 SET num_sem = per_aseg.num_sem, fecha_del = per_aseg.fecha_del, fecha_al = per_aseg.fecha_al, us_mod = SUSER_SNAME (), fech_mod = GETDATE () WHERE @mes = per_aseg.mes and @ano = per_aseg.ano LET numero_msg = 13 CALL msg(numero_msg) EXIT INPUT END INPUT COMMAND KEY ("L") "eLiminar" UPDATE adtb00041 SET status_t = "E" WHERE @mes = per_aseg.mes and @ano = per_aseg.ano LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION