{ =========================================================================== PROGRAMA : PRPRRP001 SISTEMA : PRODUCCION OBJETIVO : LISTAR FORMULARIO PARA REGISTRAR HORAS PERSONAL NO PRODUCTIVO. AUTOR : Tadeo. A. Ferreras F. FECHA : SEPT. 15, 1994 =========================================================================== } GLOBALS "prprgb000.4gl" DEFINE repor_1 RECORD num_emp SMALLINT, departamento SMALLINT, nom1_emp CHAR(14), nom2_emp CHAR(14), apell1_emp CHAR(14), apell2_emp CHAR(14), nom_dpto CHAR(30), nom_puesto CHAR(28), cod_puesto SMALLINT END RECORD MAIN 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 DEFER INTERRUPT -- prompt user for report settings to replace defaults CALL selectOutput() RETURNING r_filename, r_output, preview -- configure report engine; the functions prefixed fgl that are called here are part of the GRW API IF fgl_report_loadCurrentSettings(r_filename) THEN -- 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 ELSE EXIT PROGRAM END IF --run the report IF handler IS NOT NULL THEN -- report engine was configured ok CALL prprrp001() ELSE EXIT PROGRAM END IF END MAIN FUNCTION prprrp001() DEFINE opcion CHAR(1) OPTIONS PROMPT LINE 23, FORM LINE 8, ERROR LINE 23 OPEN FORM prfmrp001 FROM "prfmrp001" DISPLAY FORM prfmrp001 LET tipo_papel = 2 CALL msgrp000(tipo_papel) CONNECT TO "smarmotech" USER "jsoto" USING "lmmjvsd2009" INPUT BY NAME prtb02.num_semana AFTER FIELD num_semana IF prtb02.num_semana IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD num_semana END IF SELECT UNIQUE a.semana_del,a.semana_al INTO prtb02.semana_del,prtb02.semana_al FROM prtb00002 a WHERE a.num_semana = prtb02.num_semana AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_semana END IF DISPLAY BY NAME prtb02.semana_del,prtb02.semana_al END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF PROMPT "Es el rango de fecha deseado [S/N]?..." FOR CHAR opcion LET opcion = UPSHIFT(opcion) IF opcion = "S" THEN SELECT UNIQUE a.num_semana FROM prtb00003 a WHERE a.num_semana = prtb02.num_semana AND a.status_t IS NULL IF STATUS != NOTFOUND THEN PROMPT "LISTADO EXISTE, SI DESEAS IMPRIMIRLO BORRARA INFORMACION DE LA SEMANA [S/N]" FOR CHAR opcion1 LET opcion1 = UPSHIFT(opcion1) IF opcion1 != "S" THEN RETURN END IF ELSE LET opcion1 = "S" END IF IF opcion1 = "S" THEN DECLARE busca CURSOR FOR SELECT a.num_emp,a.departamento,a.nom1_emp,a.nom2_emp,a.apell1_emp, a.apell2_emp,b.nom_dpto,c.nom_puesto,a.cod_puesto FROM adtb00003 a,adtb00001 b,adtb00004 c WHERE a.departamento = b.departamento and a.nivel_emp != 2 and a.cod_puesto = c.cod_puesto and a.status_t is null and a.departamento between 6000 and 6500 ORDER BY 2,9,1 DISPLAY "Buscando Informacion... Espere Por Favor" AT 17,14 START REPORT reporte_1 TO "C:\\archivo" DISPLAY "Reporte Generandose ... Espere Por Favor" AT 17,14 FOREACH busca INTO repor_1.* OUTPUT TO REPORT reporte_1(repor_1.*) END FOREACH DECLARE busca1 CURSOR FOR SELECT a.num_emp,'6199',a.nom1_emp,a.nom2_emp,a.apell1_emp, a.apell2_emp,b.nom_dpto,c.nom_puesto,a.cod_puesto FROM adtb00003 a,adtb00001 b,adtb00004 c WHERE a.departamento = b.departamento and a.nivel_emp = 2 and a.cod_puesto = c.cod_puesto and a.status_t is null and a.departamento between 6000 and 6500 ORDER BY 2,9,1 FOREACH busca1 INTO repor_1.* OUTPUT TO REPORT reporte_1(repor_1.*) END FOREACH FINISH REPORT reporte_1 END IF END IF RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT reporte_1(x) DEFINE x RECORD num_emp SMALLINT, departamento SMALLINT, nom1_emp CHAR(14), nom2_emp CHAR(14), apell1_emp CHAR(14), apell2_emp CHAR(14), nom_dpto CHAR(30), nom_puesto CHAR(28), cod_puesto SMALLINT END RECORD OUTPUT LEFT MARGIN 0 ORDER BY x.departamento,x.cod_puesto,x.num_emp format page header LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ascii 77 LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET hora = time PRINT comp_on PRINT COLUMN 1, "prprrp001", COLUMN 49, " R A Y .O. V A C D O M I N I C A N A, S. A. ", COLUMN 141, "Pag. ",pageno USING "###" PRINT COLUMN 49, " SISTEMA DE PRODUCCION ", COLUMN 141, today using "dd/mm/yy" PRINT COLUMN 49, "REGISTRO HORAS DIARIAS Y PERSONAL NO DE PRODUCCION", COLUMN 144, hora skip 1 line PRINT COLUMN 1, "NUMERO SEMANA: ",prtb02.num_semana USING "&&&&"," ", ": DEL ",prtb02.semana_del USING "dd/mm/yy", " AL ",prtb02.semana_al USING "dd/mm/yy" PRINT "====================================================================", "====================================================================", "============" PRINT COLUMN 64, "| H O R A S I N D I R E C T A S ", " |" PRINT COLUMN 64, "| NORMALES |", COLUMN 120, " EXTRAS |" PRINT COLUMN 64,"|", COLUMN 67, "S", 5 spaces, "D", 5 spaces, "L", 5 spaces, "M", 5 spaces, "M", 5 spaces, "J", 5 spaces, "V |", 2 spaces, "S", 5 spaces, "D", 5 spaces, "L", 5 spaces, "M", 5 spaces, "M", 5 spaces, "J", 5 spaces, "V |" PRINT "====================================================================", "====================================================================", "============" BEFORE GROUP OF x.departamento LET idx = 0 BEFORE GROUP OF x.cod_puesto IF x.departamento >= 6000 and x.departamento <= 6199 THEN IF x.cod_puesto = 3 OR x.cod_puesto = 27 OR x.cod_puesto = 13 OR x.cod_puesto = 14 THEN LET idx = idx + 1 IF idx = 1 THEN PRINT doble_on,x.nom_dpto clipped,doble_off SKIP 1 LINE END IF END IF END IF IF x.departamento >= 6199 THEN LET idx = idx + 1 IF idx = 1 THEN PRINT doble_on,x.nom_dpto clipped,doble_off SKIP 1 LINE END IF {PRINT COLUMN 64, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|"} END IF ON EVERY ROW IF x.departamento >= 6000 and x.departamento <= 6199 THEN IF x.cod_puesto = 3 OR x.cod_puesto = 27 OR x.cod_puesto = 13 OR x.cod_puesto = 14 THEN LET prtb03.fecha = prtb02.semana_del PRINT COLUMN 64, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|" PRINT COLUMN 1,x.num_emp using "&&&"," ",x.nom1_emp clipped, " ",x.apell1_emp CLIPPED, COLUMN 35, x.nom_puesto CLIPPED, COLUMN 64, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|" PRINT "--------------------------------------------------------------------", "--------------------------------------------------------------------", "-----------" END IF END IF IF x.departamento >= 6199 THEN LET prtb03.fecha = prtb02.semana_del PRINT COLUMN 64, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|" PRINT COLUMN 1,x.num_emp using "&&&"," ",x.nom1_emp clipped," ",x.apell1_emp, COLUMN 35, x.nom_puesto CLIPPED, COLUMN 64, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|", 5 spaces, "|" PRINT "--------------------------------------------------------------------", "--------------------------------------------------------------------", "-----------" END IF AFTER GROUP OF x.departamento IF x.departamento >= 6000 AND x.departamento <= 6199 THEN IF x.cod_puesto = 3 OR x.cod_puesto = 27 OR x.cod_puesto = 13 OR x.cod_puesto = 14 THEN PRINT "--------------------------------------------------------------------", "--------------------------------------------------------------------", "-----------" END IF END IF IF x.departamento >= 6199 THEN PRINT "--------------------------------------------------------------------", "--------------------------------------------------------------------", "-----------" END IF ON LAST ROW SKIP 1 LINE PRINT "Total Registros Impresos===> ",COUNT(*) USING "####" PRINT comp_off END REPORT FUNCTION selectOutput() DEFINE r_output STRING, -- output format option r_action STRING, -- used to set preview option r_filename STRING, -- filename of Report Design document (the .4rp filename) preview INTEGER -- preview option TRUE/FALSE, to display report in Report Viewer -- display form allowing user to select the .4rp filename and output options CLOSE WINDOW SCREEN OPTIONS INPUT WRAP OPEN WINDOW f_configuration WITH FORM "Configuration" LET INT_FLAG=FALSE LET preview = FALSE INPUT BY NAME r_filename,r_output,r_action ON ACTION CANCEL EXIT PROGRAM ON ACTION CLOSE EXIT PROGRAM END INPUT CLOSE WINDOW f_configuration CALL ui.interface.refresh() -- set preview variable to match output option r_action IF r_action IS NOT NULL THEN IF r_action == "preview" THEN LET preview = TRUE END IF END IF --return report name (filename of Report Design Document) and output option variables to be used to configure the report engine RETURN r_filename||".4rp", r_output, preview END FUNCTION