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

168 lines
6.4 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : NOPRRP041
OBJETIVO : GENERAR REPORTE DE HORAS EXTRAS
PROGRAMADOR : Valentin Rodriguez
FECHA REALIZACION :
-------------------------------------------------------------------------------
}
SCHEMA "smarmotech"
GLOBALS
DEFINE datos RECORD
fecha_inicial DATE,
fecha_final DATE
END RECORD,
usuarios VARCHAR(20),
clave VARCHAR(20),
selec STRING,
pcompanias RECORD LIKE companias.*,
idx INT
DEFINE reporteHoras RECORD
cod_supervisor VARCHAR(50),
supervisor VARCHAR(50),
cod_empleado INT,
empleado VARCHAR(50),
fecha_trabajo DATE,
cantidad_horas INT,
valor_horas VARCHAR(100),
tipo_calculo decimal(12,2),
documento INT,
fecha_doc DATE
END RECORD
END GLOBALS
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
CALL reporte_horas()
END MAIN
FUNCTION reporte_horas ()
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename STRING, -- filename of Report Design Document including .4rp extension
r_output STRING, -- output format option
preview INTEGER, -- TRUE/FALSE, to set preview option
criterio STRING
OPEN WINDOW HOME_FRM WITH FORM 'nofmrp041'
DIALOG ATTRIBUTE(UNBUFFERED)
INPUT BY NAME datos.*
AFTER FIELD fecha_inicial
IF datos.fecha_inicial IS NULL THEN
CALL fgl_winmessage("INFO", "FECHA INICIAL NO PUEDE SER EN BLANCO", "INFO")
NEXT FIELD fecha_inicial
END IF
AFTER FIELD fecha_final
IF datos.fecha_final IS NULL THEN
CALL fgl_winmessage("INFO", "FECHA FINAL NO PUEDE SER EN BLANCO", "INFO")
NEXT FIELD fecha_final
END IF
IF datos.fecha_final < datos.fecha_inicial THEN
CALL fgl_winmessage("INFO", "FECHA FINAL NO PUEDE SER MENOR A FECHA INICIAL", "INFO")
NEXT FIELD fecha_final
END IF
END INPUT
CONSTRUCT criterio ON a.supervisor, a.num_emp
FROM cod_sup, num_emp
ON ACTION mostrar
LET selec = "select a.supervisor, rtrim(cast(c.nom1_emp as varchar(30)))+' '+ltrim(cast(c.apell2_emp as varchar(30))),
b.num_emp, b.nombre, a.fecha,b.cantidad,b.valor,b.descrip_mov,a.num_doc,b.fech_crea
from notb00028 a
inner join notb00029 b on a.num_doc = b.num_doc
inner join adtb00003 c on a.supervisor = c.num_emp
where " , criterio CLIPPED, " and ","
a.fecha between '", datos.fecha_inicial USING "mm/dd/yyyy" , "' and '",datos.fecha_final USING "mm/dd/yyyy","' "
DISPLAY selec
PREPARE comando FROM selec
DECLARE cotizaciones CURSOR FOR comando
LET r_filename ="noprrp041.4rp"
LET idx = 1
FOREACH cotizaciones INTO reporteHoras.*
IF idx = 1 THEN
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview=1
CALL seleccionarsalida() RETURNING r_output -- load the .4rp file
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
END IF
LET idx = 2
START REPORT reporteHoras_rpt TO XML HANDLER HANDLER
END IF
OUTPUT TO REPORT reporteHoras_rpt(reporteHoras.*)
END FOREACH
IF idx > 1 THEN
FINISH REPORT reporteHoras_rpt
ELSE
CALL fgl_winmessage("INFO", "NO HAY REGISTROS EN ESTE RANGO DE FECHA Y CON LOS PARAMETROS INDICADOS", "INFO")
NEXT FIELD fecha_final
END IF
END CONSTRUCT
ON ACTION CANCEL
CALL msg(2)
LET INT_FLAG = FALSE
EXIT PROGRAM
END DIALOG
CLOSE WINDOW HOME_FRM
END FUNCTION
REPORT reporteHoras_rpt(x)
DEFINE x RECORD
cod_supervisor VARCHAR(50),
supervisor VARCHAR(50),
cod_empleado INT,
empleado VARCHAR(50),
fecha_trabajo DATE,
cantidad_horas INT,
valor_horas VARCHAR(100),
tipo_calculo decimal(12,2),
documento INT,
fecha_doc DATE
END RECORD,
fecha_reporte char(30),
fecha char(30),
total_horas INT,
total_valor_horas DECIMAL(12,2)
ORDER BY x.supervisor
FORMAT
BEFORE GROUP OF x.supervisor
PRINTX x.supervisor
ON EVERY ROW
LET fecha_reporte = today USING "mm/dd/yyyy"
LET fecha = datos.fecha_inicial USING "mm/dd/yyyy",'--',datos.fecha_final USING "mm/dd/yyyy"
DISPLAY pcompanias.nombre
PRINTX fecha, fecha_reporte, pcompanias.nombre, x.empleado,
x.fecha_trabajo, x.cantidad_horas, x.valor_horas,
x.tipo_calculo, x.documento, x.fecha_doc
ON LAST ROW
LET total_horas = SUM(x.cantidad_horas)
LET total_valor_horas = SUM(x.valor_horas)
PRINTX total_horas, total_valor_horas
END REPORT