2027 lines
74 KiB
Plaintext
2027 lines
74 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : ADPRMT017
|
|
OBJETIVO : Capturar, Modificar, Eliminar registros de la
|
|
Tabla de Accion de Personal
|
|
PROGRAMADOR : Tadeo A. Ferreras F.
|
|
FECHA REALIZACION : Junio 09, 1993
|
|
------------------------------------------------------------------
|
|
}
|
|
GLOBALS "adprgb000.4gl"
|
|
|
|
#### VARIABLES PARA MODULO DE CALCULO DE VACACIONES ##########
|
|
DEFINE cantidad_d INTEGER
|
|
DEFINE vacacion RECORD
|
|
fecha_sal DATE,
|
|
fecha_ent DATE,
|
|
dias_tomados INTEGER,
|
|
dias_vac INTEGER
|
|
END RECORD
|
|
DEFINE nombre_a CHAR(31),
|
|
cedula1 CHAR(20),
|
|
tipo_sexo CHAR(9)
|
|
|
|
DEFINE fech1,fecha5 DATE
|
|
DEFINE optt CHAR(1)
|
|
DEFINE dia INTEGER
|
|
DEFINE sueldo1,sueldo2 DECIMAL(10,2)
|
|
DEFINE necesario RECORD LIKE adtb00012.*
|
|
DEFINE personal RECORD LIKE adtb00003.*
|
|
DEFINE trx LIKE adtb00028.num_trx
|
|
DEFINE act_dep,depende,z SMALLINT
|
|
DEFINE dias1,dias2,vacac INTEGER
|
|
DEFINE tipo_sangre CHAR(3)
|
|
|
|
#### MODULO MENU GENERAL DE ACCION DE NOMINA #####
|
|
|
|
FUNCTION adprmt017()
|
|
CLEAR SCREEN
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 24,
|
|
COMMENT LINE 23,
|
|
PROMPT LINE 23
|
|
|
|
OPEN FORM adfmmt017 FROM "adfmmt017"
|
|
DISPLAY FORM adfmmt017
|
|
CALL pantalla()
|
|
DISPLAY "adprmt017" AT 4,3 ATTRIBUTE(RED)
|
|
DISPLAY "Accion de Personal" AT 6,34 ATTRIBUTE(BLACK)
|
|
|
|
MENU "OPCIONES"
|
|
COMMAND "Adicionar" "<Esc> Adiciona Registro <Ctrl-C> Cancela Operacion"
|
|
let int_flag = false
|
|
SELECT num_trx INTO trx FROM adtb00028 WHERE clave = "AN"
|
|
IF trx IS NULL THEN
|
|
LET trx = 0
|
|
END IF
|
|
LET trx = trx + 1
|
|
CLEAR FORM
|
|
CALL adpcad017()
|
|
|
|
COMMAND "Consultar-modificar"
|
|
"<Esc> Realiza Busqueda <Ctrl-C> Cancela Operacion"
|
|
let int_flag = false
|
|
CALL adpcmf017()
|
|
|
|
COMMAND "Salir" "Retorna Menu Anterior"
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
##### PARA INSERTAR INFORMACION ####
|
|
|
|
FUNCTION adpcad017()
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO
|
|
|
|
INPUT BY NAME acc_per.*
|
|
|
|
## VENTANAS PARA BUSCAR LOS DEPARTAMENTOS, NIVELES, PUESTOS, EMPLEADOS
|
|
## Y LOS MOVIMIENTOS DE LOS EMPLEADOS
|
|
ON KEY (CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD (departamento)
|
|
CALL busca_depto()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD departamento
|
|
END IF
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
LET acc_per.departamento = req_per.depart
|
|
DISPLAY BY NAME acc_per.departamento
|
|
NEXT FIELD nivel_emp
|
|
|
|
WHEN INFIELD (nivel_emp)
|
|
CALL busca_nivel()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD nivel_emp
|
|
END IF
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD nivel_emp
|
|
END IF
|
|
|
|
DISPLAY BY NAME acc_per.nivel_emp
|
|
NEXT FIELD cod_puesto
|
|
|
|
WHEN INFIELD (cod_mto)
|
|
CALL busca_movi()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD cod_mto
|
|
END IF
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mto
|
|
END IF
|
|
|
|
DISPLAY BY NAME acc_per.cod_mto,acc_per.sec_mto,
|
|
mov_emp.desc_mto
|
|
|
|
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 descrip3 = nombre
|
|
LET acc_per.num1_emp = despl_emp[curr1].num_emp
|
|
LET acc_per.departamento1 = despl_emp[curr1].departamento
|
|
LET acc_per.nivel1_emp = despl_emp[curr1].nivel_emp
|
|
LET acc_per.cod1_puesto = despl_emp[curr1].cod_puesto
|
|
|
|
DISPLAY BY NAME acc_per.num1_emp,acc_per.departamento1,
|
|
acc_per.nivel1_emp,acc_per.cod1_puesto
|
|
DISPLAY BY NAME descrip3 ATTRIBUTE(blue)
|
|
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 descrip4 = nombre
|
|
LET acc_per.num2_emp = despl_emp[curr1].num_emp
|
|
LET acc_per.departamento2 = despl_emp[curr1].departamento
|
|
LET acc_per.nivel2_emp = despl_emp[curr1].nivel_emp
|
|
LET acc_per.cod2_puesto = despl_emp[curr1].cod_puesto
|
|
|
|
DISPLAY BY NAME acc_per.num2_emp,acc_per.departamento2,
|
|
acc_per.nivel2_emp,acc_per.cod2_puesto
|
|
DISPLAY BY NAME descrip4 ATTRIBUTE(blue)
|
|
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 descrip5 = nombre
|
|
LET acc_per.num3_emp = despl_emp[curr1].num_emp
|
|
LET acc_per.departamento3 = despl_emp[curr1].departamento
|
|
LET acc_per.nivel3_emp = despl_emp[curr1].nivel_emp
|
|
LET acc_per.cod3_puesto = despl_emp[curr1].cod_puesto
|
|
|
|
DISPLAY BY NAME acc_per.num3_emp,acc_per.departamento3,
|
|
acc_per.nivel3_emp,acc_per.cod3_puesto
|
|
DISPLAY BY NAME descrip5
|
|
|
|
WHEN INFIELD (cod_puesto)
|
|
CALL busca_puesto()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD cod_puesto
|
|
END IF
|
|
LET acc_per.cod_puesto = req_per.cod_puesto_r
|
|
SELECT k.nom_puesto INTO puesto.nom_puesto
|
|
FROM adtb00004 k
|
|
WHERE k.cod_puesto = acc_per.cod_puesto
|
|
|
|
DISPLAY BY NAME acc_per.cod_puesto
|
|
DISPLAY BY NAME puesto.nom_puesto ATTRIBUTE(blue)
|
|
NEXT FIELD sueldo_ac
|
|
END CASE
|
|
|
|
## NUMERACION AUTOMATICA DEL FORMULARIO DE ACCION DE PERSONAL
|
|
BEFORE FIELD cod_mto
|
|
LET acc_per.num_trx = trx
|
|
DISPLAY BY NAME acc_per.num_trx ATTRIBUTE(blue)
|
|
|
|
AFTER FIELD cod_mto
|
|
IF acc_per.cod_mto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mto
|
|
END IF
|
|
|
|
## CHEQUEA QUE EXISTA EL MOVIMIENTO EN LA TABLA DE MOVIMIENTOS DE EMPLEADOS
|
|
AFTER FIELD sec_mto
|
|
IF acc_per.sec_mto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_mto
|
|
END IF
|
|
|
|
SELECT q.desc_mto INTO mov_emp.desc_mto FROM adtb00009 q
|
|
WHERE q.cod_mto = acc_per.cod_mto AND
|
|
q.sec_mto = acc_per.sec_mto AND
|
|
q.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mto
|
|
END IF
|
|
|
|
## CHEQUEA QUE EL REGISTRO NO EXISTA EN LA TABLA DE ACCION DE PERSONAL.
|
|
SELECT * FROM adtb00020
|
|
WHERE cod_sol = acc_per.cod_sol AND cod_mto = acc_per.cod_mto AND
|
|
sec_mto = acc_per.sec_mto
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sol
|
|
END IF
|
|
|
|
DISPLAY BY NAME mov_emp.desc_mto ATTRIBUTE(blue)
|
|
|
|
IF acc_per.cod_mto > 1 THEN
|
|
LET acc_per.cod_sol = NULL
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
IF acc_per.cod_mto = 3 THEN
|
|
IF acc_per.sec_mto > 1 AND acc_per.sec_mto <> 20 THEN
|
|
CALL cantidad_dias()
|
|
END IF
|
|
END IF
|
|
|
|
## CHEQUEA QUE NO SE REPITA EL MOVIMIENTO DE EMPLEO PARA EL MISMO SOLICITANTE
|
|
AFTER FIELD cod_sol
|
|
IF acc_per.cod_mto = 1 THEN
|
|
IF acc_per.sec_mto != 6 THEN
|
|
|
|
SELECT UNIQUE j.cod_sol FROM adtb00020 j
|
|
WHERE j.cod_sol = acc_per.cod_sol
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sol
|
|
END IF
|
|
END IF
|
|
|
|
## SELECCIONA LA FECHA DE INGRESO Y EL SUELDO DE LA TABLA DE CONTRATACION
|
|
## Y SELECCION DE EMPLEADOS
|
|
|
|
SELECT UNIQUE a.fech_efec,a.sueldo,b.cod_sol
|
|
INTO contra.fech_efec,contra.sueldo,parece.cod_sol
|
|
FROM adtb00019 a,adtb00018 b
|
|
WHERE a.cod_sol = b.cod_sol and b.cod_sol = acc_per.cod_sol and
|
|
a.status_t is null
|
|
|
|
LET acc_per.fech_efec = contra.fech_efec
|
|
LET acc_per.sueldo_ac = contra.sueldo
|
|
DISPLAY BY NAME acc_per.fech_efec,acc_per.sueldo_ac
|
|
END IF
|
|
|
|
|
|
IF acc_per.cod_mto > 1 THEN
|
|
LET acc_per.cod_sol = NULL
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
## VERIFICA QUE EL SOLICITANTE EXISTE EN LA TABLA DE SOLICITANTES. SI EXISTE
|
|
## LO PRESENTA EN PANTALLA.
|
|
|
|
SELECT * INTO necesario.* FROM adtb00012
|
|
WHERE @cod_sol = acc_per.cod_sol
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_sol
|
|
END IF
|
|
|
|
LET nombre9 = necesario.nom1_sol
|
|
LET nombre10 = necesario.nom2_sol
|
|
LET apellido9 = necesario.apell1_sol
|
|
LET apellido10 = necesario.apell2_sol
|
|
LET descrip1 = nombre9 clipped," ",nombre10 clipped
|
|
LET descrip2 = apellido9 clipped," ",apellido10 clipped
|
|
LET tipo_sangre = necesario.tipo_sangre
|
|
LET acc_per.tipo_sangre = tipo_sangre
|
|
|
|
DISPLAY BY NAME descrip1,descrip2 ATTRIBUTE(blue)
|
|
DISPLAY BY NAME acc_per.tipo_sangre
|
|
|
|
## SELECCIONA LOS DATOS FAMILIARES DEL SOLICITANTE PARA INTRODUCIRLOS EN LA
|
|
## TABLA DE ACTUALIZACION DE INFORMACION PERSONAL
|
|
|
|
AFTER FIELD fecha
|
|
IF acc_per.fecha IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
AFTER FIELD fech_efec
|
|
IF acc_per.fech_efec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fech_efec
|
|
END IF
|
|
|
|
AFTER FIELD num_emp
|
|
IF acc_per.num_emp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
## CHEQUEA QUE EL EMPLEADO EXISTA EN LA TABLA DE EMPLEADOS. SI EXISTE
|
|
## DESPLEGA TODA LA INFORMACION REFERENTE AL EMPLEADO.
|
|
|
|
IF acc_per.cod_mto > 1 THEN
|
|
SELECT b.departamento,b.nivel_emp,b.cod_puesto,b.nom1_emp,
|
|
b.nom2_emp,b.apell1_emp,b.apell2_emp,b.sueldo_ac,
|
|
b.nomina,b.estado_civil,b.tipo_sangre
|
|
INTO acc_per.departamento,acc_per.nivel_emp,acc_per.cod_puesto,
|
|
nombre9,nombre10,apellido9,apellido10,acc_per.sueldo_ac,
|
|
acc_per.nomina,acc_per.estado_civil,acc_per.tipo_sangre
|
|
FROM adtb00003 b
|
|
WHERE b.num_emp = acc_per.num_emp AND (b.status_t IS NULL OR
|
|
b.status_t != "E")
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
## VERIFICA QUE EL DEPARTAMENTO EXISTA EN LA TABLA DE DEPARTAMENTOS
|
|
|
|
SELECT nom_dpto INTO nombre_dpto FROM adtb00001
|
|
WHERE departamento = acc_per.departamento
|
|
|
|
## VERIFICA QUE EL PUESTO EXISTA EN LA TABLA DE PUESTOS
|
|
SELECT k.nom_puesto INTO puesto.nom_puesto FROM adtb00004 k
|
|
WHERE k.cod_puesto = acc_per.cod_puesto and k.status_t is null
|
|
|
|
SELECT UNIQUE a.sexo INTO acc_per.sexo FROM adtb00021 a
|
|
WHERE a.num_emp = acc_per.num_emp AND a.cod_par = 0 AND
|
|
a.sec_par = 0
|
|
|
|
IF acc_per.sexo = "M" THEN
|
|
LET tipo_sexo = "MASCULINO"
|
|
END IF
|
|
|
|
IF acc_per.sexo = "F" THEN
|
|
LET tipo_sexo = "FEMENINO"
|
|
END IF
|
|
|
|
DISPLAY BY NAME acc_per.sexo,tipo_sexo
|
|
|
|
IF acc_per.nomina IS NOT NULL THEN
|
|
IF acc_per.nomina = "S" THEN
|
|
LET descr = "SEMANAL"
|
|
END IF
|
|
IF acc_per.nomina = "Q" THEN
|
|
LET descr = "QUINCENAL"
|
|
END IF
|
|
END IF
|
|
|
|
IF acc_per.estado_civil = "S" THEN
|
|
LET estado = "SOLTERO"
|
|
END IF
|
|
IF acc_per.estado_civil = "C" THEN
|
|
LET estado = "CASADO"
|
|
END IF
|
|
|
|
LET descrip1 = nombre9 clipped," ",nombre10 clipped
|
|
LET descrip2 = apellido9 clipped," ",apellido10 clipped
|
|
|
|
DISPLAY BY NAME acc_per.departamento,acc_per.nivel_emp,
|
|
acc_per.cod_puesto,acc_per.sueldo_ac,
|
|
acc_per.nomina,acc_per.estado_civil,
|
|
acc_per.tipo_sangre,descrip1,descrip2,estado,
|
|
nombre_dpto,puesto.nom_puesto,descr
|
|
ATTRIBUTE(blue)
|
|
|
|
END IF
|
|
|
|
## VERIFICA QUE EL SOLICITANTE YA HA SIDO INCLUIDO COMO EMPLEADO. SI YA
|
|
## FUE INCLUIDO CHEQUEA QUE EXISTA EN LA TABLA DE EMPLEADOS
|
|
|
|
IF acc_per.cod_mto = 1 and acc_per.sec_mto != 6 THEN
|
|
SELECT num_emp from adtb00003 where num_emp = acc_per.num_emp
|
|
|
|
IF status != NOTFOUND THEN
|
|
LET numero_msg = 12
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
END IF
|
|
|
|
IF acc_per.cod_mto > 1 THEN
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
END IF
|
|
|
|
IF acc_per.cod_mto = 3 THEN
|
|
IF acc_per.sec_mto > 1 AND acc_per.sec_mto <> 20 THEN
|
|
CALL cantidad_dias()
|
|
END IF
|
|
END IF
|
|
|
|
## CHEQUEA QUE EL DEPARTAMENTO EXISTA EN LA TABLA DE DEPARTAMENTOS
|
|
AFTER FIELD departamento
|
|
IF acc_per.departamento IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
SELECT nom_dpto INTO nombre_dpto FROM adtb00001
|
|
WHERE departamento = acc_per.departamento
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
DISPLAY BY NAME nombre_dpto ATTRIBUTE(blue)
|
|
|
|
AFTER FIELD nivel_emp
|
|
IF acc_per.nivel_emp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD nivel_emp
|
|
END IF
|
|
|
|
## CHEQUEA QUE EL PUESTO EXISTA EN LA TABLA DE PUESTOS
|
|
AFTER FIELD cod_puesto
|
|
IF acc_per.cod_puesto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_puesto
|
|
ELSE
|
|
SELECT k.nom_puesto INTO puesto.nom_puesto FROM adtb00004 k
|
|
WHERE k.cod_puesto =acc_per.cod_puesto and k.status_t is null
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_puesto
|
|
END IF
|
|
|
|
## SELECCIONA EL NOMBRE DEL EMPLEADO DE LA TABLA DE EMPLEADOS
|
|
IF acc_per.cod_sol IS NULL THEN
|
|
SELECT b.nom1_emp,b.nom2_emp,b.apell1_emp,b.apell2_emp
|
|
INTO nombre9,nombre10,apellido9,apellido10
|
|
FROM adtb00003 b
|
|
WHERE b.num_emp = acc_per.num_emp and
|
|
(b.status_t is null or b.status_t != "E")
|
|
|
|
IF status >= 0 THEN
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
CLEAR SCREEN
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
ELSE
|
|
LET nombre9 = necesario.nom1_sol
|
|
LET nombre10 = necesario.nom2_sol
|
|
LET apellido9 = necesario.apell1_sol
|
|
LET apellido10 = necesario.apell2_sol
|
|
END IF
|
|
END IF
|
|
LET descrip1 = nombre9 clipped," ",nombre10 clipped
|
|
LET descrip2 = apellido9 clipped," ",apellido10 clipped
|
|
|
|
DISPLAY BY NAME descrip1,descrip2,puesto.nom_puesto ATTRIBUTE(blue)
|
|
|
|
## LLAMA LA VENTANA DE LAS VACACIONES
|
|
IF acc_per.cod_mto = 3 AND acc_per.sec_mto = 1 THEN
|
|
CALL vacaciones()
|
|
IF vacacion.fecha_sal IS NOT NULL THEN
|
|
NEXT FIELD observacion
|
|
ELSE
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD sueldo_ac
|
|
IF acc_per.sueldo_ac IS NULL OR acc_per.sueldo_ac < 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sueldo_ac
|
|
END IF
|
|
|
|
AFTER FIELD nomina
|
|
IF acc_per.nomina IS NOT NULL THEN
|
|
IF acc_per.nomina = "S" THEN
|
|
LET descr = "SEMANAL"
|
|
END IF
|
|
IF acc_per.nomina = "Q" THEN
|
|
LET descr = "QUINCENAL"
|
|
END IF
|
|
ELSE
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD nomina
|
|
END IF
|
|
DISPLAY BY NAME descr ATTRIBUTE(blue)
|
|
|
|
AFTER FIELD sexo
|
|
IF acc_per.sexo IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sexo
|
|
END IF
|
|
|
|
IF acc_per.sexo = "M" THEN
|
|
LET tipo_sexo = "MASCULINO"
|
|
ELSE
|
|
IF acc_per.sexo = "F" THEN
|
|
LET tipo_sexo = "FEMENINO"
|
|
ELSE
|
|
NEXT FIELD sexo
|
|
END IF
|
|
END IF
|
|
DISPLAY BY NAME tipo_sexo ATTRIBUTE(blue)
|
|
|
|
AFTER FIELD estado_civil
|
|
IF acc_per.estado_civil IS NOT NULL THEN
|
|
IF acc_per.estado_civil = "S" THEN
|
|
LET estado = "SOLTERO"
|
|
END IF
|
|
IF acc_per.estado_civil = "C" THEN
|
|
LET estado = "CASADO"
|
|
END IF
|
|
ELSE
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD estado_civil
|
|
END IF
|
|
DISPLAY BY NAME estado ATTRIBUTE(blue)
|
|
|
|
## AQUI SE INCLUYE EL EMPLEADO QUE SOLICITA LA ACCION DE PERSONAL
|
|
AFTER FIELD num1_emp
|
|
IF acc_per.num1_emp IS NOT NULL THEN
|
|
SELECT b.departamento,b.nivel_emp,b.cod_puesto,
|
|
b.nom1_emp,b.nom2_emp,b.apell1_emp,b.apell2_emp
|
|
INTO acc_per.departamento1,acc_per.nivel1_emp,
|
|
acc_per.cod1_puesto,nombre1,nombre2,apellido1,apellido2
|
|
FROM adtb00003 b
|
|
WHERE b.num_emp = acc_per.num1_emp AND
|
|
(b.status_t IS NULL or b.status_t != "E")
|
|
|
|
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 descrip3 = nombre1 clipped," ",nombre2 clipped," ",
|
|
apellido1 clipped," ",apellido2 clipped
|
|
|
|
DISPLAY BY NAME acc_per.departamento1,acc_per.nivel1_emp,
|
|
acc_per.cod1_puesto,descrip3 ATTRIBUTE(blue)
|
|
|
|
## AQUI SE INCLUYE EL EMPLEADO QUE AUTORIZA LA ACCION DE PERSONAL
|
|
AFTER FIELD num2_emp
|
|
IF acc_per.num2_emp IS NOT NULL THEN
|
|
SELECT b.departamento,b.nivel_emp,b.cod_puesto,
|
|
b.nom1_emp,b.nom2_emp,b.apell1_emp,b.apell2_emp
|
|
INTO acc_per.departamento2,acc_per.nivel2_emp,
|
|
acc_per.cod2_puesto,nombre3,nombre4,apellido3,apellido4
|
|
FROM adtb00003 b
|
|
WHERE b.num_emp = acc_per.num2_emp AND
|
|
(b.status_t IS NULL OR b.status_t != "E")
|
|
|
|
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 descrip4 = nombre3 clipped," ",nombre4 clipped," ",
|
|
apellido3 clipped," ",apellido4 clipped
|
|
|
|
DISPLAY BY NAME acc_per.departamento2,acc_per.nivel2_emp,
|
|
acc_per.cod2_puesto,descrip4 ATTRIBUTE(blue)
|
|
|
|
## AQUI SE INCLUYE EL EMPLEADO QUE APRUEBA LA ACCION DE PERSONAL
|
|
AFTER FIELD num3_emp
|
|
IF acc_per.num3_emp IS NOT NULL THEN
|
|
SELECT b.departamento,b.nivel_emp,b.cod_puesto,
|
|
b.nom1_emp,b.nom2_emp,b.apell1_emp,b.apell2_emp
|
|
INTO acc_per.departamento3,acc_per.nivel3_emp,
|
|
acc_per.cod3_puesto,nombre5,nombre6,apellido5,apellido6
|
|
FROM adtb00003 b
|
|
WHERE b.num_emp = acc_per.num3_emp AND
|
|
(b.status_t IS NULL or b.status_t != "E")
|
|
|
|
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 descrip5 = nombre5 clipped," ",nombre6 clipped," ",
|
|
apellido5 clipped," ",apellido6 clipped
|
|
|
|
DISPLAY BY NAME acc_per.departamento3,acc_per.nivel3_emp,
|
|
acc_per.cod3_puesto,descrip5 ATTRIBUTE(blue)
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
IF acc_per.fecha IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
IF acc_per.fech_efec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fech_efec
|
|
END IF
|
|
|
|
IF acc_per.num_emp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num_emp
|
|
END IF
|
|
|
|
IF acc_per.departamento IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
IF acc_per.nivel_emp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD nivel_emp
|
|
END IF
|
|
|
|
IF acc_per.cod_puesto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_puesto
|
|
END IF
|
|
|
|
IF acc_per.sueldo_ac IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sueldo_ac
|
|
END IF
|
|
|
|
IF acc_per.nomina IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD nomina
|
|
END IF
|
|
|
|
IF acc_per.estado_civil IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD estado_civil
|
|
END IF
|
|
|
|
IF acc_per.cod_mto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_mto
|
|
END IF
|
|
|
|
IF acc_per.sec_mto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sec_mto
|
|
END IF
|
|
|
|
IF acc_per.num1_emp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num1_emp
|
|
END IF
|
|
|
|
IF acc_per.num2_emp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num2_emp
|
|
END IF
|
|
|
|
IF acc_per.num3_emp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD num3_emp
|
|
END IF
|
|
END INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
## SE ASEGURA DE QUE TODA LA INFORMACION ESTE CORRECTA
|
|
PROMPT "Informacion Correcta? (S/N).." FOR CHAR opt
|
|
LET opt = UPSHIFT(opt)
|
|
|
|
## SI NO HA OCURRIDO NINGUN PROBLEMA SE PROCEDE A INSERTAR LA INFORMACION
|
|
## EN LA TABLA DE ACCION DE PERSONAL
|
|
IF opt = "S" THEN
|
|
INSERT INTO adtb00020
|
|
VALUES(acc_per.num_trx,acc_per.cod_sol,acc_per.fecha,acc_per.fech_efec,
|
|
acc_per.num_emp,acc_per.departamento,acc_per.nivel_emp,
|
|
acc_per.cod_puesto,acc_per.sueldo_ac,acc_per.nomina,
|
|
acc_per.estado_civil,acc_per.tipo_sangre,acc_per.cod_mto,
|
|
acc_per.sec_mto,acc_per.observacion,acc_per.num1_emp,
|
|
acc_per.departamento1,acc_per.nivel1_emp,acc_per.cod1_puesto,
|
|
acc_per.num2_emp,acc_per.departamento2,acc_per.nivel2_emp,
|
|
acc_per.cod2_puesto,acc_per.num3_emp,acc_per.departamento3,
|
|
acc_per.nivel3_emp,acc_per.cod3_puesto,null,USER,CURRENT,
|
|
null,null)
|
|
|
|
IF acc_per.cod_mto = 3 AND (acc_per.sec_mto > 1 AND
|
|
acc_per.sec_mto <> 20) THEN
|
|
INSERT INTO adtb00032
|
|
VALUES (acc_per.num_trx,acc_per.num_emp,acc_per.cod_mto,
|
|
acc_per.sec_mto,acc_per.fech_efec,cantidad_d,
|
|
NULL,USER,CURRENT,NULL,NULL)
|
|
END IF
|
|
|
|
################## DATOS PARA INSERTAR O MODIFICAR PETB00003 ############
|
|
LET personal.num_emp = acc_per.num_emp
|
|
LET personal.departamento = acc_per.departamento
|
|
LET personal.nivel_emp = acc_per.nivel_emp
|
|
LET personal.cod_puesto = acc_per.cod_puesto
|
|
LET personal.apell1_emp = necesario.apell1_sol clipped
|
|
LET personal.apell2_emp = necesario.apell2_sol clipped
|
|
LET personal.nom1_emp = necesario.nom1_sol clipped
|
|
LET personal.nom2_emp = necesario.nom2_sol clipped
|
|
LET personal.calle = necesario.calle clipped
|
|
LET personal.casa_num = necesario.casa_num clipped
|
|
LET personal.barrio = necesario.barrio clipped
|
|
LET personal.urbanizacion = necesario.urbanizacion clipped
|
|
LET personal.telefono = necesario.telefono
|
|
LET personal.fech_nac = necesario.fech_nac
|
|
LET personal.cod_nac = necesario.cod_nac
|
|
LET personal.estado_civil = necesario.estado_civil
|
|
LET personal.tipo_sangre = necesario.tipo_sangre
|
|
LET personal.cedula = necesario.cedula
|
|
LET personal.serie = necesario.serie
|
|
LET personal.licencia = necesario.licencia
|
|
LET personal.sueldo_ac = acc_per.sueldo_ac
|
|
LET personal.nomina = acc_per.nomina
|
|
LET personal.estado_civil = acc_per.estado_civil
|
|
LET personal.tipo_sangre = acc_per.tipo_sangre
|
|
LET personal.fech_efec = acc_per.fech_efec
|
|
|
|
## SE SELECCIONAN LOS NOMBRES Y LAS FECHAS DE NACIMIENTO DE LOS HIJOS PARA
|
|
## INTRODUCIRLOS EN LA TABLA DE ACTUALIZACION DE INFORMACION PERSONAL
|
|
|
|
################## DATOS PARA INSERTAR PETB00021 ############
|
|
LET actual.apell1_emp = necesario.apell1_sol clipped
|
|
LET actual.apell2_emp = necesario.apell2_sol clipped
|
|
LET actual.nom1_emp = necesario.nom1_sol clipped
|
|
LET actual.nom2_emp = necesario.nom2_sol clipped
|
|
LET actual.telefono = necesario.telefono
|
|
LET actual.calle = necesario.calle clipped
|
|
LET actual.casa_num = necesario.casa_num clipped
|
|
LET actual.barrio = necesario.barrio clipped
|
|
LET actual.urbanizacion = necesario.urbanizacion clipped
|
|
LET actual.estado_civil = necesario.estado_civil
|
|
LET actual.licencia = necesario.licencia
|
|
LET actual.num_emp = acc_per.num_emp
|
|
LET actual.departamento = acc_per.departamento
|
|
LET actual.nivel_emp = acc_per.nivel_emp
|
|
LET actual.cod_puesto = acc_per.cod_puesto
|
|
|
|
## AQUI SE INSERTA O ACTUALIZA INFORMACION EN LA TABLA DE EMPLEADOS
|
|
IF acc_per.cod_mto = 1 THEN
|
|
LET personal.paga_seg = "N"
|
|
SELECT UNIQUE num_emp FROM adtb00003
|
|
WHERE num_emp = acc_per.num_emp
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
INSERT INTO adtb00003 VALUES(personal.*)
|
|
ELSE
|
|
UPDATE adtb00003 SET (departamento,nivel_emp,cod_puesto,
|
|
nomina,status_t,us_crea,fech_crea,
|
|
us_mod,fech_mod) =
|
|
(acc_per.departamento,acc_per.nivel_emp,
|
|
acc_per.cod_puesto,acc_per.nomina,
|
|
null,user,current,user,current)
|
|
WHERE num_emp = personal.num_emp
|
|
END IF
|
|
|
|
## AQUI SE INSERTA LA INFORMACION EN LA TABLA DE REGISTRO DE INFORMACION
|
|
## PERSONAL
|
|
LET nombre_a = personal.nom1_emp CLIPPED," ",
|
|
personal.apell1_emp CLIPPED
|
|
LET cedula1 = personal.cedula USING "############","-",
|
|
personal.serie USING "<<<"
|
|
|
|
SELECT UNIQUE num_emp FROM adtb00021
|
|
WHERE num_emp = acc_per.num_emp AND cod_par = 0 AND sec_par = 0
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
|
|
DECLARE hijos CURSOR FOR
|
|
SELECT a.cod_par,a.sec_par,a.nombre,a.cedula,a.sexo,
|
|
a.fecha_nac
|
|
FROM adtb00013 a
|
|
WHERE a.cod_sol = acc_per.cod_sol and a.status_t is null
|
|
ORDER BY 1,2
|
|
|
|
FOREACH hijos INTO adtb13.*
|
|
INSERT INTO adtb00021 VALUES(acc_per.num_emp, adtb13.*,
|
|
NULL,USER,CURRENT,NULL,NULL)
|
|
END FOREACH
|
|
|
|
END IF
|
|
END IF
|
|
|
|
## ACTUALIZA LA INFORMACION DEL EMPLEADO EN CUANTO A LOS MOVIMIENTOS DE LOS
|
|
## CAMBIOS DE LA ACCION DE PERSONAL
|
|
|
|
IF acc_per.cod_mto = 2 THEN
|
|
|
|
IF acc_per.sec_mto = 4 THEN
|
|
UPDATE adtb00003 SET estado_civil = acc_per.estado_civil
|
|
WHERE num_emp = acc_per.num_emp
|
|
END IF
|
|
|
|
IF acc_per.sec_mto = 7 THEN
|
|
UPDATE adtb00003 SET nivel_emp = acc_per.nivel_emp
|
|
WHERE num_emp = acc_per.num_emp
|
|
END IF
|
|
END IF
|
|
|
|
## INDICA EN LA MAESTRA DE EMPLEADOS SI EL EMPLEADO ESTA INCAPACITADO
|
|
IF acc_per.cod_mto = 3 THEN
|
|
IF acc_per.sec_mto=2 OR acc_per.sec_mto=3 OR
|
|
acc_per.sec_mto=4 THEN
|
|
UPDATE adtb00003 SET status_t="I"
|
|
WHERE num_emp=acc_per.num_emp
|
|
END IF
|
|
|
|
## ACTUALIZA LA TABLA DE LAS VACACIONES.
|
|
IF acc_per.sec_mto = 1 THEN
|
|
INSERT INTO adtb00032
|
|
VALUES(acc_per.num_trx,acc_per.num_emp,3,1,
|
|
vacacion.fecha_sal,vacacion.dias_tomados,
|
|
null,USER,CURRENT,null,null)
|
|
END IF
|
|
END IF
|
|
|
|
## ACTUALIZA LA TABLA DE EMPLEADOS EN CUANTO AL MOVIMIENTO DE LAS TERMINACIONES
|
|
## DE LA ACCION DE PERSONAL
|
|
|
|
IF acc_per.cod_mto = 4 THEN
|
|
UPDATE adtb00003 SET status_t = "T"
|
|
WHERE num_emp = acc_per.num_emp
|
|
|
|
UPDATE adtb00021 SET status_t = "T"
|
|
WHERE num_emp = acc_per.num_emp
|
|
END IF
|
|
|
|
## ACTUALIZA LA TABLA DE SECUENCIA NUMERICA
|
|
UPDATE adtb00028 SET num_trx = acc_per.num_trx
|
|
WHERE clave = "AN"
|
|
|
|
## ACTUALIZA LA TABLA DE HISTORICO DEL EMPLEADO
|
|
DELETE FROM adtb00017 WHERE num_trx = acc_per.num_trx
|
|
INSERT INTO adtb00017
|
|
VALUES (acc_per.num_trx,acc_per.cod_sol,acc_per.num_emp,
|
|
acc_per.departamento,acc_per.nivel_emp,
|
|
acc_per.cod_puesto,acc_per.fech_efec,acc_per.sueldo_ac,
|
|
acc_per.cod_mto,acc_per.sec_mto,puesto.nivel_sal,
|
|
acc_per.sueldo_lq,null,user,current,null,null)
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
CLEAR FORM
|
|
LABEL preg:
|
|
PROMPT "Desea Imprimir Este Documento (S/N)?..." FOR CHAR optt
|
|
LET optt = UPSHIFT(optt)
|
|
IF optt IS NULL OR (optt != "S" AND optt != "N") THEN
|
|
GOTO preg
|
|
END IF
|
|
IF optt = "S" THEN
|
|
START REPORT imp_accion TO PRINTER
|
|
OUTPUT TO REPORT imp_accion()
|
|
FINISH REPORT imp_accion
|
|
END IF
|
|
END IF
|
|
END FUNCTION
|
|
|
|
FUNCTION adpcmf017()
|
|
## Aqui se prepara para la captura del criterio de seleccion
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
CONSTRUCT criterio ON a.num_trx,a.cod_mto,a.sec_mto,a.num_emp
|
|
FROM num_trx,cod_mto,sec_mto,num_emp
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
RETURN
|
|
END IF
|
|
|
|
LET selec =
|
|
"SELECT UNIQUE a.num_trx,a.cod_mto,a.sec_mto,a.cod_sol,a.fecha, ",
|
|
" a.fech_efec,a.num_emp,a.departamento,a.nivel_emp,a.cod_puesto, ",
|
|
" a.sueldo_ac,a.nomina,a.estado_civil,b.sexo,a.tipo_sangre, ",
|
|
" a.sueldo_ac,a.observacion,a.num1_emp,a.departamento1, ",
|
|
" a.nivel1_emp,a.cod1_puesto,a.num2_emp,a.departamento2, ",
|
|
" a.nivel2_emp,a.cod2_puesto,a.num3_emp,a.departamento3, ",
|
|
" a.nivel3_emp,a.cod3_puesto,a.us_crea,a.fech_crea,a.us_mod, ",
|
|
" a.fech_mod ",
|
|
"FROM adtb00020 a,adtb00021 b ",
|
|
"WHERE a.num_emp=b.num_emp AND a.status_t is null AND ",criterio clipped,
|
|
" AND b.cod_par = 0 AND b.sec_par = 0 ORDER BY 5"
|
|
|
|
PREPARE busca FROM selec
|
|
DECLARE datos SCROLL CURSOR FOR busca
|
|
OPEN datos
|
|
|
|
FETCH FIRST datos INTO acc_per.*,personal.us_crea,personal.fech_crea,
|
|
personal.us_mod,personal.fech_mod
|
|
|
|
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
|
|
DISPLAY BY NAME personal.us_crea,personal.fech_crea,personal.us_mod,
|
|
personal.fech_mod
|
|
CALL desplegar()
|
|
|
|
MENU "OPCIONES "
|
|
COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado"
|
|
FETCH NEXT datos INTO acc_per.*,personal.us_crea,personal.fech_crea,
|
|
personal.us_mod,personal.fech_mod
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
DISPLAY BY NAME personal.us_crea,personal.fech_crea,personal.us_mod,
|
|
personal.fech_mod
|
|
CALL desplegar()
|
|
|
|
COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado"
|
|
FETCH PREVIOUS datos INTO acc_per.*,personal.us_crea,personal.fech_crea,
|
|
personal.us_mod,personal.fech_mod
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
DISPLAY BY NAME personal.us_crea,personal.fech_crea,personal.us_mod,
|
|
personal.fech_mod
|
|
CALL desplegar()
|
|
|
|
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
|
|
FETCH FIRST datos INTO acc_per.*,personal.us_crea,personal.fech_crea,
|
|
personal.us_mod,personal.fech_mod
|
|
CALL desplegar()
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
|
|
DISPLAY BY NAME personal.us_crea,personal.fech_crea,personal.us_mod,
|
|
personal.fech_mod
|
|
CALL desplegar()
|
|
|
|
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
|
|
FETCH LAST datos INTO acc_per.*,personal.us_crea,personal.fech_crea,
|
|
personal.us_mod,personal.fech_mod
|
|
CALL desplegar()
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
|
|
DISPLAY BY NAME personal.us_crea,personal.fech_crea,personal.us_mod,
|
|
personal.fech_mod
|
|
CALL desplegar()
|
|
|
|
COMMAND "Escoger" "<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
|
|
|
|
INPUT BY NAME acc_per.fecha,acc_per.fech_efec,acc_per.departamento,
|
|
acc_per.nivel_emp,acc_per.cod_puesto,acc_per.sueldo_ac,
|
|
acc_per.nomina,acc_per.estado_civil,acc_per.sexo,
|
|
acc_per.tipo_sangre,acc_per.sueldo_lq,
|
|
acc_per.observacion,acc_per.num1_emp,
|
|
acc_per.departamento1,acc_per.nivel1_emp,
|
|
acc_per.cod1_puesto,acc_per.num2_emp,
|
|
acc_per.departamento2,acc_per.nivel2_emp,
|
|
acc_per.cod2_puesto,acc_per.num3_emp,
|
|
acc_per.departamento3,acc_per.nivel3_emp,
|
|
acc_per.cod3_puesto WITHOUT DEFAULTS
|
|
|
|
## VENTANAS PARA BUSCAR LOS DEPARTAMENTOS, NIVELES, PUESTOS Y EMPLEADOS
|
|
ON KEY (CONTROL-W)
|
|
CASE
|
|
WHEN INFIELD (departamento)
|
|
CALL busca_depto()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD departamento
|
|
END IF
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
LET acc_per.departamento = req_per.depart
|
|
DISPLAY BY NAME acc_per.departamento
|
|
NEXT FIELD nivel_emp
|
|
|
|
WHEN INFIELD (nivel_emp)
|
|
CALL busca_nivel()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD nivel_emp
|
|
END IF
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD nivel_emp
|
|
END IF
|
|
|
|
DISPLAY BY NAME acc_per.nivel_emp
|
|
NEXT FIELD cod_puesto
|
|
|
|
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 descrip3 = nombre
|
|
LET acc_per.num1_emp = despl_emp[curr1].num_emp
|
|
LET acc_per.departamento1 = despl_emp[curr1].departamento
|
|
LET acc_per.nivel1_emp = despl_emp[curr1].nivel_emp
|
|
LET acc_per.cod1_puesto = despl_emp[curr1].cod_puesto
|
|
|
|
DISPLAY BY NAME acc_per.num1_emp,acc_per.departamento1,
|
|
acc_per.nivel1_emp,acc_per.cod1_puesto
|
|
DISPLAY BY NAME descrip3 ATTRIBUTE(blue)
|
|
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 descrip4 = nombre
|
|
LET acc_per.num2_emp = despl_emp[curr1].num_emp
|
|
LET acc_per.departamento2 = despl_emp[curr1].departamento
|
|
LET acc_per.nivel2_emp = despl_emp[curr1].nivel_emp
|
|
LET acc_per.cod2_puesto = despl_emp[curr1].cod_puesto
|
|
|
|
DISPLAY BY NAME acc_per.num2_emp,acc_per.departamento2,
|
|
acc_per.nivel2_emp,acc_per.cod2_puesto
|
|
DISPLAY BY NAME descrip4 ATTRIBUTE(blue)
|
|
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 descrip5 = nombre
|
|
LET acc_per.num3_emp = despl_emp[curr1].num_emp
|
|
LET acc_per.departamento3 = despl_emp[curr1].departamento
|
|
LET acc_per.nivel3_emp = despl_emp[curr1].nivel_emp
|
|
LET acc_per.cod3_puesto = despl_emp[curr1].cod_puesto
|
|
|
|
DISPLAY BY NAME acc_per.num3_emp,acc_per.departamento3,
|
|
acc_per.nivel3_emp,acc_per.cod3_puesto
|
|
DISPLAY BY NAME descrip5
|
|
|
|
WHEN INFIELD (cod_puesto)
|
|
CALL busca_puesto()
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
NEXT FIELD cod_puesto
|
|
END IF
|
|
LET acc_per.cod_puesto = req_per.cod_puesto_r
|
|
SELECT k.nom_puesto INTO puesto.nom_puesto
|
|
FROM adtb00004 k
|
|
WHERE k.cod_puesto = acc_per.cod_puesto
|
|
|
|
DISPLAY BY NAME acc_per.cod_puesto
|
|
DISPLAY BY NAME puesto.nom_puesto ATTRIBUTE(blue)
|
|
NEXT FIELD sueldo_ac
|
|
END CASE
|
|
|
|
AFTER FIELD fecha
|
|
IF acc_per.fecha IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha
|
|
END IF
|
|
|
|
AFTER FIELD fech_efec
|
|
IF acc_per.fech_efec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fech_efec
|
|
END IF
|
|
|
|
IF acc_per.cod_mto = 3 THEN
|
|
IF acc_per.sec_mto > 1 AND acc_per.sec_mto <> 20 THEN
|
|
CALL cantidad_dias()
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD departamento
|
|
IF acc_per.departamento IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
ELSE
|
|
SELECT b.nom_dpto INTO nombre_dpto FROM adtb00001 b
|
|
WHERE b.departamento = acc_per.departamento and
|
|
b.status_t is null
|
|
|
|
DISPLAY BY NAME nombre_dpto
|
|
END IF
|
|
|
|
AFTER FIELD nivel_emp
|
|
IF acc_per.nivel_emp IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD nivel_emp
|
|
END IF
|
|
|
|
AFTER FIELD cod_puesto
|
|
IF acc_per.cod_puesto IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_puesto
|
|
ELSE
|
|
SELECT a.nom1_emp,a.nom2_emp,a.apell1_emp,a.apell2_emp
|
|
INTO nombre9,nombre10,apellido9,apellido10
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = acc_per.num_emp and
|
|
(a.status_t is null OR a.status_t != "E")
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
IF status >= 0 THEN
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
CLEAR SCREEN
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
|
|
SELECT a.nom_puesto INTO puesto.nom_puesto
|
|
FROM adtb00004 a
|
|
WHERE a.cod_puesto = acc_per.cod_puesto and
|
|
a.status_t is null
|
|
|
|
LET descrip1 = nombre9 clipped," ",nombre10 clipped
|
|
LET descrip2 = apellido9 clipped," ",apellido10 clipped
|
|
DISPLAY BY NAME descrip1,descrip2,puesto.nom_puesto
|
|
END IF
|
|
|
|
AFTER FIELD sueldo_ac
|
|
IF acc_per.sueldo_ac IS NULL OR acc_per.sueldo_ac < 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sueldo_ac
|
|
END IF
|
|
|
|
AFTER FIELD nomina
|
|
IF acc_per.nomina IS NOT NULL THEN
|
|
IF acc_per.nomina = "S" THEN
|
|
LET descr = "SEMANAL"
|
|
END IF
|
|
IF acc_per.nomina = "Q" THEN
|
|
LET descr = "QUINCENAL"
|
|
END IF
|
|
ELSE
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD nomina
|
|
END IF
|
|
DISPLAY BY NAME descr ATTRIBUTE(blue)
|
|
|
|
AFTER FIELD sexo
|
|
IF acc_per.sexo IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD sexo
|
|
END IF
|
|
|
|
IF acc_per.sexo = "M" THEN
|
|
LET tipo_sexo = "MASCULINO"
|
|
ELSE
|
|
IF acc_per.sexo = "F" THEN
|
|
LET tipo_sexo = "FEMENINO"
|
|
ELSE NEXT FIELD sexo
|
|
END IF
|
|
END IF
|
|
DISPLAY BY NAME tipo_sexo ATTRIBUTE(blue)
|
|
|
|
AFTER FIELD estado_civil
|
|
IF acc_per.estado_civil IS NOT NULL THEN
|
|
IF acc_per.estado_civil = "S" THEN
|
|
LET estado = "SOLTERO"
|
|
END IF
|
|
IF acc_per.estado_civil = "C" THEN
|
|
LET estado = "CASADO"
|
|
END IF
|
|
ELSE
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD estado_civil
|
|
END IF
|
|
DISPLAY BY NAME estado ATTRIBUTE(blue)
|
|
|
|
## AQUI SE MODIFICA EL EMPLEADO QUE SOLICITA LA ACCION DE PERSONAL
|
|
AFTER FIELD num1_emp
|
|
IF acc_per.num1_emp IS NOT NULL THEN
|
|
SELECT b.departamento,b.nivel_emp,b.cod_puesto,
|
|
b.nom1_emp,b.nom2_emp,b.apell1_emp,b.apell2_emp
|
|
INTO acc_per.departamento1,acc_per.nivel1_emp,
|
|
acc_per.cod1_puesto,nombre1,nombre2,apellido1,
|
|
apellido2
|
|
FROM adtb00003 b
|
|
WHERE b.num_emp = acc_per.num1_emp AND
|
|
(b.status_t IS NULL OR b.status_t != "E")
|
|
|
|
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 descrip3 = nombre1 clipped," ",nombre2 clipped," ",
|
|
apellido1 clipped," ",apellido2 clipped
|
|
|
|
DISPLAY BY NAME acc_per.departamento1,acc_per.nivel1_emp,
|
|
acc_per.cod1_puesto,descrip3
|
|
ATTRIBUTE(blue)
|
|
|
|
NEXT FIELD num2_emp
|
|
|
|
## AQUI SE MODIFICA EL EMPLEADO QUE AUTORIZA LA ACCION DE PERSONAL
|
|
AFTER FIELD num2_emp
|
|
IF acc_per.num2_emp IS NOT NULL THEN
|
|
SELECT b.departamento,b.nivel_emp,b.cod_puesto,
|
|
b.nom1_emp,b.nom2_emp,b.apell1_emp,b.apell2_emp
|
|
INTO acc_per.departamento2,acc_per.nivel2_emp,
|
|
acc_per.cod2_puesto,nombre3,nombre4,apellido3,
|
|
apellido4
|
|
FROM adtb00003 b
|
|
WHERE b.num_emp = acc_per.num2_emp AND
|
|
(b.status_t IS NULL OR b.status_t != "E")
|
|
|
|
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 descrip4 = nombre3 clipped," ",nombre4 clipped," ",
|
|
apellido3 clipped," ",apellido4 clipped
|
|
|
|
DISPLAY BY NAME acc_per.departamento2,acc_per.nivel2_emp,
|
|
acc_per.cod2_puesto,descrip4
|
|
ATTRIBUTE(blue)
|
|
|
|
NEXT FIELD num3_emp
|
|
|
|
## AQUI SE MODIFICA EL EMPLEADO QUE APRUEBA LA ACCION DE PERSONAL
|
|
|
|
AFTER FIELD num3_emp
|
|
IF acc_per.num3_emp IS NOT NULL THEN
|
|
SELECT b.departamento,b.nivel_emp,b.cod_puesto,
|
|
b.nom1_emp,b.nom2_emp,b.apell1_emp,b.apell2_emp
|
|
INTO acc_per.departamento3,acc_per.nivel3_emp,
|
|
acc_per.cod3_puesto,nombre5,nombre6,apellido5,
|
|
apellido6
|
|
FROM adtb00003 b
|
|
WHERE b.num_emp = acc_per.num3_emp AND
|
|
(b.status_t IS NULL OR b.status_t != "E")
|
|
|
|
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 descrip5 = nombre5 clipped," ",nombre6 clipped," ",
|
|
apellido5 clipped," ",apellido6 clipped
|
|
|
|
DISPLAY BY NAME acc_per.departamento3,acc_per.nivel3_emp,
|
|
acc_per.cod3_puesto,descrip5
|
|
ATTRIBUTE(blue)
|
|
|
|
#### Verifica si el usuario presiono la tecla <Ctrl-C>
|
|
|
|
END INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = FALSE
|
|
CLEAR FORM
|
|
RETURN
|
|
END IF
|
|
|
|
UPDATE adtb00020 SET fecha = acc_per.fecha,
|
|
fech_efec = acc_per.fech_efec,
|
|
departamento = acc_per.departamento,
|
|
nivel_emp = acc_per.nivel_emp,
|
|
cod_puesto = acc_per.cod_puesto,
|
|
sueldo_ac = acc_per.sueldo_ac,
|
|
nomina = acc_per.nomina,
|
|
estado_civil = acc_per.estado_civil,
|
|
tipo_sangre = acc_per.tipo_sangre,
|
|
observacion = acc_per.observacion,
|
|
num1_emp = acc_per.num1_emp,
|
|
departamento1 = acc_per.departamento1,
|
|
nivel1_emp = acc_per.nivel1_emp,
|
|
cod1_puesto = acc_per.cod1_puesto,
|
|
num2_emp = acc_per.num2_emp,
|
|
departamento2 = acc_per.departamento2,
|
|
nivel2_emp = acc_per.nivel2_emp,
|
|
cod2_puesto = acc_per.cod2_puesto,
|
|
num3_emp = acc_per.num3_emp,
|
|
departamento3 = acc_per.departamento3,
|
|
nivel3_emp = acc_per.nivel3_emp,
|
|
cod3_puesto = acc_per.cod3_puesto,
|
|
us_mod = USER,
|
|
fech_mod = CURRENT
|
|
WHERE num_emp = acc_per.num_emp and num_trx = acc_per.num_trx
|
|
|
|
IF acc_per.cod_mto = 3 THEN
|
|
IF acc_per.sec_mto > 1 AND acc_per.sec_mto <> 20 THEN
|
|
|
|
UPDATE adtb00032 SET (num_dia,us_mod,fech_mod)=
|
|
(cantidad_d,USER,CURRENT)
|
|
WHERE @num_trx = acc_per.num_trx AND @num_emp = acc_per.num_emp AND
|
|
@cod_mov = acc_per.cod_mto AND @sec_mov = acc_per.sec_mto AND
|
|
@status_t IS NULL
|
|
END IF
|
|
END IF
|
|
|
|
IF acc_per.cod_mto = 1 THEN
|
|
UPDATE adtb00003 SET departamento = acc_per.departamento,
|
|
nivel_emp = acc_per.nivel_emp,
|
|
cod_puesto = acc_per.cod_puesto,
|
|
estado_civil = acc_per.estado_civil,
|
|
tipo_sangre = acc_per.tipo_sangre,
|
|
sueldo_ac = acc_per.sueldo_ac,
|
|
nomina = acc_per.nomina,
|
|
fech_efec = acc_per.fech_efec
|
|
WHERE @num_emp = acc_per.num_emp
|
|
END IF
|
|
|
|
UPDATE adtb00021 SET sexo = acc_per.sexo WHERE num_emp = acc_per.num_emp
|
|
AND cod_par = 0 AND sec_par=0
|
|
UPDATE adtb00017 SET departamento = acc_per.departamento,
|
|
nivel_emp = acc_per.nivel_emp,
|
|
cod_puesto = acc_per.cod_puesto,
|
|
fech_efec = acc_per.fech_efec,
|
|
salario = acc_per.sueldo_ac,
|
|
liquidacion = acc_per.sueldo_lq
|
|
WHERE num_emp = acc_per.num_emp and num_trx = acc_per.num_trx and
|
|
cod_mto = acc_per.cod_mto and sec_mto = acc_per.sec_mto
|
|
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
LABEL preg:
|
|
PROMPT "Desea Imprimir Este Documento (S/N)?..." FOR CHAR optt
|
|
LET optt = UPSHIFT(optt)
|
|
IF optt IS NULL OR (optt != "S" AND optt != "N") THEN
|
|
GOTO preg
|
|
END IF
|
|
IF optt = "S" THEN
|
|
START REPORT imp_accion TO PRINTER
|
|
OUTPUT TO REPORT imp_accion()
|
|
FINISH REPORT imp_accion
|
|
END IF
|
|
|
|
COMMAND KEY ("L") "eLiminar"
|
|
UPDATE adtb00020 SET status_t = "E"
|
|
WHERE num_trx = acc_per.num_trx
|
|
|
|
UPDATE adtb00017 SET status_t = "E"
|
|
WHERE num_trx = acc_per.num_trx
|
|
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
|
|
COMMAND "Retornar" "Retorna al menu anterior"
|
|
CLEAR FORM
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION desplegar()
|
|
IF acc_per.cod_sol is not null THEN
|
|
SELECT nom1_sol,nom2_sol,apell1_sol,apell2_sol
|
|
INTO nombre9,nombre10,apellido9,apellido10
|
|
FROM adtb00012
|
|
WHERE cod_sol = acc_per.cod_sol
|
|
ELSE
|
|
SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp
|
|
INTO nombre9,nombre10,apellido9,apellido10
|
|
FROM adtb00003
|
|
WHERE num_emp = acc_per.num_emp
|
|
END IF
|
|
|
|
LET descrip1 = nombre9 clipped," ",nombre10 clipped
|
|
LET descrip2 = apellido9 clipped," ",apellido10 clipped
|
|
|
|
IF acc_per.nomina = "S" THEN
|
|
LET descr = "SEMANAL"
|
|
END IF
|
|
IF acc_per.nomina = "Q" THEN
|
|
LET descr = "QUINCENAL"
|
|
END IF
|
|
IF acc_per.nomina = "V" THEN
|
|
LET descr = "VENDEDOR"
|
|
END IF
|
|
|
|
IF acc_per.estado_civil = "S" THEN
|
|
LET estado = "SOLTERO"
|
|
END IF
|
|
IF acc_per.estado_civil = "C" THEN
|
|
LET estado = "CASADO"
|
|
END IF
|
|
|
|
IF acc_per.sexo = "M" THEN
|
|
LET tipo_sexo = "MASCULINO"
|
|
END IF
|
|
|
|
IF acc_per.sexo = "F" THEN
|
|
LET tipo_sexo = "FEMENINO"
|
|
END IF
|
|
|
|
SELECT a.desc_mto INTO desc_mto FROM adtb00009 a
|
|
WHERE a.cod_mto = acc_per.cod_mto and a.sec_mto = acc_per.sec_mto
|
|
|
|
SELECT nom_dpto INTO nombre_dpto FROM adtb00001
|
|
WHERE departamento = acc_per.departamento
|
|
|
|
SELECT b.nom_puesto INTO puesto.nom_puesto FROM adtb00004 b
|
|
WHERE b.cod_puesto = acc_per.cod_puesto
|
|
|
|
SELECT c.nom1_emp,c.nom2_emp,c.apell1_emp,c.apell2_emp
|
|
INTO nombre1,nombre2,apellido1,apellido2
|
|
FROM adtb00003 c
|
|
WHERE c.num_emp = acc_per.num1_emp and
|
|
c.departamento = acc_per.departamento1 and
|
|
c.nivel_emp = acc_per.nivel1_emp and
|
|
c.cod_puesto = acc_per.cod1_puesto
|
|
LET descrip3 =
|
|
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 = acc_per.num2_emp and
|
|
departamento = acc_per.departamento2 and
|
|
nivel_emp = acc_per.nivel2_emp and
|
|
cod_puesto = acc_per.cod2_puesto
|
|
|
|
LET descrip4 =
|
|
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 = acc_per.num3_emp and
|
|
departamento = acc_per.departamento3 and
|
|
nivel_emp = acc_per.nivel3_emp and
|
|
cod_puesto = acc_per.cod3_puesto
|
|
|
|
LET descrip5 =
|
|
nombre5 clipped," ",nombre6 clipped," ",apellido5 clipped," ",apellido6 clipped
|
|
|
|
# Busqueda del empleado en la table historica del empleado
|
|
SELECT liquidacion INTO acc_per.sueldo_lq
|
|
FROM adtb00017
|
|
WHERE num_trx = acc_per.num_trx and num_emp = acc_per.num_emp
|
|
|
|
IF acc_per.sueldo_lq is null THEN
|
|
LET acc_per.sueldo_lq = 0
|
|
END IF
|
|
|
|
DISPLAY BY NAME acc_per.*
|
|
DISPLAY BY NAME descrip1,descrip2,nombre_dpto,puesto.nom_puesto,descr,
|
|
desc_mto,estado,tipo_sexo,descrip3,descrip4,descrip5
|
|
ATTRIBUTE(blue)
|
|
|
|
END FUNCTION
|
|
|
|
## FUNCION PARA EL CALCULO Y REGISTRO DE LAS VACACIONES
|
|
FUNCTION vacaciones()
|
|
LET int_flag = FALSE
|
|
OPEN WINDOW adwindow7 AT 10,12 WITH FORM "adfmwd007"
|
|
ATTRIBUTE(BORDER,FORM LINE FIRST + 2)
|
|
|
|
LABEL vorver:
|
|
INPUT BY NAME vacacion.*
|
|
AFTER FIELD fecha_sal
|
|
IF vacacion.fecha_sal IS NULL THEN
|
|
LET vacacion.fecha_sal = today
|
|
END IF
|
|
|
|
AFTER FIELD fecha_ent
|
|
IF vacacion.fecha_ent IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_ent
|
|
END IF
|
|
|
|
## VERIFICA QUE LA FECHA DE REGRESO DE VACACIONES NO SEA MENOR QUE LA FECHA
|
|
## DE INICIO DE LAS VACACIONES
|
|
IF vacacion.fecha_ent < vacacion.fecha_sal THEN
|
|
LET numero_msg = 51
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_ent
|
|
END IF
|
|
|
|
####### CALCULO DE LOS DIAS VACACIONADOS ###########
|
|
LET vacacion.dias_tomados = vacacion.fecha_ent - vacacion.fecha_sal
|
|
|
|
SELECT a.fech_efec INTO fecha5 FROM adtb00003 a
|
|
WHERE a.num_emp = acc_per.num_emp
|
|
|
|
############## PROCESO PARA CALCULAR LOS DIAS QUE DEBE VACACIONAR #######
|
|
|
|
LET vacac = vacacion.fecha_sal - fecha5
|
|
LET dias1 = vacac/365
|
|
|
|
SELECT sum(a.num_dia) INTO dia FROM adtb00032 a
|
|
WHERE a.num_emp = acc_per.num_emp AND a.cod_mov = 3 AND a.sec_mov = 1 AND
|
|
a.fecha <= vacacion.fecha_ent AND a.status_t IS NULL
|
|
|
|
IF dia IS NULL THEN
|
|
LET dia = 0
|
|
END IF
|
|
|
|
IF acc_per.nivel_emp = 1 THEN
|
|
LET dias2= (dias1 * 17)
|
|
ELSE
|
|
|
|
IF vacac < 365 THEN
|
|
LET dias2 = 7
|
|
END IF
|
|
|
|
IF vacac >= 365 AND vacac < 1825 THEN
|
|
LET dias2= 10 * dias1
|
|
ELSE
|
|
IF vacac >= 1825 AND vacac < 3650 THEN
|
|
LET dias1= dias1 - 4
|
|
LET dias2= (dias1 * 14) + 40
|
|
ELSE
|
|
LET dias1= (dias1 - 9)
|
|
LET dias2= (dias1 * 17) + 110
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
LET dias2 = dias2 - dia
|
|
LET vacacion.dias_vac = dias2
|
|
|
|
LET vacacion.dias_vac = dia
|
|
DISPLAY BY NAME vacacion.dias_tomados,vacacion.dias_vac
|
|
|
|
IF vacacion.dias_vac != 0 THEN
|
|
IF vacacion.dias_vac <= 0 THEN
|
|
LET numero_msg= 144
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fecha_sal
|
|
END IF
|
|
END IF
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
INITIALIZE vacacion.* TO NULL
|
|
LET numero_msg = 4
|
|
LET int_flag = FALSE
|
|
CLOSE WINDOW adwindow7
|
|
END IF
|
|
|
|
# IF numero_msg != 4 THEN
|
|
PROMPT "Informacion Correcta? (S/N).." FOR CHAR opt
|
|
LET opt = UPSHIFT(opt)
|
|
IF opt = "S" THEN
|
|
CLOSE WINDOW adwindow7
|
|
ELSE
|
|
GOTO vorver
|
|
END IF
|
|
#END IF
|
|
END FUNCTION
|
|
|
|
## VENTANA DE LOS NIVELES DEL LOS EMPLEADOS
|
|
FUNCTION busca_nivel()
|
|
OPEN WINDOW busqueda AT 10,10 WITH FORM "adfmwd008"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2, comment line last)
|
|
|
|
CONSTRUCT criterio ON adtb00024.nivel_emp FROM adtb00024.nivel_emp
|
|
|
|
LET selec = "SELECT nivel_emp,desc_nivel FROM adtb00024 ",
|
|
"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_nivel[idx].*
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET despl_nivel[idx].nivel_emp = buscar_nivel[idx].nivel_emp
|
|
LET despl_nivel[idx].desc_nivel = buscar_nivel[idx].desc_nivel clipped
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
DISPLAY ARRAY despl_nivel TO s_nivel.*
|
|
LET curr = arr_curr()
|
|
LET acc_per.nivel_emp = despl_nivel[curr].nivel_emp
|
|
LET nivelar.desc_nivel = despl_nivel[curr].desc_nivel
|
|
|
|
CLOSE WINDOW busqueda
|
|
END FUNCTION
|
|
|
|
## VENTANA DE LOS MOVIMIENTOS DE LA ACCION DE PERSONAL
|
|
FUNCTION busca_movi()
|
|
OPEN WINDOW busqueda1 AT 10,10 WITH FORM "adfmwd009"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2, comment line last)
|
|
|
|
CONSTRUCT criterio ON adtb00009.cod_mto,adtb00009.sec_mto
|
|
FROM adtb00009.cod_mto,adtb00009.sec_mto
|
|
|
|
LET selec1 = "SELECT cod_mto,sec_mto,desc_mto FROM adtb00009 ",
|
|
"WHERE status_t is null AND ",criterio clipped,
|
|
" ORDER BY 1,2 "
|
|
|
|
PREPARE busco1 FROM selec1
|
|
DECLARE local1 CURSOR FOR busco1
|
|
|
|
LET idx = 1
|
|
FOREACH local1 INTO buscar_movi[idx].*
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
LET despl_movi[idx].cod_mto = buscar_movi[idx].cod_mto
|
|
LET despl_movi[idx].sec_mto = buscar_movi[idx].sec_mto
|
|
LET despl_movi[idx].desc_mto = buscar_movi[idx].desc_mto clipped
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
CALL set_count(idx-1)
|
|
DISPLAY ARRAY despl_movi TO s_movi.*
|
|
LET curr = arr_curr()
|
|
LET acc_per.cod_mto = despl_movi[curr].cod_mto
|
|
LET acc_per.sec_mto = despl_movi[curr].sec_mto
|
|
LET mov_emp.desc_mto = despl_movi[curr].desc_mto
|
|
|
|
CLOSE WINDOW busqueda1
|
|
END FUNCTION
|
|
|
|
FUNCTION cantidad_dias()
|
|
OPEN WINDOW ca_dia AT 10,10 WITH FORM "adfmwd015"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2, comment line last)
|
|
|
|
SELECT a.num_dia INTO cantidad_d FROM adtb00032 a
|
|
WHERE a.num_trx = acc_per.num_trx AND a.num_emp = acc_per.num_emp AND
|
|
a.cod_mov = acc_per.cod_mto AND a.sec_mov = acc_per.sec_mto AND
|
|
a.status_t IS NULL
|
|
|
|
INPUT BY NAME cantidad_d WITHOUT DEFAULTS
|
|
|
|
AFTER FIELD cantidad_d
|
|
IF cantidad_d IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cantidad_d
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF cantidad_d IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cantidad_d
|
|
END IF
|
|
END INPUT
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
END IF
|
|
CLOSE WINDOW ca_dia
|
|
END FUNCTION
|
|
|
|
REPORT imp_accion()
|
|
DEFINE doble_of,doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_of,
|
|
normal,doce CHAR(2),
|
|
direccion CHAR(80),
|
|
calle CHAR(10),
|
|
casa_num CHAR(10),
|
|
barrio CHAR(20),
|
|
urbanizacion,descrip CHAR(20),
|
|
telefono CHAR(8),
|
|
cedula INTEGER,
|
|
depende,codigo_s,cod_provincia,codigo_n,serie SMALLINT,
|
|
fecha_nac DATE,
|
|
provincia,nombre_nac CHAR(30)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 4
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 0
|
|
FORMAT
|
|
PAGE HEADER
|
|
LET doble_on = ASCII 14
|
|
LET doble_of = ASCII 20
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 70
|
|
LET comp_on = ASCII 15
|
|
LET comp_of = ASCII 18
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 27, ASCII 80
|
|
# Busca Informaciones Complementarias para el documento
|
|
SELECT a.calle,a.casa_num,a.barrio,a.urbanizacion,a.telefono,a.cedula,
|
|
a.serie
|
|
INTO calle,casa_num,barrio,urbanizacion,telefono,cedula,serie
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = acc_per.num_emp
|
|
LET direccion = calle clipped," ",casa_num clipped,",",barrio clipped," ",
|
|
urbanizacion clipped
|
|
|
|
SELECT UNIQUE cod_sol INTO codigo_s
|
|
FROM adtb00017 WHERE num_emp = acc_per.num_emp and cod_sol is not null
|
|
|
|
SELECT COUNT(*) INTO depende FROM adtb00013
|
|
WHERE cod_sol = codigo_s AND cod_par = 4
|
|
|
|
SELECT @cod_provincia,fech_nac,cod_nac
|
|
INTO cod_provincia,fecha_nac,codigo_n
|
|
FROM adtb00012
|
|
WHERE cod_sol = codigo_s
|
|
|
|
SELECT nombre_provincia INTO provincia
|
|
FROM vetb00020
|
|
WHERE @cod_provincia = cod_provincia
|
|
|
|
SELECT nom_nac INTO nombre_nac
|
|
FROM adtb00007
|
|
WHERE cod_nac = codigo_n
|
|
|
|
SELECT @desc_mto INTO descrip
|
|
FROM adtb00009
|
|
WHERE @cod_mto = acc_per.cod_mto and @sec_mto = acc_per.cod_mto
|
|
|
|
PRINT doble_on,negrillas_on,"RAYOVAC",doble_of,
|
|
COLUMN 54, acc_per.num_trx using "&&&&&&",negrillas_off
|
|
PRINT COLUMN 54,"-------------------------------"
|
|
PRINT COLUMN 24, negrillas_on,"AVISO DE ACCION EN NOMINAS",negrillas_off,
|
|
comp_on,
|
|
COLUMN 62,"|Fecha solicitud",
|
|
COLUMN 99,"|Fecha efectiva"
|
|
PRINT COLUMN 92,"|"," ",acc_per.fecha using "dd/mm/yyyy",
|
|
COLUMN 129,"|"," ",acc_per.fech_efec using "dd/mm/yyyy"
|
|
PRINT COLUMN 92,"|",
|
|
COLUMN 129,"|",comp_of
|
|
PRINT "--------------------------------------------------------------",
|
|
"---------------------",comp_on
|
|
PRINT COLUMN 1, "|Apellidos",
|
|
COLUMN 32, "|Nombres",
|
|
COLUMN 70, "|Direccion",
|
|
COLUMN 129, "|Telefono"
|
|
PRINT COLUMN 1, "|",apellido9 clipped,
|
|
COLUMN 32, "|",nombre9 clipped,
|
|
COLUMN 70, "| ",direccion[1,50] clipped,
|
|
COLUMN 129, "|"," ",telefono
|
|
PRINT COLUMN 1, "|",apellido10 clipped,
|
|
COLUMN 32, "|",nombre10 clipped,
|
|
COLUMN 70, "| ",direccion[51,70] clipped,
|
|
COLUMN 129, "|",comp_of
|
|
PRINT "----------------------------------------------------------------",
|
|
"-------------------",comp_on
|
|
PRINT COLUMN 1, "|Lugar de Nacimiento",
|
|
COLUMN 32, "|Fecha de nacimiento",
|
|
COLUMN 54, "|Nacionalidad",
|
|
COLUMN 70, "|Estado Civil",
|
|
COLUMN 90, "|Dependientes",
|
|
COLUMN 110, "|Cedula No. Serie",
|
|
COLUMN 129, "|Ficha No."
|
|
PRINT COLUMN 1, "|"," ",provincia clipped,
|
|
COLUMN 32, "|"," ",fecha_nac using "dd/mm/yyyy",
|
|
COLUMN 54, "|"," ",nombre_nac clipped,
|
|
COLUMN 70, "|"," ",estado,
|
|
COLUMN 90, "|"," ", depende using "##",
|
|
COLUMN 110, "|"," ",cedula using "&&&&&","-",serie using "###",
|
|
COLUMN 129, "|"," ",acc_per.num_emp using "###"
|
|
PRINT COLUMN 1, "|",
|
|
COLUMN 32, "|",
|
|
COLUMN 54, "|",
|
|
COLUMN 70, "|",
|
|
COLUMN 90, "|",
|
|
COLUMN 110, "|",
|
|
COLUMN 129, "|",comp_of
|
|
PRINT "---------------------------------------------------------------",
|
|
"--------------------",comp_on
|
|
PRINT COLUMN 1, "|Titulo del puesto de trabajo",
|
|
COLUMN 54, "|Sueldo",
|
|
COLUMN 70, "|Nomina",
|
|
COLUMN 90, "|Departamento y seccion"
|
|
PRINT COLUMN 1, "|"," ",puesto.nom_puesto clipped,
|
|
COLUMN 54, "|"," ",acc_per.sueldo_ac using "##,###.##",
|
|
COLUMN 70, "|",descr clipped,
|
|
COLUMN 90, "|"," ",nombre_dpto
|
|
PRINT COLUMN 1, "|",
|
|
COLUMN 54, "|",
|
|
COLUMN 70, "|",
|
|
COLUMN 90, "|",comp_of
|
|
PRINT "---------------------------------------------------------------",
|
|
"--------------------"
|
|
SKIP 1 LINES
|
|
LET mov_emp.desc_mto = " "
|
|
SELECT a.desc_mto INTO mov_emp.desc_mto FROM adtb00009 a
|
|
WHERE a.cod_mto = acc_per.cod_mto AND a.sec_mto = acc_per.sec_mto AND
|
|
a.status_t IS NULL
|
|
|
|
PRINT COLUMN 1, "Descripcion Documento: ",acc_per.cod_mto using "##",
|
|
acc_per.sec_mto using "###"," ",
|
|
mov_emp.desc_mto
|
|
SKIP 1 LINES
|
|
PRINT COLUMN 1, negrillas_on,"OBSERVACION: ",negrillas_off,
|
|
acc_per.observacion CLIPPED
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 20, "SOLICITADO",
|
|
COLUMN 40, "AUTORIZADO",
|
|
COLUMN 60, "APROBADO"
|
|
SKIP 2 LINE
|
|
PRINT COLUMN 17, "-------------------",
|
|
COLUMN 37, "-------------------",
|
|
COLUMN 57, "-------------------"
|
|
PRINT COLUMN 1,
|
|
COLUMN 25, "Firma",
|
|
COLUMN 43, "Firma",
|
|
COLUMN 65, "Firma"
|
|
PRINT comp_of
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 17, "-------------------",
|
|
COLUMN 37, "-------------------",
|
|
COLUMN 57, "-------------------"
|
|
PRINT COLUMN 1,
|
|
COLUMN 22, "Departamento",
|
|
COLUMN 41, "Departamento",
|
|
COLUMN 61, "Administracion"
|
|
|
|
PRINT COLUMN 1, "Distribucion:"
|
|
PRINT COLUMN 1, "-------------"
|
|
|
|
PRINT COLUMN 1, "Original : DEPTO. PERSONAL"
|
|
PRINT COLUMN 1, "Copia Rosada : NOMINAS"
|
|
PRINT COLUMN 1, "Copia Amarilla: DEPTO. SOLIC."
|
|
END REPORT
|