Files
MBS/PROYECTO/nodir/noprmt029.4gl
T

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