{ ---------------------------------------------------------------------------- PROGRAMA : ADPRMT016 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Proceso Seleccion y Contratacion de Personal PROGRAMADOR : Ing. Betania Guerrero Perez FECHA REALIZACION : Junio 07, 1993 ---------------------------------------------------------------------------- } GLOBALS "adprgb000.4gl" 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 adprmt016() END MAIN FUNCTION adprmt016() CLEAR SCREEN OPTIONS FORM LINE 8, ERROR LINE 24, COMMENT LINE 23 OPEN FORM adfmmt016 FROM "adfmmt016" DISPLAY FORM adfmmt016 DISPLAY "adprmt016" AT 4,3 ATTRIBUTE(RED) DISPLAY "Control Proceso de Seleccion y Contratacion" AT 6,18 ATTRIBUTE(BLACK) MENU ON ACTION nuevo let int_flag = false INITIALIZE emplea.* TO NULL CALL adpcad016() ON ACTION buscar let int_flag = false CALL adpcmf016() ON ACTION Salir EXIT MENU END MENU END FUNCTION FUNCTION adpcad016() {WHENEVER ERROR CONTINUE} ## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO LABEL vuelve: INPUT BY NAME proceso.* ## VENTANA QUE BUSCA LOS EMPLEADOS ON KEY (CONTROL-W) LET curr1 = arr_curr() CASE WHEN INFIELD (num_emp) CALL busca_empleado() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE NEXT FIELD num_emp END IF IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_emp END IF LET descrip1 = nombre LET proceso.num_emp = despl_emp[curr1].num_emp LET proceso.departamento = despl_emp[curr1].departamento LET proceso.nivel_emp = despl_emp[curr1].nivel_emp LET proceso.cod_puesto = despl_emp[curr1].cod_puesto DISPLAY BY NAME proceso.num_emp,proceso.departamento, proceso.nivel_emp,proceso.cod_puesto,descrip1 NEXT FIELD num3_emp WHEN INFIELD (num3_emp) CALL busca_empleado() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE NEXT FIELD num3_emp END IF IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num3_emp END IF LET descrip2 = nombre LET proceso.num3_emp = despl_emp[curr1].num_emp LET proceso.departamento3 = despl_emp[curr1].departamento LET proceso.nivel3_emp = despl_emp[curr1].nivel_emp LET proceso.cod3_puesto = despl_emp[curr1].cod_puesto DISPLAY BY NAME proceso.num3_emp,proceso.departamento3, proceso.nivel3_emp,proceso.cod3_puesto, descrip2 NEXT FIELD recomendacion WHEN INFIELD (num1_emp) CALL busca_empleado() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE NEXT FIELD num1_emp END IF IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num1_emp END IF LET descrip4 = nombre LET proceso.num1_emp = despl_emp[curr1].num_emp LET proceso.departamento1 = despl_emp[curr1].departamento LET proceso.nivel1_emp = despl_emp[curr1].nivel_emp LET proceso.cod1_puesto = despl_emp[curr1].cod_puesto DISPLAY BY NAME proceso.num1_emp,proceso.departamento1, proceso.nivel1_emp,proceso.cod1_puesto, descrip4 NEXT FIELD num2_emp WHEN INFIELD (num2_emp) CALL busca_empleado() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE NEXT FIELD num2_emp END IF IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num2_emp END IF LET descrip5 = nombre LET proceso.num2_emp = despl_emp[curr1].num_emp LET proceso.departamento2 = despl_emp[curr1].departamento LET proceso.nivel2_emp = despl_emp[curr1].nivel_emp LET proceso.cod2_puesto = despl_emp[curr1].cod_puesto DISPLAY BY NAME proceso.num2_emp,proceso.departamento2, proceso.nivel2_emp,proceso.cod2_puesto, descrip5 NEXT FIELD cod2_puesto END CASE BEFORE FIELD fecha LET proceso.fecha = today using "dd/mm/yyyy" DISPLAY BY NAME proceso.fecha ## VERIFICA QUE EL REGISTRO NO ESTE DUPLICADO Y ADEMAS QUE EL SOLICITANTE ## EXISTA EN LA TABLA DE DATOS BASICOS AFTER FIELD cod_sol IF proceso.cod_sol IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_sol ELSE SELECT UNIQUE fecha,cod_sol,num_emp,departamento,nivel_emp, cod_puesto,num3_emp,departamento3,nivel3_emp, cod3_puesto,recomendacion,otros_com,num1_emp, departamento1,nivel1_emp,cod1_puesto,num2_emp, departamento2,nivel2_emp,cod2_puesto,status_t INTO proceso.*,p_status FROM adtb00018 WHERE cod_sol = proceso.cod_sol IF status >= 0 THEN IF status != NOTFOUND THEN IF p_status = "E" THEN LET numero_msg = 36 CALL msg(numero_msg) NEXT FIELD cod_sol END IF SELECT nom1_sol,nom2_sol,apell1_sol,apell2_sol INTO nombre1,nombre2,apellido1,apellido2 FROM adtb00012 WHERE cod_sol = proceso.cod_sol and status_t is null LET descrip3 = nombre1 clipped," ",nombre2 clipped," ", apellido1 clipped," ",apellido2 clipped SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp INTO nombre1,nombre2,apellido1,apellido2 FROM adtb00003 WHERE num_emp = proceso.num_emp and status_t is null LET descrip1 = nombre1 clipped," ",nombre2 clipped," ", apellido1 clipped," ",apellido2 clipped SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp INTO nombre3,nombre4,apellido3,apellido4 FROM adtb00003 WHERE num_emp = proceso.num3_emp and status_t is null LET descrip2 = nombre3 clipped," ",nombre4 clipped," ", apellido3 clipped," ",apellido4 clipped SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp INTO nombre5,nombre6,apellido5,apellido6 FROM adtb00003 WHERE num_emp = proceso.num1_emp and status_t is null LET descrip4 = nombre5 clipped," ",nombre6 clipped," ", apellido5 clipped," ",apellido6 clipped SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp INTO nombre7,nombre8,apellido7,apellido8 FROM adtb00003 WHERE num_emp = proceso.num2_emp and status_t is null LET descrip5 = nombre7 clipped," ",nombre8 clipped," ", apellido7 clipped," ",apellido8 clipped DISPLAY BY NAME proceso.*,descrip3,descrip1,descrip2, descrip4,descrip5 LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD cod_sol END IF ELSE IF bandera = 1 THEN CLEAR SCREEN RETURN END IF END IF SELECT UNIQUE cod_sol INTO basico.cod_sol FROM adtb00012 WHERE cod_sol = proceso.cod_sol and status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_sol END IF SELECT nom1_sol,nom2_sol,apell1_sol,apell2_sol INTO nombre1,nombre2,apellido1,apellido2 FROM adtb00012 WHERE cod_sol = proceso.cod_sol and status_t is null LET descrip3 = nombre1 clipped," ",nombre2 clipped," ", apellido1 clipped," ",apellido2 clipped DISPLAY BY NAME descrip3 END IF AFTER FIELD num_emp IF proceso.num_emp IS NOT NULL THEN SELECT departamento,nivel_emp,cod_puesto,nom1_emp,nom2_emp, apell1_emp,apell2_emp INTO proceso.departamento,proceso.nivel_emp, proceso.cod_puesto,nombre1,nombre2,apellido1,apellido2 FROM adtb00003 WHERE num_emp = proceso.num_emp and status_t is null IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_emp END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_emp END IF LET descrip1 = nombre1 clipped," ",nombre2 clipped," ", apellido1 clipped," ",apellido2 clipped DISPLAY BY NAME proceso.departamento,proceso.nivel_emp, proceso.cod_puesto,descrip1 NEXT FIELD num3_emp AFTER FIELD num3_emp IF proceso.num3_emp IS NOT NULL THEN SELECT departamento,nivel_emp,cod_puesto,nom1_emp,nom2_emp, apell1_emp,apell2_emp INTO proceso.departamento3,proceso.nivel3_emp, proceso.cod3_puesto,nombre3,nombre4,apellido3,apellido4 FROM adtb00003 WHERE num_emp = proceso.num3_emp and status_t is null IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num3_emp END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num3_emp END IF LET descrip2 = nombre3 clipped," ",nombre4 clipped," ", apellido3 clipped," ",apellido4 clipped DISPLAY BY NAME proceso.departamento3,proceso.nivel3_emp, proceso.cod3_puesto,descrip2 NEXT FIELD recomendacion AFTER FIELD recomendacion IF proceso.recomendacion IS NOT NULL THEN IF proceso.recomendacion = 1 THEN LET verdad = "N" CALL contrato() IF verdad = "S" THEN NEXT FIELD recomendacion END IF LET descrip = "ACEPTARLO" END IF IF proceso.recomendacion = 2 THEN LET descrip = "MANTENERLO EN ARCHIVO" END IF IF proceso.recomendacion = 3 THEN LET descrip = "NO LE INTERESA" END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD recomendacion END IF DISPLAY BY NAME descrip AFTER FIELD num1_emp IF proceso.num1_emp IS NOT NULL THEN SELECT departamento,nivel_emp,cod_puesto,nom1_emp,nom2_emp, apell1_emp,apell2_emp INTO proceso.departamento1,proceso.nivel1_emp, proceso.cod1_puesto,nombre5,nombre6,apellido5,apellido6 FROM adtb00003 WHERE num_emp = proceso.num1_emp and status_t is null IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num1_emp END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num1_emp END IF LET descrip4 = nombre5 clipped," ",nombre6 clipped," ", apellido5 clipped," ",apellido6 clipped DISPLAY BY NAME proceso.departamento1,proceso.nivel1_emp, proceso.cod1_puesto,descrip4 NEXT FIELD num2_emp AFTER FIELD num2_emp IF proceso.num2_emp IS NOT NULL THEN SELECT departamento,nivel_emp,cod_puesto,nom1_emp,nom2_emp, apell1_emp,apell2_emp INTO proceso.departamento2,proceso.nivel2_emp, proceso.cod2_puesto,nombre7,nombre8,apellido7,apellido8 FROM adtb00003 WHERE num_emp = proceso.num2_emp and status_t is null IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num2_emp END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num2_emp END IF LET descrip5 = nombre7 clipped," ",nombre8 clipped," ", apellido7 clipped," ",apellido8 clipped DISPLAY BY NAME proceso.departamento2,proceso.nivel2_emp, proceso.cod2_puesto,descrip5 EXIT INPUT AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF END INPUT FOR idx = 1 to 3 LET arr_proceso[idx].cod_requi = NULL LET arr_proceso[idx].requisito = NULL LET arr_proceso[idx].ind_requi = NULL DISPLAY arr_proceso[idx].cod_requi to consart[idx].cod_requi DISPLAY arr_proceso[idx].requisito to consart[idx].requisito DISPLAY arr_proceso[idx].ind_requi to consart[idx].ind_requi END FOR INPUT ARRAY arr_proceso FROM consart.* ## VENTANA QUE BUSCA LOS REQUISITOS DE SELECCION Y CONTRATACION ON KEY (CONTROL-W) LET curr = arr_curr() LET scr_l = scr_line() CASE WHEN INFIELD (cod_requi) CALL busca_requisito() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE NEXT FIELD cod_requi END IF IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_requi END IF SELECT requisito INTO seleccion.requisito FROM adtb00008 WHERE cod_requi = arr_proceso[curr].cod_requi and status_t is null LET arr_proceso[curr].requisito = seleccion.requisito DISPLAY arr_proceso[curr].cod_requi to consart[scr_l].cod_requi DISPLAY arr_proceso[curr].requisito to consart[scr_l].requisito LET control = "N" CALL repeticion() IF control = "S" THEN NEXT FIELD cod_requi END IF NEXT FIELD ind_requi END CASE BEFORE ROW LET curr = arr_curr() LET scr_l = scr_line() ## VERIFICA QUE LA ACCION A TOMAR EXISTA EN EL CATALOGO DE ACCIONES DE ## CONTRATACION Y SELECCION Y ADEMAS QUE LA ACCION NO SE REPITA AFTER FIELD cod_requi IF arr_proceso[curr].cod_requi IS NOT NULL THEN LET control = "N" CALL repeticion() IF control = "S" THEN NEXT FIELD cod_requi END IF SELECT @requisito INTO seleccion.requisito FROM adtb00008 WHERE @cod_requi = arr_proceso[curr].cod_requi and status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_requi END IF LET arr_proceso[curr].requisito = seleccion.requisito DISPLAY arr_proceso[curr].requisito to consart[scr_l].requisito END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF EXIT INPUT END INPUT ## SI NO OCURRE NINGUN ERROR DURANTE EL PROCESO SE PROCEDE A INSERTAR EL ## REGISTRO FOR idx = 1 to arr_count() IF arr_proceso[idx].cod_requi is not null and arr_proceso[idx].requisito is not null and arr_proceso[idx].ind_requi is not null THEN INSERT INTO adtb00018 VALUES (proceso.fecha,proceso.cod_sol,proceso.num_emp, proceso.departamento,proceso.nivel_emp,proceso.cod_puesto, proceso.num3_emp,proceso.departamento3,proceso.nivel3_emp, proceso.cod3_puesto,proceso.recomendacion,proceso.otros_com, proceso.num1_emp,proceso.departamento1,proceso.nivel1_emp, proceso.cod1_puesto,proceso.num2_emp,proceso.departamento2, proceso.nivel2_emp,proceso.cod2_puesto, arr_proceso[idx].cod_requi,arr_proceso[idx].ind_requi,null, SUSER_SNAME (),GETDATE(),null,null) END IF END FOR LET numero_msg = 1 CALL msg(numero_msg) CLEAR FORM IF status < 0 THEN CLEAR FORM END IF GOTO vuelve END FUNCTION FUNCTION adpcmf016() ## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA LA ## MODIFICACION DE REGISTROS DEFINE usuarios RECORD us_crea CHAR(9), fech_crea LIKE adtb00018.fech_crea END RECORD {WHENEVER ERROR CONTINUE} CONSTRUCT criterio ON fecha FROM adtb00018.fecha IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = "SELECT UNIQUE fecha,cod_sol,num_emp,departamento,nivel_emp,cod_puesto,", " num3_emp,departamento3,nivel3_emp,cod3_puesto,recomendacion, ", " otros_com,num1_emp,departamento1,nivel1_emp,cod1_puesto, ", " num2_emp,departamento2,nivel2_emp,cod2_puesto ", "FROM adtb00018 ", "WHERE status_t is null and ",criterio clipped," ORDER BY 2" PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO proceso.* IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF END IF CALL selecto() MENU "OPCION" COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO proceso.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF CALL selecto() COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO proceso.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF CALL selecto() COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO proceso.* CALL selecto() LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO proceso.* CALL selecto() LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" LET modifica = "S" IF p_status = "E" THEN LET numero_msg = 39 CALL msg(numero_msg) RETURN END IF ## SE SELECCIONAN LOS CAMPOS MODIFICABLES INPUT BY NAME proceso.fecha,proceso.num_emp,proceso.departamento, proceso.nivel_emp,proceso.cod_puesto, proceso.num3_emp,proceso.departamento3, proceso.nivel3_emp,proceso.cod3_puesto, proceso.recomendacion,proceso.otros_com, proceso.num1_emp,proceso.departamento1, proceso.nivel1_emp,proceso.cod1_puesto, proceso.num2_emp,proceso.departamento2, proceso.nivel2_emp,proceso.cod2_puesto WITHOUT DEFAULTS ## VENTANA QUE BUSCA LOS EMPLEADOS ON KEY (CONTROL-W) LET curr1 = arr_curr() CASE WHEN INFIELD (num_emp) CALL busca_empleado() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE NEXT FIELD num_emp END IF IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_emp END IF LET descrip1 = nombre LET proceso.num_emp = despl_emp[curr1].num_emp LET proceso.departamento = despl_emp[curr1].departamento LET proceso.nivel_emp = despl_emp[curr1].nivel_emp LET proceso.cod_puesto = despl_emp[curr1].cod_puesto DISPLAY BY NAME proceso.num_emp,proceso.departamento, proceso.nivel_emp,proceso.cod_puesto,descrip1 NEXT FIELD num3_emp WHEN INFIELD (num3_emp) CALL busca_empleado() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE NEXT FIELD num3_emp END IF IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num3_emp END IF LET descrip2 = nombre LET proceso.num3_emp = despl_emp[curr1].num_emp LET proceso.departamento3 = despl_emp[curr1].departamento LET proceso.nivel3_emp = despl_emp[curr1].nivel_emp LET proceso.cod3_puesto = despl_emp[curr1].cod_puesto DISPLAY BY NAME proceso.num3_emp,proceso.departamento3, proceso.nivel3_emp,proceso.cod3_puesto, descrip2 NEXT FIELD recomendacion WHEN INFIELD (num1_emp) CALL busca_empleado() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE NEXT FIELD num1_emp END IF IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num1_emp END IF LET descrip4 = nombre LET proceso.num1_emp = despl_emp[curr1].num_emp LET proceso.departamento1 = despl_emp[curr1].departamento LET proceso.nivel1_emp = despl_emp[curr1].nivel_emp LET proceso.cod1_puesto = despl_emp[curr1].cod_puesto DISPLAY BY NAME proceso.num1_emp,proceso.departamento1, proceso.nivel1_emp,proceso.cod1_puesto, descrip4 NEXT FIELD num2_emp WHEN INFIELD (num2_emp) CALL busca_empleado() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE NEXT FIELD num2_emp END IF IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num2_emp END IF LET descrip5 = nombre LET proceso.num2_emp = despl_emp[curr1].num_emp LET proceso.departamento2 = despl_emp[curr1].departamento LET proceso.nivel2_emp = despl_emp[curr1].nivel_emp LET proceso.cod2_puesto = despl_emp[curr1].cod_puesto DISPLAY BY NAME proceso.num2_emp,proceso.departamento2, proceso.nivel2_emp,proceso.cod2_puesto, descrip5 NEXT FIELD cod2_puesto END CASE ## CHEQUEA QUE LOS CAMPOS MODIFICABLES NO ESTEN EN BLANCO AFTER FIELD num_emp IF proceso.num_emp IS NOT NULL THEN SELECT departamento,nivel_emp,cod_puesto,nom1_emp,nom2_emp, apell1_emp,apell2_emp INTO proceso.departamento,proceso.nivel_emp,proceso.cod_puesto, nombre1,nombre2,apellido1,apellido2 FROM adtb00003 WHERE num_emp = proceso.num_emp and status_t is null IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_emp END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_emp END IF LET descrip1 = nombre1 clipped," ",nombre2 clipped," ", apellido1 clipped," ",apellido2 clipped DISPLAY BY NAME proceso.departamento,proceso.nivel_emp, proceso.cod_puesto,descrip1 NEXT FIELD num3_emp AFTER FIELD num3_emp IF proceso.num3_emp IS NOT NULL THEN SELECT departamento,nivel_emp,cod_puesto,nom1_emp,nom2_emp, apell1_emp,apell2_emp INTO proceso.departamento3,proceso.nivel3_emp, proceso.cod3_puesto,nombre3,nombre4,apellido3, apellido4 FROM adtb00003 WHERE num_emp = proceso.num3_emp and status_t is null IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num3_emp END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num3_emp END IF LET descrip2 = nombre3 clipped," ",nombre4 clipped," ",apellido3 clipped," ",apellido4 clipped DISPLAY BY NAME proceso.departamento3,proceso.nivel3_emp,proceso.cod3_puesto, descrip2 NEXT FIELD recomendacion AFTER FIELD recomendacion IF proceso.recomendacion IS NOT NULL THEN IF proceso.recomendacion = 1 THEN LET verdad = "N" CALL contrato() IF verdad = "S" THEN NEXT FIELD recomendacion END IF LET descrip = "ACEPTARLO" END IF IF proceso.recomendacion = 2 THEN LET descrip = "MANTENERLO EN ARCHIVO" END IF IF proceso.recomendacion = 3 THEN LET descrip = "NO LE INTERESA" END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD recomendacion END IF DISPLAY BY NAME descrip AFTER FIELD num1_emp IF proceso.num1_emp IS NOT NULL THEN SELECT departamento,nivel_emp,cod_puesto,nom1_emp,nom2_emp, apell1_emp,apell2_emp INTO proceso.departamento1,proceso.nivel1_emp, proceso.cod1_puesto,nombre5,nombre6,apellido5, apellido6 FROM adtb00003 WHERE num_emp = proceso.num1_emp and status_t is null IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num1_emp END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num1_emp END IF LET descrip4 = nombre5 clipped," ",nombre6 clipped," ",apellido5 clipped," ",apellido6 clipped DISPLAY BY NAME proceso.departamento1,proceso.nivel1_emp,proceso.cod1_puesto, descrip4 NEXT FIELD num2_emp AFTER FIELD num2_emp IF proceso.num2_emp IS NOT NULL THEN SELECT departamento,nivel_emp,cod_puesto,nom1_emp,nom2_emp, apell1_emp,apell2_emp INTO proceso.departamento2,proceso.nivel2_emp, proceso.cod2_puesto,nombre7,nombre8,apellido7, apellido8 FROM adtb00003 WHERE num_emp = proceso.num2_emp and status_t is null IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num2_emp END IF ELSE LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num2_emp END IF LET descrip5 = nombre7 clipped," ",nombre8 clipped," ",apellido7 clipped," ",apellido8 clipped DISPLAY BY NAME proceso.departamento2,proceso.nivel2_emp,proceso.cod2_puesto, descrip5 EXIT INPUT #### 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 END INPUT ## AQUI SE MODIFICAN LOS CAMPOS DEL ARREGLO FOR idx = 1 to 3 LET arr_proceso[idx].cod_requi = NULL LET arr_proceso[idx].requisito = NULL LET arr_proceso[idx].ind_requi = NULL DISPLAY arr_proceso[idx].cod_requi to consart[idx].cod_requi DISPLAY arr_proceso[idx].requisito to consart[idx].requisito DISPLAY arr_proceso[idx].ind_requi to consart[idx].ind_requi END FOR ## SE SELECCIONAN LOS CAMPOS DEL ARREGLO DECLARE buscando CURSOR FOR SELECT a.cod_requi,b.requisito,a.ind_requi FROM adtb00018 a,adtb00008 b WHERE a.cod_requi = b.cod_requi and a.cod_sol = proceso.cod_sol and a.status_t is null ORDER BY 1 LET idx = 1 FOREACH buscando INTO arr_proceso[idx].* IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) EXIT FOREACH END IF LET idx = idx + 1 END FOREACH CALL set_count(idx - 1) INPUT ARRAY arr_proceso WITHOUT DEFAULTS FROM consart.* ## VENTANA QUE BUSCA LOS REQUISITOS DE SELECCION Y CONTRATACION ON KEY (CONTROL-W) LET curr = arr_curr() LET scr_l = scr_line() CASE WHEN INFIELD (cod_requi) CALL busca_requisito() IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE NEXT FIELD cod_requi END IF IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_requi END IF SELECT requisito INTO seleccion.requisito FROM adtb00008 WHERE cod_requi = arr_proceso[curr].cod_requi and status_t is null LET arr_proceso[curr].requisito = seleccion.requisito DISPLAY arr_proceso[curr].cod_requi to consart[scr_l].cod_requi DISPLAY arr_proceso[curr].requisito to consart[scr_l].requisito LET control = "N" CALL repeticion() IF control = "S" THEN NEXT FIELD cod_requi END IF NEXT FIELD ind_requi END CASE BEFORE ROW LET curr = arr_curr() LET scr_l = scr_line() ## VERIFICA QUE LA ACCION EXISTA EN EL CATALOGO DE ACCIONES Y ADEMAS QUE NO ## SE REPITA AFTER FIELD cod_requi IF arr_proceso[curr].cod_requi IS NOT NULL THEN LET control = "N" CALL repeticion() IF control = "S" THEN NEXT FIELD cod_requi END IF SELECT @requisito INTO seleccion.requisito FROM adtb00008 WHERE @cod_requi = arr_proceso[curr].cod_requi and status_t is null IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_requi END IF LET arr_proceso[curr].requisito = seleccion.requisito DISPLAY arr_proceso[curr].requisito to consart[scr_l].requisito END IF AFTER INPUT IF status < 0 THEN IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF EXIT INPUT END INPUT ## AQUI SE ACTUALIZA EL REGISTRO DELETE FROM adtb00018 WHERE cod_sol = proceso.cod_sol FOR idx = 1 to arr_count() IF arr_proceso[idx].cod_requi is not null and arr_proceso[idx].requisito is not null and arr_proceso[idx].ind_requi is not null THEN INSERT INTO adtb00018 VALUES (proceso.fecha,proceso.cod_sol, proceso.num_emp,proceso.departamento,proceso.nivel_emp, proceso.cod_puesto,proceso.num3_emp,proceso.departamento3, proceso.nivel3_emp,proceso.cod3_puesto,proceso.recomendacion, proceso.otros_com,proceso.num1_emp,proceso.departamento1, proceso.nivel1_emp,proceso.cod1_puesto,proceso.num2_emp, proceso.departamento2,proceso.nivel2_emp,proceso.cod2_puesto, arr_proceso[idx].cod_requi,arr_proceso[idx].ind_requi,null, SUSER_SNAME (),GETDATE(),null,null) END IF END FOR LET numero_msg = 13 CALL msg(numero_msg) IF status < 0 THEN END IF COMMAND KEY ("L") "eLiminar" UPDATE adtb00018 SET status_t = "E" WHERE cod_sol = proceso.cod_sol LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM FOR idx = 1 to 3 LET arr_proceso[idx].cod_requi = NULL LET arr_proceso[idx].requisito = NULL LET arr_proceso[idx].ind_requi = NULL DISPLAY arr_proceso[idx].cod_requi to consart[idx].cod_requi DISPLAY arr_proceso[idx].requisito to consart[idx].requisito DISPLAY arr_proceso[idx].ind_requi to consart[idx].ind_requi END FOR EXIT MENU END MENU END FUNCTION ## VENTANA DE LOS EMPLEADOS DE LA EMPRESA ## VENTANA DE LAS ACCIONES DE SELECCION Y CONTRATACION FUNCTION busca_requisito() OPEN WINDOW busqueda1 AT 10,10 WITH FORM "adfmwd005" ATTRIBUTE (BORDER,FORM LINE FIRST + 2, comment line last) CONSTRUCT criterio ON adtb00008.requisito FROM adtb00008.requisito LET selec = "SELECT cod_requi,requisito FROM adtb00008 ", " WHERE ", " status_t is null AND ", criterio clipped, "ORDER BY 1 " PREPARE busco FROM selec DECLARE local CURSOR FOR busco LET idx = 1 FOREACH local INTO buscar_requi[idx].* IF status = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) EXIT FOREACH END IF LET despl_requi[idx].cod_requi = buscar_requi[idx].cod_requi LET despl_requi[idx].requisito = buscar_requi[idx].requisito clipped LET idx = idx + 1 END FOREACH CALL set_count(idx-1) DISPLAY ARRAY despl_requi TO s_requisito.* LET curr = arr_curr() LET arr_proceso[curr1].cod_requi = despl_requi[curr].cod_requi LET seleccion.requisito = despl_requi[curr].requisito CLOSE WINDOW busqueda1 END FUNCTION ## VERIFICA QUE NO SE REPITA LA ACCION DE SELECCION Y CONTRATACION FUNCTION repeticion() DEFINE requi_ant RECORD cod_requi SMALLINT END RECORD LET requi_ant.cod_requi = arr_proceso[curr].cod_requi FOR idx = 1 to arr_count() IF idx != curr THEN IF arr_proceso[idx].cod_requi IS NOT NULL THEN IF arr_proceso[idx].cod_requi = requi_ant.cod_requi THEN LET numero_msg = 135 CALL msg(numero_msg) LET control = "S" ELSE IF control != "S" THEN LET control = "N" END IF END IF END IF END IF END FOR END FUNCTION ## SELECCIONA Y DESPLEGA LOS DATOS DEL REGISTRO ESCOGIDO FUNCTION selecto() SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp INTO nombre1,nombre2,apellido1,apellido2 FROM adtb00003 WHERE num_emp = proceso.num_emp and departamento = proceso.departamento and nivel_emp = proceso.nivel_emp and cod_puesto = proceso.cod_puesto LET descrip1 = nombre1 clipped," ",nombre2 clipped," ",apellido1 clipped," ",apellido2 clipped SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp INTO nombre3,nombre4,apellido3,apellido4 FROM adtb00003 WHERE num_emp = proceso.num3_emp and departamento = proceso.departamento3 and nivel_emp = proceso.nivel3_emp and cod_puesto = proceso.cod3_puesto LET descrip2 = nombre3 clipped," ",nombre4 clipped," ",apellido3 clipped," ",apellido4 clipped SELECT nom1_sol,nom2_sol,apell1_sol,apell2_sol INTO nombre1,nombre2,apellido1,apellido2 FROM adtb00012 WHERE cod_sol = proceso.cod_sol LET descrip3 = nombre1 clipped," ",nombre2 clipped," ",apellido1 clipped," ",apellido2 clipped SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp INTO nombre5,nombre6,apellido5,apellido6 FROM adtb00003 WHERE num_emp = proceso.num1_emp and departamento = proceso.departamento1 and nivel_emp = proceso.nivel1_emp and cod_puesto = proceso.cod1_puesto LET descrip4 = nombre5 clipped," ",nombre6 clipped," ",apellido5 clipped," ",apellido6 clipped SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp INTO nombre7,nombre8,apellido7,apellido8 FROM adtb00003 WHERE num_emp = proceso.num2_emp and departamento = proceso.departamento2 and nivel_emp = proceso.nivel2_emp and cod_puesto = proceso.cod2_puesto LET descrip5 = nombre7 clipped," ",nombre8 clipped," ",apellido7 clipped," ",apellido8 clipped IF proceso.recomendacion = 1 THEN LET descrip = "ACEPTARLO" END IF IF proceso.recomendacion = 2 THEN LET descrip = "MANTENERLO EN ARCHIVO" END IF IF proceso.recomendacion = 3 THEN LET descrip = "NO LE INTERESA" END IF DISPLAY BY NAME proceso.*,descrip,descrip1,descrip2,descrip3, descrip4,descrip5 END FUNCTION