{ ------------------------------------------------------------------------------- PROGRAMA : PRPRRP006 OBJETIVO : Pilas Prod./Horas Totales VS Ano Anterior PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Junio 22, 1994 ------------------------------------------------------------------------------- } GLOBALS "prprgb000.4gl" DEFINE mes_d CHAR(10) DEFINE ano,mes INTEGER DEFINE ano1,ano2,ano3 CHAR(4) DEFINE fecha3,fecha4,fecha5,fecha6 DATE DEFINE total DECIMAL(12,2) DEFINE fecha_inicial,fecha_final DATE FUNCTION prprrp006() #WHENEVER ERROR CONTINUE DEFINE prt_datos6 RECORD mes INTEGER, fecha1 DATE, fecha2 DATE, cantidad INTEGER, cantidad1 INTEGER, cantidad2 INTEGER, total_act DECIMAL(12,2), total_ant DECIMAL(12,2), total_ant1 DECIMAL(12,2), prod_act DECIMAL(12,3), prod_ant DECIMAL(12,3), prod_ant1 DECIMAL(12,3) END RECORD OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM prfmrp006 FROM "prfmrp006" DISPLAY FORM prfmrp006 CALL pantalla() DISPLAY "prprrp006" AT 4,3 DISPLAY "Pilas Producidas Por Horas Totales" AT 6,23 LET tipo_papel = 2 CALL msgrp000(tipo_papel) ########### Captura de valores para el criterio de busqueda ############ INPUT BY NAME ano,mes AFTER FIELD ano IF ano IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano END IF LET ano1 = ano USING "&&&&" LET ano2 = ano - 1 USING "&&&&" LET ano3 = ano - 2 USING "&&&&" AFTER FIELD mes IF mes IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD mes END IF SELECT UNIQUE a.mes FROM prdtable a WHERE a.mes = mes IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD mes END IF END INPUT ########### Facilidad para cancelar la variacioncon la tecla DELETE #### IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF DECLARE busca CURSOR FOR SELECT a.mes,a.fecha_inicio,a.fecha_corte,SUM(b.cantidad_2/1000) FROM prdtable a,iptb00006 b WHERE a.ano = ano1 AND a.mes <= mes AND b.status_t IS NULL AND b.fecha BETWEEN a.fecha_inicio AND a.fecha_corte AND b.cod_n = 3 AND b.cod_mov = 20 GROUP BY 1,2,3 DISPLAY "Buscando Informacion... Espere Por Favor" AT 19,14 START REPORT reporte_6 TO "C:\\archivo" DISPLAY "Impresion En Proceso... Espere Por Favor" AT 19,14 FOREACH busca INTO prt_datos6.* LET prt_datos6.cantidad1 = 0 LET prt_datos6.cantidad2 = 0 LET prt_datos6.total_act = 0 LET prt_datos6.total_ant = 0 LET prt_datos6.total_ant1= 0 LET prt_datos6.prod_act = 0 LET prt_datos6.prod_ant = 0 LET prt_datos6.prod_ant1 = 0 SELECT UNIQUE a.fecha_inicio,a.fecha_corte INTO fecha3,fecha4 FROM prdtable a WHERE a.ano = ano2 AND a.mes = prt_datos6.mes SELECT UNIQUE a.fecha_inicio,a.fecha_corte INTO fecha5,fecha6 FROM prdtable a WHERE a.ano = ano3 AND a.mes = prt_datos6.mes SELECT SUM(cantidad_2/1000) INTO prt_datos6.cantidad1 FROM iptb00006 WHERE fecha BETWEEN fecha3 AND fecha4 AND status_t IS NULL AND cod_n = 3 AND cod_mov = 20 AND status_t IS NULL SELECT SUM(cantidad_2/1000) INTO prt_datos6.cantidad2 FROM iptb00006 WHERE fecha BETWEEN fecha5 AND fecha6 AND status_t IS NULL AND cod_n = 3 AND cod_mov = 20 AND status_t IS NULL LET total = 0 SELECT SUM(h_directa+h_indirecta+e_directa+e_indirecta) INTO total FROM cttb00003 WHERE fecha BETWEEN prt_datos6.fecha1 AND prt_datos6.fecha2 AND status_t IS NULL IF total IS NULL THEN LET total = 0 END IF LET prt_datos6.total_act = total LET total = 0 SELECT SUM(hn_ind+he_ind) INTO total FROM prtb00003 WHERE fecha BETWEEN prt_datos6.fecha1 AND prt_datos6.fecha2 AND status_t IS NULL IF total IS NULL THEN LET total = 0 END IF LET prt_datos6.total_act = prt_datos6.total_act + total LET total = 0 SELECT SUM(h_directa+h_indirecta+e_directa+e_indirecta) INTO total FROM cttb00003 WHERE fecha BETWEEN fecha3 AND fecha4 AND status_t IS NULL IF total IS NULL THEN LET total = 0 END IF LET prt_datos6.total_ant = total LET total = 0 SELECT SUM(hn_ind+he_ind) INTO total FROM prtb00003 WHERE fecha BETWEEN fecha3 AND fecha4 AND status_t IS NULL LET total = 0 SELECT SUM(h_directa+h_indirecta+e_directa+e_indirecta) INTO total FROM cttb00003 WHERE fecha BETWEEN fecha5 AND fecha6 AND status_t IS NULL IF total IS NULL THEN LET total = 0 END IF LET prt_datos6.total_ant1 = total LET total = 0 SELECT SUM(hn_ind+he_ind) INTO total FROM prtb00003 WHERE fecha BETWEEN fecha5 AND fecha6 AND status_t IS NULL IF total IS NULL THEN LET total = 0 END IF LET prt_datos6.total_ant1 = prt_datos6.total_ant1 + total IF prt_datos6.total_act > 0 THEN LET prt_datos6.prod_act = (prt_datos6.cantidad/prt_datos6.total_act)*1000 ELSE LET prt_datos6.prod_act = 0 END IF IF prt_datos6.total_ant > 0 AND prt_datos6.cantidad1 > 0 THEN LET prt_datos6.prod_ant = (prt_datos6.cantidad1/prt_datos6.total_ant)*1000 ELSE LET prt_datos6.prod_ant = 0 END IF IF prt_datos6.total_ant1 > 0 AND prt_datos6.cantidad2 > 0 THEN LET prt_datos6.prod_ant1 = (prt_datos6.cantidad2/prt_datos6.total_ant1)*1000 ELSE LET prt_datos6.prod_ant1 = 0 END IF OUTPUT TO REPORT reporte_6(prt_datos6.*) END FOREACH FINISH REPORT reporte_6 RUN "type C:\\archivo > %USPRINT%" END FUNCTION # Rutina de Impresion de las informaciones REPORT reporte_6(x) # Variable para tomar las informaciones DEFINE x RECORD mes INTEGER, fecha1 DATE, fecha2 DATE, cantidad INTEGER, cantidad1 INTEGER, cantidad2 INTEGER, total_act DECIMAL(12,2), total_ant DECIMAL(12,2), total_ant1 DECIMAL(12,2), prod_act DECIMAL(12,3), prod_ant DECIMAL(12,3), prod_ant1 DECIMAL(12,3) END RECORD DEFINE doble_on CHAR(3) DEFINE doble_off CHAR(3) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(2) DEFINE comp_off CHAR(2) DEFINE doce CHAR(2) DEFINE normal CHAR(3) DEFINE hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.mes FORMAT PAGE HEADER # Validacion de los caracteres ascii LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 27, ASCII 098 LET negrillas_off = ASCII 27, ASCII 099 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 029 LET hora = time # Impresion de los encabezados PRINT comp_on PRINT COLUMN 1, "prprrp006", COLUMN 77, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN 182, "Pag. ",pageno using "###" PRINT COLUMN 77, " Sistema de Produccion", COLUMN 182, today using "dd/mm/yy" PRINT COLUMN 77, " Pilas Producidas Por Horas Totales ", COLUMN 185, hora SKIP 1 LINE PRINT COLUMN 1, "--------------------------------------------------------", "--------------------------------------------------------", "--------------------------------------------------------", "---------------------" PRINT COLUMN 23, "--------------- ", ano1, " ---------------", COLUMN 77, "--------------- ", ano2, " ---------------", COLUMN 131, "--------------- ", ano3, " ---------------" PRINT COLUMN 1, "--------------------------------------------------------", "--------------------------------------------------------", "--------------------------------------------------------", "---------------------" PRINT COLUMN 1, "Mes ", COLUMN 20, "PROD. X 1000", COLUMN 39, " HORAS ", COLUMN 57, "PRODUCTIVIDAD", COLUMN 74, "PROD. X 1000", COLUMN 93, " HORAS ", COLUMN 111, "PRODUCTIVIDAD", COLUMN 128, "PROD. X 1000", COLUMN 147, " HORAS ", COLUMN 165, "PRODUCTIVIDAD" PRINT COLUMN 1, "--------------------------------------------------------", "--------------------------------------------------------", "--------------------------------------------------------", "---------------------" ON EVERY ROW CASE WHEN x.mes = 1 LET mes_d = "ENERO" EXIT CASE WHEN x.mes = 2 LET mes_d = "FEBRERO" EXIT CASE WHEN x.mes = 3 LET mes_d = "MARZO" EXIT CASE WHEN x.mes = 4 LET mes_d = "ABRIL" EXIT CASE WHEN x.mes = 5 LET mes_d = "MAYO" EXIT CASE WHEN x.mes = 6 LET mes_d = "JUNIO" EXIT CASE WHEN x.mes = 7 LET mes_d = "JULIO" EXIT CASE WHEN x.mes = 8 LET mes_d = "AGOSTO" EXIT CASE WHEN x.mes = 9 LET mes_d = "SEPTIEMBRE" EXIT CASE WHEN x.mes = 10 LET mes_d = "OCTUBRE" EXIT CASE WHEN x.mes = 11 LET mes_d = "NOVIEMBRE" EXIT CASE WHEN x.mes = 12 LET mes_d = "DICIEMBRE" EXIT CASE END CASE PRINT COLUMN 1, mes_d, COLUMN 21, x.cantidad USING "###,###,###", COLUMN 41, x.total_act USING "###,###.##", COLUMN 60, x.prod_act USING "##,###.###", COLUMN 75, x.cantidad1 USING "###,###,###", COLUMN 95, x.total_ant USING "###,###.##", COLUMN 114, x.prod_ant USING "##,###.###", COLUMN 129, x.cantidad2 USING "###,###,###", COLUMN 149, x.total_ant1 USING "###,###.##", COLUMN 168, x.prod_ant1 USING "##,###.###" ON LAST ROW PRINT COLUMN 1, "--------------------------------------------------------", "--------------------------------------------------------", "--------------------------------------------------------", "---------------------" PRINT COLUMN 1, "TOTALES ---> ", COLUMN 21, sum(x.cantidad) USING "###,###,###", COLUMN 41, sum(x.total_act) USING "###,###.##", COLUMN 60, sum(x.prod_act) USING "##,###.###", COLUMN 75, sum(x.cantidad1) USING "###,###,###", COLUMN 95, sum(x.total_ant) USING "###,###.##", COLUMN 114, sum(x.prod_ant) USING "##,###.###", COLUMN 129, sum(x.cantidad2) USING "###,###,###", COLUMN 149, sum(x.total_ant1) USING "###,###.##", COLUMN 168, sum(x.prod_ant1) USING "##,###.###" PRINT COLUMN 1, "--------------------------------------------------------", "--------------------------------------------------------", "--------------------------------------------------------", "---------------------" PRINT comp_off END REPORT