{ ------------------------------------------------------------------------------- PROGRAMA : PRPRRP008 OBJETIVO : Pilas Prod./Horas Directas VS Ano Anterior PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Junio 22, 1994 ------------------------------------------------------------------------------- } GLOBALS "prprgb000.4gl" DEFINE mes_d CHAR(10) DEFINE ano,mes SMALLINT DEFINE ano1,ano2,ano3 CHAR(4) DEFINE fecha3,fecha4,fecha5,fecha6 DATE DEFINE total DECIMAL(12,2) DEFINE fecha_inicial,fecha_final DATE FUNCTION prprrp008() #WHENEVER ERROR CONTINUE DEFINE prt_datos8 RECORD mes SMALLINT, 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 prfmrp008 FROM "prfmrp006" DISPLAY FORM prfmrp008 CALL pantalla() DISPLAY "prprrp008" AT 4,3 DISPLAY "Pilas Producidas Por Horas directas" 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_8 TO "C:\\archivo" DISPLAY "Impresion En Proceso... Espere Por Favor" AT 19,14 FOREACH busca INTO prt_datos8.* LET prt_datos8.total_act = 0 LET prt_datos8.total_ant = 0 LET prt_datos8.cantidad1 = 0 LET prt_datos8.prod_act = 0 LET prt_datos8.prod_ant = 0 SELECT UNIQUE a.fecha_inicio,a.fecha_corte INTO fecha3,fecha4 FROM prdtable a WHERE a.ano = ano2 AND a.mes = prt_datos8.mes SELECT UNIQUE a.fecha_inicio,a.fecha_corte INTO fecha5,fecha6 FROM prdtable a WHERE a.ano = ano3 AND a.mes = prt_datos8.mes SELECT SUM(cantidad_2/1000) INTO prt_datos8.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_datos8.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+e_directa) INTO total FROM cttb00003 WHERE fecha BETWEEN prt_datos8.fecha1 AND prt_datos8.fecha2 AND status_t IS NULL IF total IS NULL THEN LET total = 0 END IF LET prt_datos8.total_act = total LET total = 0 SELECT SUM(hn_ind+he_ind) INTO total FROM prtb00003 WHERE fecha BETWEEN prt_datos8.fecha1 AND prt_datos8.fecha2 AND status_t IS NULL IF total IS NULL THEN LET total = 0 END IF LET prt_datos8.total_act = prt_datos8.total_act + total LET total = 0 SELECT SUM(h_directa+e_directa) 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_datos8.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+e_directa) 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_datos8.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_datos8.total_ant1 = prt_datos8.total_ant1 + total IF prt_datos8.total_act > 0 THEN LET prt_datos8.prod_act = (prt_datos8.cantidad/prt_datos8.total_act)*1000 ELSE LET prt_datos8.prod_act = 0 END IF IF prt_datos8.total_ant > 0 AND prt_datos8.cantidad1 > 0 THEN LET prt_datos8.prod_ant = (prt_datos8.cantidad1/prt_datos8.total_ant)*1000 ELSE LET prt_datos8.prod_ant = 0 END IF IF prt_datos8.total_ant1 > 0 AND prt_datos8.cantidad2 > 0 THEN LET prt_datos8.prod_ant1 = (prt_datos8.cantidad2/prt_datos8.total_ant1)*1000 ELSE LET prt_datos8.prod_ant1 = 0 END IF OUTPUT TO REPORT reporte_8(prt_datos8.*) END FOREACH FINISH REPORT reporte_8 RUN "type C:\\archivo > %USPRINT%" END FUNCTION # Rutina de Impresion de las informaciones REPORT reporte_8(x) # Variable para tomar las informaciones DEFINE x RECORD mes SMALLINT, 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, "prprrp008", 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 Directas ", 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