{ =============================================================================== PROGRAMA : NOPRMT006 SISTEMA : Sistema de Nomina OBJETIVO : Mantenimiento para maestra de la tabla de cotizacion de seguros. PROGRAMADOR : Tadeo A. Ferreras F. FECHA : Agosto 23, 1993 MODIFICACION : Abner Montalvo OBJETIVO : Afinamiento del programa y ajustes segun nueva estructura de la tabla de cotizacion seguro social NOTB00006. FECHA : Abril 22, 1997. =============================================================================== } GLOBALS "noprgb000.4gl" DEFINE seguro RECORD salario_sem DECIMAL(12,2), salario_men DECIMAL(12,2), porc_emp DECIMAL(12,2), porc_pat DECIMAL(12,2) END RECORD DEFINE p_ret RECORD salario_sem DECIMAL(12,2), salario_men DECIMAL(12,2), porc_emp DECIMAL(12,2), porc_pat DECIMAL(12,2) END RECORD DEFINE num_reg INTEGER DEFINE estado RECORD status_t CHAR(1), us_crea CHAR(9), fech_crea LIKE notb00006.fech_crea, us_mod CHAR(9), fech_mod LIKE notb00006.fech_mod END RECORD FUNCTION noprmt006() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 LET formulario = formulario CLIPPED,"nofmmt006" OPEN FORM nofmmt006 FROM "nofmmt006" DISPLAY FORM nofmmt006 CALL pantalla() DISPLAY "noprmt006" AT 4,3 DISPLAY "Cotizacion del Seguro Social (IDSS)" AT 6,22 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" let int_flag = false CLEAR FORM CALL nopcad006() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" let int_flag = false CALL nopcmf006() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION nopcad006() CLEAR FORM # WHENEVER ERROR CONTINUE ## Captura los datos que va a contener el registro INPUT BY NAME seguro.* ## Verifica que el codigo no exista en el catalogo de movimientos. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD salario_sem IF seguro.salario_sem IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD salario END IF SELECT UNIQUE a.salario_sem INTO seguro.salario_sem FROM notb00006 a WHERE a.salario_sem = seguro.salario_sem IF status != NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD salario_sem END IF AFTER FIELD salario_men IF seguro.salario_men IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD salario_men END IF AFTER FIELD porc_emp IF seguro.porc_emp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD porc_emp END IF AFTER FIELD porc_pat IF seguro.porc_pat IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD porc_pat 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 INSERT INTO notb00006 VALUES(seguro.*,NULL,USER,CURRENT,NULL,NULL) LET numero_msg = 1 CALL msg(numero_msg) END FUNCTION FUNCTION nopcmf006() CLEAR FORM ## Aqui se prepara para la captura del criterio de seleccion # WHENEVER ERROR CONTINUE CONSTRUCT criterio ON a.salario_sem,a.salario_men,a.porc_emp,a.porc_pat FROM salario_sem,salario_men,porc_emp,porc_pat IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF LET SELEC = "SELECT UNIQUE a.rowid,a.salario_sem,a.salario_men, ", "a.porc_emp,a.porc_pat, ", "a.status_t,a.us_crea,a.fech_crea,a.us_mod,a.fech_mod ", "FROM notb00006 a WHERE ", " a.status_t IS NULL AND ", criterio CLIPPED, " ORDER BY 1" PREPARE busca FROM selec CALL integridad() IF bandera = 1 THEN CLEAR FORM RETURN END IF DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO num_reg,seguro.*,estado.* 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 FORM RETURN END IF END IF DISPLAY BY NAME seguro.*,estado.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO num_reg,seguro.*,estado.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME seguro.*,estado.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO num_reg,seguro.*,estado.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME seguro.*,estado.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO num_reg,seguro.*,estado.* DISPLAY BY NAME seguro.*,estado.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO num_reg,seguro.*,estado.* DISPLAY BY NAME seguro.*,estado.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" LET p_ret.* = seguro.* INPUT BY NAME seguro.* WITHOUT DEFAULTS AFTER FIELD salario_sem IF seguro.salario_sem IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD salario_sem END IF IF seguro.salario_sem != p_ret.salario_sem THEN SELECT a.salario_sem FROM notb00006 a WHERE a.salario_sem = seguro.salario_sem IF status != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD salario_sem END IF END IF AFTER FIELD salario_men IF seguro.salario_men IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD salario_men END IF AFTER FIELD porc_emp IF seguro.porc_emp IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD porc_emp END IF { IF seguro.porc_emp <> p_ret.porc_emp THEN SELECT a.porc_emp FROM notb00006 a WHERE a.porc_emp = seguro.porc_emp IF status != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD porc_emp END IF END IF } AFTER FIELD porc_pat IF seguro.porc_pat IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD porc_pat END IF { IF seguro.porc_pat <> p_ret.porc_pat THEN SELECT a.porc_pat FROM notb00006 a WHERE a.porc_pat = seguro.porc_pat IF status != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD porc_pat END IF 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 CALL integridad() IF bandera = 1 THEN CLEAR FORM RETURN END IF ###### Proceso de Actualizacion maestra de la tabla cotizacion de seguro UPDATE notb00006 SET (salario_sem,salario_men, porc_emp,porc_pat,status_t,us_crea, fech_crea,us_mod,fech_mod) = (seguro.salario_sem,seguro.salario_men, seguro.porc_emp,seguro.porc_pat, NULL,USER,CURRENT,USER,CURRENT) WHERE rowid = num_reg LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" UPDATE notb00006 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT) WHERE rowid = num_reg LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION