Files

278 lines
7.8 KiB
Plaintext

GLOBALS
DEFINE numero_msg SMALLINT,
idx INT
DEFINE criterio,selec1 STRING
END GLOBALS
FUNCTION busca_puesto()
DEFINE buscar_puesto DYNAMIC ARRAY OF RECORD
cod_puesto SMALLINT,
nom_puesto VARCHAR(50)
END RECORD,
xcod_puesto SMALLINT,
xdescripcion VARCHAR(50)
OPEN WINDOW busqueda1 AT 10,10 WITH FORM "adfmwd002"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2, comment line last)
CONSTRUCT criterio ON a.nom_puesto FROM nom_puesto
IF INT_FLAG THEN
CLOSE WINDOW busqueda1
LET INT_FLAG = FALSE
RETURN 0,' '
END IF
LET selec1 = "SELECT a.cod_puesto,a.nom_puesto FROM adtb00004 a ",
" WHERE ",
" a.status_t is null AND ",
criterio clipped,
" ORDER BY a.cod_puesto "
PREPARE ppuesto FROM selec1
DECLARE cpuesto CURSOR FOR ppuesto
LET idx = 1
FOREACH cpuesto INTO buscar_puesto[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)
DISPLAY ARRAY buscar_puesto TO s_puesto.*
AFTER DISPLAY
LET idx = arr_curr()
LET xcod_puesto = buscar_puesto[idx].cod_puesto
LET xdescripcion = buscar_puesto[idx].nom_puesto
EXIT DISPLAY
END DISPLAY
CLOSE WINDOW busqueda1
RETURN xcod_puesto,xdescripcion
END FUNCTION
FUNCTION busca_depto()
DEFINE buscar_depto DYNAMIC ARRAY OF RECORD
departamento SMALLINT,
nom_dpto VARCHAR(50)
END RECORD,
xdepto SMALLINT,
xnombre VARCHAR(50)
OPEN WINDOW busqueda AT 10,10 WITH FORM "adfmwd001"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2, comment line last)
CONSTRUCT criterio ON adtb00001.nom_dpto FROM adtb00001.nom_dpto
LET selec1 = "SELECT departamento,nom_dpto FROM adtb00001 ",
" WHERE ",
" status_t is null AND ",
criterio clipped,
"ORDER BY 1 "
PREPARE busco FROM selec1
DECLARE local CURSOR FOR busco
LET idx = 1
FOREACH local INTO buscar_depto[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)
DISPLAY ARRAY buscar_depto TO s_depto.*
LET idx = arr_curr()
LET xdepto = buscar_depto[idx].departamento
LET xnombre = buscar_depto[idx].nom_dpto
CLOSE WINDOW busqueda
RETURN xdepto,xnombre
END FUNCTION
## VENTANA PARA DESPLEGAR LOS NIVELES EDUCATIVOS
FUNCTION busca_educacion()
DEFINE buscar_educacion DYNAMIC ARRAY OF RECORD
cod_educa SMALLINT,
nom_educa VARCHAR(50)
END RECORD,
xeducacion SMALLINT,
xnombre VARCHAR(50)
OPEN WINDOW busqueda2 AT 10,10 WITH FORM "adfmwd011"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2, comment line last)
CONSTRUCT criterio ON adtb00005.nom_educa FROM adtb00005.nom_educa
LET selec1 = "SELECT cod_educa,nom_educa FROM adtb00005 ",
" WHERE ",
" status_t is null AND ",
criterio clipped,
"ORDER BY 1 "
PREPARE busca2 FROM selec1
DECLARE local2 CURSOR FOR busca2
LET idx = 1
FOREACH local2 INTO buscar_educacion[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)
DISPLAY ARRAY buscar_educacion TO s_educa.*
LET idx = arr_curr()
LET xeducacion = buscar_educacion[idx].cod_educa
LET xnombre = buscar_educacion[idx].nom_educa
CLOSE WINDOW busqueda2
RETURN xeducacion,xnombre
END FUNCTION
FUNCTION codigos_nomina()
DEFINE id SMALLINT, descripcion CHAR(30),
pcodigo ui.ComboBox
LET pcodigo = ui.ComboBox.forName("formonly.cod_mov")
DECLARE bcodigos CURSOR FOR
SELECT a.cod_mov,a.descrip_mov FROM notb00002 a WHERE a.status_t IS NULL
ORDER BY a.descrip_mov
CALL pcodigo.clear()
FOREACH bcodigos INTO id,descripcion
CALL pcodigo.additem(id,descripcion)
END FOREACH
END FUNCTION
FUNCTION codigos_accion()
DEFINE id SMALLINT, descripcion CHAR(30),
pcodigo ui.ComboBox
LET pcodigo = ui.ComboBox.forName("adtb00020.cod_mto")
DECLARE ccodigos CURSOR FOR
SELECT a.cod_mto,a.desc_mto FROM adtb00009 a WHERE a.status_t IS NULL
ORDER BY a.desc_mto
CALL pcodigo.clear()
FOREACH ccodigos INTO id,descripcion
CALL pcodigo.additem(id,descripcion)
END FOREACH
END FUNCTION
FUNCTION calcula_salarios(ptipo_nomina,xnum_emp,fecha_liquida)
DEFINE pvalor,valor_total,promedio_ano_actual, promedio_ano_anterior,m_valor_total,incentivos,
sueldo_promedio,salario_dia,sueldo_acumulado
DECIMAL(12,2),
ptipo_nomina VARCHAR(1),
xnum_emp INT,
fecha_liquida DATE
LET promedio_ano_actual = 0
LET promedio_ano_anterior = 0
LET m_valor_total = 0
# Busqueda del sueldo en la tabla actual
DECLARE busca_salario CURSOR FOR
SELECT SUM(a.valor),a.fecha FROM notb00008 a,notb00002 b
WHERE a.num_emp = xnum_emp AND
a.cod_mov =b.cod_mov AND
b.vacaciones = "SI" AND
a.valor != 0 AND
a.fecha <= fecha_liquida
GROUP BY a.fecha
ORDER BY a.fecha DESC
LET idx = 1
LET valor_total = 0
FOREACH busca_salario INTO pvalor
LET valor_total = valor_total + pvalor
IF ptipo_nomina = "Q" OR ptipo_nomina = 'J' THEN
IF idx = 24 THEN
SELECT a.monto INTO incentivos
FROM notbingresos a
WHERE a.num_emp = xnum_emp
IF incentivos IS NOT NULL THEN
LET valor_total = valor_total + (incentivos * idx)
LET incentivos = 0
END IF
EXIT FOREACH
END IF
ELSE
IF idx = 52 THEN
EXIT FOREACH
END IF
END IF
LET idx = idx + 1
END FOREACH
IF idx = 0 OR idx IS NULL THEN
LET idx = 1
END IF
IF ptipo_nomina = "S" THEN
IF idx = 52 THEN
LET idx = idx - 1
END IF
LET idx = idx /4
END IF
IF ptipo_nomina = "Q" THEN
LET idx = idx / 2
END IF
LET sueldo_acumulado = valor_total
LET valor_total = valor_total / idx
LET sueldo_promedio = valor_total
LET salario_dia = sueldo_promedio / 23.83
# DISPLAY "sueldo dia ",salario_dia," PROM ",sueldo_promedio," IDX ",idx, " v total ",valor_total
RETURN salario_dia,sueldo_acumulado
END FUNCTION
FUNCTION busca_foto()
DEFINE imagenom,filepath,filedestino STRING,
foto_emp BYTE,
xsecuencia INT
SELECT a.secuencia INTO xsecuencia FROM adtb00048 a
IF xsecuencia IS NULL THEN
LET xsecuencia = 0
END IF
LET xsecuencia = xsecuencia +1
UPDATE adtb00048 SET secuencia = xsecuencia
# LET imagenom = "*.*"
CALL ui.interface.frontcall("standard","openfile",[imagenom,"*","*.png *.jpg *.bmp *.gif","Busca Imagen"],filepath)
IF filepath IS NOT NULL THEN
LOCATE foto_Emp IN MEMORY
LET filedestino = xsecuencia USING "&&&&&&",".jpg"
#LET filedestino = "F:\\FOURJS\\GAS22006\\pic\\NOMINA\\"
# LET filedestino = filedestino CLIPPED,"\\",emplea.num_emp USING "&&&&&",".jpg"
# CALL FGL_WINMESSAGE("W",filedestino,"stop")
CALL fgl_getfile(filepath,filedestino)
CALL comprimeImagen(filedestino,' -resize 300x300 ')
CALL foto_emp.readFile(filedestino)
DISPLAY filedestino TO foto_solicita
END IF
RETURN foto_emp,filedestino
END FUNCTION