Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md
This commit is contained in:
@@ -0,0 +1,641 @@
|
||||
{
|
||||
------------------------------------------------------------------------
|
||||
PROGRAMA : ADPRMT020
|
||||
OBJETIVO : Capturar, Modificar, Eliminar registros de la
|
||||
Tabla de Control de Entrada y Salida de Empleados
|
||||
PROGRAMADOR : Ing. Betania Guerrero Perez
|
||||
FECHA REALIZACION : Junio 11, 1993
|
||||
------------------------------------------------------------------------
|
||||
}
|
||||
GLOBALS "adprgb000.4gl"
|
||||
|
||||
DEFINE usuario_c,usuario_m CHAR(9)
|
||||
DEFINE fecha_c,fecha_m LIKE adtb00023.fech_crea
|
||||
## DEFINICION DE VARIABLES PARA ORDENAMIENTO DE LOS REGISTROS
|
||||
DEFINE reg2 ARRAY[200] OF INTEGER
|
||||
DEFINE reg1 INTEGER
|
||||
DEFINE descri CHAR(4)
|
||||
DEFINE fecha1 DATE
|
||||
|
||||
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 adprmt020()
|
||||
END MAIN
|
||||
|
||||
FUNCTION adprmt020()
|
||||
|
||||
CLEAR SCREEN
|
||||
OPTIONS
|
||||
FORM LINE 8,
|
||||
ERROR LINE 24,
|
||||
COMMENT LINE 23
|
||||
|
||||
OPEN FORM adfmmt020 FROM "adfmmt020"
|
||||
DISPLAY FORM adfmmt020
|
||||
|
||||
DISPLAY "adprmt020" AT 4,3 ATTRIBUTE(RED)
|
||||
DISPLAY "Control Entrada y Salida de Empleados" AT 6,24 ATTRIBUTE(BLACK)
|
||||
|
||||
MENU
|
||||
ON ACTION nuevo
|
||||
|
||||
let int_flag = false
|
||||
INITIALIZE emplea.* TO NULL
|
||||
CALL adpcad020()
|
||||
ON ACTION buscar
|
||||
let int_flag = false
|
||||
CALL adpcmf020()
|
||||
ON ACTION Salir
|
||||
EXIT MENU
|
||||
END MENU
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION adpcad020()
|
||||
# WHENEVER ERROR CONTINUE
|
||||
LET fecha1 = today using "dd/mm/yyyy"
|
||||
|
||||
## CAPTURA LOS DATOS QUE VA A CONTENER EL REGISTRO
|
||||
LABEL vuelve:
|
||||
INPUT BY NAME cont_emp.fecha,cont_emp.num_emp,cont_emp.departamento,
|
||||
cont_emp.nivel_emp,cont_emp.cod_puesto
|
||||
|
||||
## VENTANA PARA DESPLEGAR LOS EMPLEADOS DE LA EMPRESA
|
||||
ON KEY (CONTROL-W)
|
||||
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 cont_emp.num_emp = despl_emp[curr1].num_emp
|
||||
LET cont_emp.departamento = despl_emp[curr1].departamento
|
||||
IF cont_emp.departamento IS NOT NULL THEN
|
||||
SELECT nom_dpto INTO depto.nom_dpto FROM adtb00001
|
||||
WHERE departamento = cont_emp.departamento
|
||||
END IF
|
||||
LET cont_emp.nivel_emp = despl_emp[curr1].nivel_emp
|
||||
LET cont_emp.cod_puesto = despl_emp[curr1].cod_puesto
|
||||
|
||||
DISPLAY BY NAME cont_emp.num_emp,cont_emp.departamento,
|
||||
cont_emp.nivel_emp,cont_emp.cod_puesto,
|
||||
descrip1,depto.nom_dpto
|
||||
NEXT FIELD hora_ent
|
||||
END CASE
|
||||
|
||||
BEFORE FIELD fecha
|
||||
{
|
||||
IF fecha1 IS NULL THEN
|
||||
LET cont_emp.fecha = today using "dd/mm/yyyy"
|
||||
ELSE
|
||||
LET cont_emp.fecha = fecha1 using "dd/mm/yyyy"
|
||||
END IF
|
||||
}
|
||||
LET cont_emp.fecha = fecha1 using "dd/mm/yyyy"
|
||||
|
||||
DISPLAY BY NAME cont_emp.fecha
|
||||
|
||||
AFTER FIELD fecha
|
||||
IF cont_emp.fecha IS NULL THEN
|
||||
LET numero_msg = 16
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD fecha
|
||||
END IF
|
||||
|
||||
LET fecha1 = cont_emp.fecha
|
||||
## VERIFICA QUE NO SE REPITA EL EMPLEADO PARA LA MISMA FECHA
|
||||
AFTER FIELD num_emp
|
||||
IF cont_emp.num_emp IS NULL THEN
|
||||
LET numero_msg = 16
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD num_emp
|
||||
ELSE
|
||||
SELECT UNIQUE convert(char(10),a.fecha,103),a.num_emp,a.departamento,
|
||||
a.nivel_emp,a.cod_puesto
|
||||
INTO cont_emp.fecha,cont_emp.num_emp,cont_emp.departamento,
|
||||
cont_emp.nivel_emp,cont_emp.cod_puesto
|
||||
FROM adtb00023 a
|
||||
WHERE a.fecha=cont_emp.fecha and a.num_emp=cont_emp.num_emp and
|
||||
a.status_t is null
|
||||
|
||||
IF status != NOTFOUND THEN
|
||||
LET numero_msg = 12
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD fecha
|
||||
END IF
|
||||
END IF
|
||||
|
||||
## VERIFICA QUE EL EMPLEADO EXISTA EN LA TALA DE EMPLEAADOS
|
||||
IF cont_emp.num_emp IS NOT NULL THEN
|
||||
SELECT departamento,nivel_emp,cod_puesto,nom1_emp,nom2_emp,
|
||||
apell1_emp,apell2_emp
|
||||
INTO cont_emp.departamento,cont_emp.nivel_emp,cont_emp.cod_puesto,
|
||||
nombre1,nombre2,apellido1,apellido2 FROM adtb00003
|
||||
WHERE num_emp = cont_emp.num_emp and (status_t is null or
|
||||
status_t = "I")
|
||||
|
||||
IF status = NOTFOUND THEN
|
||||
LET numero_msg = 3
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD num_emp
|
||||
END IF
|
||||
|
||||
## BUSCA EL NOMBRE DEL DEPARTAMENTO
|
||||
SELECT nom_dpto INTO depto.nom_dpto FROM adtb00001
|
||||
WHERE departamento = cont_emp.departamento and status_t is null
|
||||
|
||||
IF status = NOTFOUND THEN
|
||||
LET numero_msg = 3
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD num_emp
|
||||
END IF
|
||||
|
||||
LET descrip1 = nombre1 clipped," ",nombre2 clipped," ",
|
||||
apellido1 clipped," ",apellido2 clipped
|
||||
DISPLAY BY NAME cont_emp.departamento,cont_emp.nivel_emp,
|
||||
cont_emp.cod_puesto,descrip1,depto.nom_dpto
|
||||
END IF
|
||||
|
||||
EXIT INPUT
|
||||
END INPUT
|
||||
|
||||
IF int_flag THEN
|
||||
LET numero_msg = 2
|
||||
CALL msg(numero_msg)
|
||||
LET int_flag = FALSE
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
## CHEQUEO DE LAS HORAS DE ENTRADA Y SALIDA DE LOS EMPLEADOS
|
||||
FOR idx = 1 to 5
|
||||
LET arr_control[idx].hora_ent = NULL
|
||||
LET arr_control[idx].hora_sal = NULL
|
||||
|
||||
DISPLAY arr_control[idx].hora_ent to consart[idx].hora_ent
|
||||
DISPLAY arr_control[idx].hora_sal to consart[idx].hora_sal
|
||||
END FOR
|
||||
|
||||
INPUT ARRAY arr_control FROM consart.*
|
||||
|
||||
BEFORE ROW
|
||||
LET curr = arr_curr()
|
||||
LET scr_l = scr_line()
|
||||
LET descr = NULL
|
||||
LET descri = NULL
|
||||
|
||||
## CHEQUEA SI LA HORA DE ENTRADA FUE DE DIA O DE NOCHE
|
||||
AFTER FIELD hora_ent
|
||||
LET curr = arr_curr()
|
||||
IF arr_control[curr].hora_ent >= "01:00" and
|
||||
arr_control[curr].hora_ent <= "11:59" THEN
|
||||
LET descr = "a.m."
|
||||
END IF
|
||||
IF arr_control[curr].hora_ent >= "12:01" and
|
||||
arr_control[curr].hora_ent <= "23:59" THEN
|
||||
LET descr = "p.m."
|
||||
END IF
|
||||
IF arr_control[curr].hora_ent = "00:00" THEN
|
||||
LET descr = "m.n."
|
||||
END IF
|
||||
IF arr_control[curr].hora_ent = "12:00" THEN
|
||||
LET descr = "m.d."
|
||||
END IF
|
||||
|
||||
## CHEQUEA SI LA HORA DE SALIDA FUE DE DIA O DE NOCHE
|
||||
AFTER FIELD hora_sal
|
||||
LET curr = arr_curr()
|
||||
IF arr_control[curr].hora_sal >= "01:00" and
|
||||
arr_control[curr].hora_sal <= "11:59" THEN
|
||||
LET descri = "a.m."
|
||||
END IF
|
||||
IF arr_control[curr].hora_sal >= "12:01" and
|
||||
arr_control[curr].hora_sal <= "23:59" THEN
|
||||
LET descri = "p.m."
|
||||
END IF
|
||||
IF arr_control[curr].hora_sal = "00:00" THEN
|
||||
LET descri = "m.n."
|
||||
END IF
|
||||
IF arr_control[curr].hora_sal = "12:00" THEN
|
||||
LET descri = "m.d."
|
||||
END IF
|
||||
|
||||
## CHEQUEA QUE LA HORA DE ENTRADA Y SALIDA NO SEAN IGUALES
|
||||
IF arr_control[curr].hora_sal = arr_control[curr].hora_ent THEN
|
||||
LET numero_msg = 148
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD hora_sal
|
||||
END IF
|
||||
|
||||
## CHEQUEA QUE LA HORA DE SALIDA NO SEA MENOR QUE LA HORA DE ENTRADA
|
||||
IF arr_control[curr].hora_sal < arr_control[curr].hora_ent THEN
|
||||
LET numero_msg = 150
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD hora_sal
|
||||
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 EN EL PROCESO SE PROCEDE A INSERTAR EL REGISTRO
|
||||
## EN LA TABLA DE CONTROL DE ENTRADA Y SALIDA
|
||||
FOR idx = 1 to arr_count()
|
||||
IF arr_control[idx].hora_ent is not null or
|
||||
arr_control[idx].hora_sal is not null THEN
|
||||
|
||||
INSERT INTO adtb00023
|
||||
VALUES (cont_emp.fecha,cont_emp.num_emp,cont_emp.departamento,
|
||||
cont_emp.nivel_emp,cont_emp.cod_puesto,
|
||||
arr_control[idx].hora_ent,arr_control[idx].hora_sal,
|
||||
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 adpcmf020()
|
||||
|
||||
## AQUI SE PREPARA PARA LA CAPTURA DEL CRITERIO DE SELECCION PARA LA
|
||||
## MODIFICACION DE REGISTROS
|
||||
|
||||
# # WHENEVER ERROR CONTINUE
|
||||
## DEFINICION DEL CRITERIO DE BUSQUEDA PARA LA MODIFICACION/CONSULTA
|
||||
CONSTRUCT criterio ON fecha,num_emp,departamento,nivel_emp,cod_puesto
|
||||
FROM fecha,num_emp,departamento,nivel_emp,cod_puesto
|
||||
|
||||
IF int_flag THEN
|
||||
LET numero_msg = 2
|
||||
CALL msg(numero_msg)
|
||||
LET int_flag = FALSE
|
||||
RETURN
|
||||
END IF
|
||||
|
||||
## SE SELECCIONAN LOS CAMPOS QUE SE DESEAN CONSULTAR/MODIFICAR
|
||||
LET SELEC="SELECT UNIQUE convert(char(10),fecha,103),num_emp,departamento,nivel_emp,cod_puesto ",
|
||||
"FROM adtb00023 ",
|
||||
"WHERE status_t is null and ",criterio clipped," ORDER BY 1"
|
||||
|
||||
PREPARE busca FROM selec
|
||||
DECLARE datos SCROLL CURSOR FOR busca
|
||||
OPEN datos
|
||||
|
||||
## BUSCA LOS DATOS SELECCIONADOS
|
||||
FETCH FIRST datos INTO cont_emp.*
|
||||
|
||||
IF status >= 0 THEN
|
||||
IF STATUS = NOTFOUND THEN
|
||||
LET numero_msg = 3
|
||||
CALL msg(numero_msg)
|
||||
RETURN
|
||||
END IF
|
||||
END IF
|
||||
|
||||
SELECT nom_dpto INTO depto.nom_dpto FROM adtb00001
|
||||
WHERE departamento = cont_emp.departamento
|
||||
|
||||
SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp
|
||||
INTO nombre1,nombre2,apellido1,apellido2
|
||||
FROM adtb00003
|
||||
WHERE num_emp = cont_emp.num_emp and departamento = cont_emp.departamento and
|
||||
nivel_emp = cont_emp.nivel_emp and cod_puesto = cont_emp.cod_puesto
|
||||
|
||||
LET descrip1 = nombre1 clipped," ",nombre2 clipped," ",
|
||||
apellido1 clipped," ",apellido2 clipped
|
||||
DISPLAY BY NAME cont_emp.fecha,cont_emp.num_emp,cont_emp.departamento,
|
||||
cont_emp.nivel_emp,cont_emp.cod_puesto,depto.nom_dpto,
|
||||
descrip1
|
||||
CALL busca_us()
|
||||
|
||||
## BUSQUEDA DE LOS REGISTROS
|
||||
MENU "OPCION"
|
||||
COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado"
|
||||
FETCH NEXT datos INTO cont_emp.*
|
||||
IF STATUS = NOTFOUND THEN
|
||||
LET numero_msg = 4
|
||||
CALL msg(numero_msg)
|
||||
END IF
|
||||
|
||||
SELECT nom_dpto INTO depto.nom_dpto FROM adtb00001
|
||||
WHERE departamento = cont_emp.departamento
|
||||
SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp
|
||||
INTO nombre1,nombre2,apellido1,apellido2
|
||||
FROM adtb00003
|
||||
WHERE num_emp=cont_emp.num_emp and departamento=cont_emp.departamento and
|
||||
nivel_emp = cont_emp.nivel_emp and cod_puesto = cont_emp.cod_puesto
|
||||
LET descrip1 = nombre1 clipped," ",nombre2 clipped," ",
|
||||
apellido1 clipped," ",apellido2 clipped
|
||||
DISPLAY BY NAME cont_emp.fecha,cont_emp.num_emp,cont_emp.departamento,
|
||||
cont_emp.nivel_emp,cont_emp.cod_puesto,depto.nom_dpto,
|
||||
descrip1
|
||||
CALL busca_us()
|
||||
|
||||
COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado"
|
||||
FETCH PREVIOUS datos INTO cont_emp.*
|
||||
IF STATUS = NOTFOUND THEN
|
||||
LET numero_msg = 5
|
||||
CALL msg(numero_msg)
|
||||
END IF
|
||||
|
||||
SELECT nom_dpto INTO depto.nom_dpto FROM adtb00001
|
||||
WHERE departamento = cont_emp.departamento
|
||||
SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp
|
||||
INTO nombre1,nombre2,apellido1,apellido2
|
||||
FROM adtb00003
|
||||
WHERE num_emp=cont_emp.num_emp and departamento=cont_emp.departamento and
|
||||
nivel_emp = cont_emp.nivel_emp and cod_puesto=cont_emp.cod_puesto
|
||||
|
||||
LET descrip1 = nombre1 clipped," ",nombre2 clipped," ",
|
||||
apellido1 clipped," ",apellido2 clipped
|
||||
DISPLAY BY NAME cont_emp.fecha,cont_emp.num_emp,cont_emp.departamento,
|
||||
cont_emp.nivel_emp,cont_emp.cod_puesto,depto.nom_dpto,
|
||||
descrip1
|
||||
CALL busca_us()
|
||||
|
||||
COMMAND "Primero" "Presenta en pantalla el primer registro encontrado"
|
||||
FETCH FIRST datos INTO cont_emp.*
|
||||
|
||||
SELECT nom_dpto INTO depto.nom_dpto FROM adtb00001
|
||||
WHERE departamento = cont_emp.departamento
|
||||
SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp
|
||||
INTO nombre1,nombre2,apellido1,apellido2
|
||||
FROM adtb00003
|
||||
WHERE num_emp=cont_emp.num_emp and departamento=cont_emp.departamento and
|
||||
nivel_emp = cont_emp.nivel_emp and cod_puesto=cont_emp.cod_puesto
|
||||
LET descrip1 = nombre1 clipped," ",nombre2 clipped," ",
|
||||
apellido1 clipped," ",apellido2 clipped
|
||||
DISPLAY BY NAME cont_emp.fecha,cont_emp.num_emp,cont_emp.departamento,
|
||||
cont_emp.nivel_emp,cont_emp.cod_puesto,depto.nom_dpto,
|
||||
descrip1
|
||||
CALL busca_us()
|
||||
|
||||
LET numero_msg = 5
|
||||
CALL msg(numero_msg)
|
||||
|
||||
COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado"
|
||||
FETCH LAST datos INTO cont_emp.*
|
||||
|
||||
SELECT nom_dpto INTO depto.nom_dpto FROM adtb00001
|
||||
WHERE departamento = cont_emp.departamento
|
||||
SELECT nom1_emp,nom2_emp,apell1_emp,apell2_emp
|
||||
INTO nombre1,nombre2,apellido1,apellido2
|
||||
FROM adtb00003
|
||||
WHERE num_emp=cont_emp.num_emp and departamento=cont_emp.departamento and
|
||||
nivel_emp=cont_emp.nivel_emp and cod_puesto=cont_emp.cod_puesto
|
||||
|
||||
LET descrip1 = nombre1 clipped," ",nombre2 clipped," ",
|
||||
apellido1 clipped," ",apellido2 clipped
|
||||
DISPLAY BY NAME cont_emp.fecha,cont_emp.num_emp,cont_emp.departamento,
|
||||
cont_emp.nivel_emp,cont_emp.cod_puesto,depto.nom_dpto,
|
||||
descrip1
|
||||
CALL busca_us()
|
||||
|
||||
LET numero_msg = 4
|
||||
CALL msg(numero_msg)
|
||||
|
||||
COMMAND "Escoger" "<Esc> Actualiza Registro <Ctrl-C> Cancela Operacion"
|
||||
|
||||
## SELECCION DEL REGISTRO QUE SE DESEA MODIFICAR
|
||||
FOR idx = 1 to 5
|
||||
LET arr_control[idx].hora_ent = NULL
|
||||
LET arr_control[idx].hora_sal = NULL
|
||||
|
||||
DISPLAY arr_control[idx].hora_ent to consart[idx].hora_ent
|
||||
DISPLAY arr_control[idx].hora_sal to consart[idx].hora_sal
|
||||
END FOR
|
||||
|
||||
## DESPLEGA LOS DATOS DEL ARREGLO DEL REGISTRO ESCOGIDO
|
||||
DECLARE controlar CURSOR FOR
|
||||
SELECT rowid,a.hora_ent,a.hora_sal FROM adtb00023 a
|
||||
WHERE a.fecha = cont_emp.fecha and a.num_emp = cont_emp.num_emp and
|
||||
a.departamento = cont_emp.departamento and
|
||||
a.nivel_emp = cont_emp.nivel_emp and
|
||||
a.cod_puesto = cont_emp.cod_puesto and a.status_t is null
|
||||
ORDER BY 1 DESC
|
||||
LET idx = 1
|
||||
|
||||
FOREACH controlar INTO reg2[idx],arr_control[idx].*
|
||||
IF status = NOTFOUND THEN
|
||||
LET numero_msg = 3
|
||||
CALL msg(numero_msg)
|
||||
EXIT FOREACH
|
||||
END IF
|
||||
|
||||
IF arr_control[idx].hora_ent >= "01:00" and
|
||||
arr_control[idx].hora_ent <= "11:59" THEN
|
||||
LET descr = "a.m."
|
||||
END IF
|
||||
IF arr_control[idx].hora_ent >= "12:01" and
|
||||
arr_control[idx].hora_ent <= "23:59" THEN
|
||||
LET descr = "p.m."
|
||||
END IF
|
||||
IF arr_control[idx].hora_ent = "00:00" THEN
|
||||
LET descr = "m.n."
|
||||
END IF
|
||||
IF arr_control[idx].hora_ent = "12:00" THEN
|
||||
LET descr = "m.d."
|
||||
END IF
|
||||
|
||||
IF arr_control[idx].hora_sal >= "01:00" and
|
||||
arr_control[idx].hora_sal <= "11:59" THEN
|
||||
LET descri = "a.m."
|
||||
END IF
|
||||
IF arr_control[idx].hora_sal >= "12:01" and
|
||||
arr_control[idx].hora_sal <= "23:59" THEN
|
||||
LET descri = "p.m."
|
||||
END IF
|
||||
IF arr_control[idx].hora_sal = "00:00" THEN
|
||||
LET descri = "m.n."
|
||||
END IF
|
||||
IF arr_control[idx].hora_sal = "12:00" THEN
|
||||
LET descri = "m.d."
|
||||
END IF
|
||||
|
||||
LET idx = idx + 1
|
||||
END FOREACH
|
||||
CALL set_count(idx - 1)
|
||||
|
||||
INPUT ARRAY arr_control WITHOUT DEFAULTS FROM consart.*
|
||||
|
||||
BEFORE ROW
|
||||
LET curr = arr_curr()
|
||||
LET scr_l = scr_line()
|
||||
LET descr = NULL
|
||||
LET descri = NULL
|
||||
|
||||
## CHEQUEA SI LA HORA DE ENTRADA ES DE DIA O DE NOCHE
|
||||
AFTER FIELD hora_ent
|
||||
IF arr_control[curr].hora_ent >= "01:00" and
|
||||
arr_control[curr].hora_ent <= "11:59" THEN
|
||||
LET descr = "a.m."
|
||||
END IF
|
||||
IF arr_control[curr].hora_ent >= "12:01" and
|
||||
arr_control[curr].hora_ent <= "23:59" THEN
|
||||
LET descr = "p.m."
|
||||
END IF
|
||||
IF arr_control[curr].hora_ent = "00:00" THEN
|
||||
LET descr = "m.n."
|
||||
END IF
|
||||
IF arr_control[curr].hora_ent = "12:00" THEN
|
||||
LET descr = "m.d."
|
||||
END IF
|
||||
|
||||
## CHEQUEA SI LA HORA DE SALIDA ES DE DIA O DE NOCHE
|
||||
AFTER FIELD hora_sal
|
||||
IF arr_control[curr].hora_sal >= "01:00" and
|
||||
arr_control[curr].hora_sal <= "11:59" THEN
|
||||
LET descri = "a.m."
|
||||
END IF
|
||||
IF arr_control[curr].hora_sal >= "12:01" and
|
||||
arr_control[curr].hora_sal <= "23:59" THEN
|
||||
LET descri = "p.m."
|
||||
END IF
|
||||
IF arr_control[curr].hora_sal = "00:00" THEN
|
||||
LET descri = "m.n."
|
||||
END IF
|
||||
IF arr_control[curr].hora_sal = "12:00" THEN
|
||||
LET descri = "m.d."
|
||||
END IF
|
||||
|
||||
## CHEQUEA QUE LA HORA DE SALIDA NO SEA IGUAL QUE LA DE ENTRADA
|
||||
IF arr_control[curr].hora_sal = arr_control[curr].hora_ent THEN
|
||||
LET numero_msg = 148
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD hora_sal
|
||||
END IF
|
||||
|
||||
## CHEQUEA QUE LA HORA DE SALIDA NO SEA MENOR QUE LA HORA DE ENTRADA
|
||||
IF arr_control[curr].hora_sal < arr_control[curr].hora_ent THEN
|
||||
LET numero_msg = 150
|
||||
CALL msg(numero_msg)
|
||||
NEXT FIELD hora_sal
|
||||
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
|
||||
|
||||
|
||||
## ACTUALIZACION DEL REGISTRO MODIFICADO
|
||||
FOR idx = 1 to arr_count()
|
||||
IF arr_control[idx].hora_ent is not null or
|
||||
arr_control[idx].hora_sal is not null THEN
|
||||
|
||||
UPDATE adtb00023 set hora_ent = arr_control[idx].hora_ent,
|
||||
hora_sal = arr_control[idx].hora_sal,
|
||||
us_mod = SUSER_SNAME (),
|
||||
fech_mod = GETDATE ()
|
||||
WHERE rowid = reg2[idx]
|
||||
|
||||
END IF
|
||||
END FOR
|
||||
|
||||
LET numero_msg = 13
|
||||
CALL msg(numero_msg)
|
||||
|
||||
IF status < 0 THEN
|
||||
|
||||
END IF
|
||||
|
||||
## ELIMINACION DEL REGISTRO ESCOGIDO
|
||||
COMMAND KEY ("L") "eLiminar"
|
||||
UPDATE adtb00023 SET status_t = "E"
|
||||
WHERE fecha = cont_emp.fecha and
|
||||
num_emp = cont_emp.num_emp and
|
||||
departamento = cont_emp.departamento and
|
||||
nivel_emp = cont_emp.nivel_emp and
|
||||
cod_puesto = cont_emp.cod_puesto
|
||||
|
||||
LET numero_msg = 39
|
||||
CALL msg(numero_msg)
|
||||
|
||||
COMMAND "Retornar"
|
||||
"Retorna al menu anterior"
|
||||
CLEAR FORM
|
||||
|
||||
FOR idx = 1 to 5
|
||||
LET arr_control[idx].hora_ent = NULL
|
||||
LET arr_control[idx].hora_sal = NULL
|
||||
|
||||
DISPLAY arr_control[idx].hora_ent to consart[idx].hora_ent
|
||||
DISPLAY arr_control[idx].hora_sal to consart[idx].hora_sal
|
||||
END FOR
|
||||
|
||||
EXIT MENU
|
||||
END MENU
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION busca_us()
|
||||
# WHENEVER ERROR CONTINUE
|
||||
SELECT UNIQUE us_crea,fech_crea,fech_mod,us_mod
|
||||
INTO usuario_c, fecha_c,fecha_m,usuario_m
|
||||
FROM adtb00023
|
||||
WHERE num_emp = cont_emp.num_emp and
|
||||
departamento = cont_emp.departamento and
|
||||
nivel_emp = cont_emp.nivel_emp and
|
||||
cod_puesto = cont_emp.cod_puesto and
|
||||
fecha = cont_emp.fecha
|
||||
IF status < 0 THEN
|
||||
SELECT UNIQUE us_crea,us_mod
|
||||
INTO usuario_c, usuario_m
|
||||
FROM adtb00023
|
||||
WHERE num_emp = cont_emp.num_emp and
|
||||
departamento = cont_emp.departamento and
|
||||
nivel_emp = cont_emp.nivel_emp and
|
||||
cod_puesto = cont_emp.cod_puesto and
|
||||
fecha = cont_emp.fecha
|
||||
LET fecha_c = null
|
||||
LET fecha_m = null
|
||||
END IF
|
||||
|
||||
DISPLAY BY NAME usuario_c,usuario_m,fecha_c,fecha_m
|
||||
END FUNCTION
|
||||
Reference in New Issue
Block a user