195 lines
8.1 KiB
Plaintext
195 lines
8.1 KiB
Plaintext
GLOBALS "noprgb000.4gl"
|
|
DEFINE datarec RECORD
|
|
rfecha1 DATE,
|
|
rfecha2 DATE
|
|
END RECORD,
|
|
num_emp_super INT,
|
|
actualiza char(2),
|
|
xnumdoc,idz INT,
|
|
xfecha_cierre DATE,
|
|
pcompanias RECORD LIKE companias.*,
|
|
primerDiaMes CHAR(20)
|
|
|
|
DEFINE datarec2 RECORD
|
|
nnomina SMALLINT,
|
|
tipo_nomina CHAR(1)
|
|
END RECORD
|
|
|
|
DEFINE notb00007 RECORD
|
|
departamento SMALLINT,
|
|
nivel_emp SMALLINT,
|
|
cod_puesto SMALLINT
|
|
END RECORD
|
|
|
|
DEFINE DATARRA DYNAMIC ARRAY OF RECORD
|
|
nsupervisor VARCHAR(100),
|
|
tfecha DATE,
|
|
ficha_empleado INT,
|
|
nom_empleado VARCHAR(100),
|
|
sueldo FLOAT,
|
|
cant_ex SMALLINT,
|
|
valor FLOAT,
|
|
pagadas VARCHAR(10),
|
|
cod_mov SMALLINT,
|
|
num_doc SMALLINT,
|
|
num_nomi SMALLINT,
|
|
comentario VARCHAR(100),
|
|
departamento_labor VARCHAR(50),
|
|
depto_codigo SMALLINT
|
|
END RECORD
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT to "smarmotech" USER usuarios USING clave
|
|
SELECT * INTO pcompanias.* FROM companias
|
|
--LET usuarios = 'bisaac'
|
|
LET primerDiaMes = '01/',month(today),'/',year(today)
|
|
CALL noprmt029()
|
|
END MAIN
|
|
|
|
FUNCTION noprmt029()
|
|
OPEN WINDOW HOME_FRM WITH FORM 'nofmmt029'
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
INPUT BY NAME datarec.*
|
|
BEFORE INPUT
|
|
LET datarec.rfecha1 = primerDiaMes
|
|
DISPLAY BY NAME datarec.rfecha1
|
|
|
|
AFTER FIELD rfecha1
|
|
IF datarec.rfecha1 IS NULL THEN
|
|
CALL fgl_winmessage("INFO", "FECHA INICIAL NO PUEDE SER EN BLANCO", "INFO")
|
|
NEXT FIELD rfecha1
|
|
END IF
|
|
|
|
BEFORE FIELD rfecha2
|
|
LET datarec.rfecha2 = TODAY
|
|
DISPLAY BY NAME datarec.rfecha2
|
|
|
|
AFTER FIELD rfecha2
|
|
IF datarec.rfecha2 IS NULL THEN
|
|
CALL fgl_winmessage("INFO", "FECHA FINAL NO PUEDE SER EN BLANCO", "INFO")
|
|
NEXT FIELD rfecha2
|
|
END IF
|
|
|
|
IF datarec.rfecha2 < datarec.rfecha1 THEN
|
|
CALL fgl_winmessage("INFO", "FECHA FINAL NO PUEDE SER MENOR A FECHA INICIAL", "INFO")
|
|
NEXT FIELD rfecha2
|
|
END IF
|
|
END INPUT
|
|
|
|
CONSTRUCT criterio ON a.num_doc, c.num_emp_supervisor
|
|
FROM ndocumento, num_emp_supervisa
|
|
BEFORE CONSTRUCT
|
|
CALL csupervisores()
|
|
|
|
AFTER CONSTRUCT
|
|
CALL mostrarData()
|
|
IF idx == 1 THEN
|
|
CALL fgl_winmessage("INFO","NO HAY REGISTROS CON LOS PARAMETROS INDICADOS","INFO")
|
|
NEXT FIELD rfecha2
|
|
END IF
|
|
END CONSTRUCT
|
|
|
|
INPUT ARRAY DATARRA FROM src_nomina.*
|
|
|
|
ON ACTION pagar
|
|
LET idz = 1
|
|
FOR idz = 1 TO (DATARRA.getLength() -1)
|
|
IF DATARRA[idx].pagadas == 'NO' THEN
|
|
LET idz = idz +1
|
|
END IF
|
|
END FOR
|
|
|
|
IF idz != 1 THEN
|
|
|
|
OPEN WINDOW NOMINA_FRM WITH FORM 'nofmmt029B'
|
|
INPUT BY NAME datarec2.*
|
|
AFTER FIELD nnomina
|
|
IF datarec2.nnomina IS NULL THEN
|
|
CALL fgl_winmessage("INFO", "ESPECIFIQUE EL NUMERO DE NOMINA", "INFO")
|
|
NEXT FIELD nnomina
|
|
END IF
|
|
|
|
AFTER FIELD tipo_nomina
|
|
IF datareC2.tipo_nomina IS NULL THEN
|
|
CALL fgl_winmessage("INFO", "ESPECIFIQUE EL TIPO DE NOMINA", "INFO")
|
|
NEXT FIELD tipo_nomina
|
|
END IF
|
|
LET idz = 1
|
|
|
|
BEGIN WORK
|
|
FOR idx = 1 TO (DATARRA.getLength() -1)
|
|
IF DATARRA[idx].pagadas == 'NO' THEN
|
|
|
|
SELECT a.departamento, a.nivel_emp, a.cod_puesto
|
|
INTO notb00007.departamento, notb00007.nivel_emp, notb00007.cod_puesto
|
|
FROM adtb00003 a
|
|
WHERE a.num_emp = DATARRA[idx].ficha_empleado
|
|
|
|
INSERT INTO notb00007(num_nomi, tipo_emp,num_emp,departamento,nivel_emp,cod_puesto,cod_mov,cantidad,valor,status_t,us_crea,fech_crea, fecha, num_doc,departamento_labor)
|
|
VALUES(datarec2.nnomina,datarec2.tipo_nomina,DATARRA[idx].ficha_empleado,notb00007.departamento,notb00007.nivel_emp,notb00007.cod_puesto,
|
|
DATARRA[idx].cod_mov, DATARRA[idx].cant_ex,DATARRA[idx].valor,NULL,usuarios,TODAY,DATARRA[idx].tfecha,DATARRA[idx].num_doc,DATARRA[idx].depto_codigo)
|
|
|
|
UPDATE notb00028 SET pagado = 'SI', num_nomi = datarec2.nnomina
|
|
WHERE num_doc = DATARRA[idx].num_doc
|
|
LET idz = idz + 1
|
|
|
|
END IF
|
|
END FOR
|
|
COMMIT WORK
|
|
|
|
IF idz == 1 THEN
|
|
CALL fgl_winmessage("INFO","NO HAY TRANSACCIONES QUE REALIZAR","INFO")
|
|
ELSE
|
|
CALL fgl_winmessage("INFO","DATOS INSERTADOS CORRECTAMENTE","INFO")
|
|
CALL mostrarData()
|
|
END IF
|
|
|
|
ON ACTION CANCEL
|
|
CALL msg(2)
|
|
LET INT_FLAG = FALSE
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
CLOSE WINDOW NOMINA_FRM
|
|
|
|
END IF
|
|
|
|
ON ACTION mostrar
|
|
CALL mostrarData()
|
|
|
|
END INPUT
|
|
|
|
ON ACTION CANCEL
|
|
CALL msg(2)
|
|
LET INT_FLAG = FALSE
|
|
EXIT PROGRAM
|
|
END DIALOG
|
|
CLOSE WINDOW HOME_FRM
|
|
END FUNCTION
|
|
|
|
FUNCTION mostrarData()
|
|
LET selec = "select a.supervisor, a.fecha, a.num_emp, b.nombre, b.sueldo,
|
|
b.cantidad, b.valor, a.pagado, b.cod_mov, a.num_doc, a.num_nomi,
|
|
a.comentario, '('+cast(b.departamento_labor as varchar(10))+')'+' '+ltrim(d.nom_dpto),
|
|
b.departamento_labor
|
|
FROM notb00028 a
|
|
inner join notb00029 b on a.num_doc = b.num_doc
|
|
inner join adtb00003 c on a.num_emp = c.num_emp
|
|
inner join adtb00001 d on b.departamento_labor = d.departamento
|
|
WHERE " , criterio CLIPPED, " and ","
|
|
a.fecha between '", datarec.rfecha1 USING "mm/dd/yyyy" , "' and '",datarec.rfecha2 USING "mm/dd/yyyy","'"
|
|
DISPLAY selec
|
|
PREPARE comando FROM selec
|
|
DECLARE autorizaciones CURSOR FOR comando
|
|
|
|
LET idx = 1
|
|
|
|
FOREACH autorizaciones INTO DATARRA[idx].*
|
|
LET IDX = IDX +1
|
|
END FOREACH
|
|
|
|
END FUNCTION |