{ ------------------------------------------------------------------------------- PROGRAMA : PRPRRP012 OBJETIVO : Produccion Comparada PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Oct. 07, 1994 ------------------------------------------------------------------------------- } GLOBALS "prprgb000.4gl" DEFINE nomenclat ARRAY[100] OF CHAR(11) DEFINE cantidad1 ARRAY[3000,100] OF DECIMAL(12,2) DEFINE cantidad2 ARRAY[3,3] OF DECIMAL(12,2) DEFINE nome,nome1 CHAR(1) DEFINE mes_p CHAR(10) DEFINE m,i,ano_i,ano,mes INTEGER DEFINE ano3,ano4,ano1,ano2 CHAR(4) DEFINE fecha1,fecha2,fecha3,fecha4 DATE DEFINE total2,total1,cantidad3,cantidad4,total DECIMAL(12,2) DEFINE fecha_inicial,fecha_final DATE FUNCTION prprrp012() #WHENEVER ERROR CONTINUE DEFINE prt_datos12 RECORD nomenclatura CHAR(11), ano CHAR(4), mes SMALLINT, cantidad DECIMAL(12,2) END RECORD OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM prfmrp012 FROM "prfmrp006" DISPLAY FORM prfmrp012 CALL pantalla() DISPLAY "prprrp012" AT 4,3 DISPLAY "Produccion Ano Actual vs Ano Anterior" AT 6,21 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 ano_i= ano - 1 LET ano1 = ano USING "&&&&" LET ano2 = ano - 1 USING "&&&&" LET ano3 = ano USING "&&&&" LET ano4 = ano - 1 USING "&&&&" AFTER FIELD mes IF ano IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ano END IF SELECT a.fecha_corte INTO fecha1 FROM prdtable a WHERE a.ano = ano AND a.mes = mes 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 UNIQUE c.nomenclatura FROM iptb00002 c WHERE c.cod_n = 3 ORDER BY 1 DISPLAY "Buscando Informacion... Espere Por Favor" AT 19,14 START REPORT reporte_12 TO "C:\\archivo" DISPLAY "Impresion En Proceso... Espere Por Favor" AT 19,14 LET l = 0 FOREACH busca INTO prt_datos12.* LET prt_datos12.cantidad = 0 IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET l = l + 1 LET nomenclat[l] = prt_datos12.nomenclatura FOR j = ano_i TO ano LET ano1 = j USING "&&&&" LET cantidad1[j,l] = 0 FOR i = 1 TO mes LET prt_datos12.ano = ano1 LET prt_datos12.mes = i LET prt_datos12.cantidad = 0 SELECT a.fecha_inicio,a.fecha_corte INTO fecha1,fecha2 FROM prdtable a WHERE a.ano = ano1 AND a.mes = i SELECT SUM(b.cantidad_2/1000) INTO prt_datos12.cantidad FROM iptb00006 b,iptb00002 c WHERE b.cod_n = c.cod_n AND b.cod_grupo = c.cod_grupo AND b.cod_tipo = c.cod_tipo AND b.cod_sec = c.cod_sec AND b.fecha BETWEEN fecha1 AND fecha2 AND b.cod_mov = 20 AND b.status_t IS NULL AND c.nomenclatura = prt_datos12.nomenclatura IF prt_datos12.cantidad IS NULL THEN LET prt_datos12.cantidad = 0 END IF LET cantidad1[j,l] = cantidad1[j,l] + prt_datos12.cantidad DISPLAY " " AT 20,14 DISPLAY prt_datos12.nomenclatura," ",ano1," ",i USING "&&" AT 20,14 OUTPUT TO REPORT reporte_12(prt_datos12.*) END FOR END FOR END FOREACH FINISH REPORT reporte_12 RUN "type C:\\archivo > %USPRINT%" END FUNCTION # Rutina de Impresion de las informaciones REPORT reporte_12(x) # Variable para tomar las informaciones DEFINE x RECORD nomenclatura CHAR(10), ano CHAR(4), mes SMALLINT, cantidad DECIMAL(12,2) 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,x.ano DESC,x.nomenclatura 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 LET j = 12 FOR i = 1 TO l LET j = j + 11 END FOR LET j = j + 13 FOR i = 1 TO l LET j = j + 11 END FOR LET j = j + 13 LET k = ((j-45)/2) + 1 PRINT comp_on PRINT COLUMN 1, "prprrp012", COLUMN k, "R A Y . O . V A C D O M I N I C A N A, S. A.", COLUMN j-8, "Pag. ",pageno using "###" PRINT COLUMN k, " Sistema de Produccion", COLUMN j-8, today using "dd/mm/yy" PRINT COLUMN k, " PRODUCCION ANO ACTUAL VS ANO ANTERIOR", COLUMN j-5, hora SKIP 1 LINE PRINT COLUMN 1,"-----------"; LET j = 12 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------"; LET j = j + 13 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------" PRINT COLUMN (k+45)/2, ano3, COLUMN ((k+45)/2) + k, ano4 PRINT COLUMN 1,"-----------"; LET j = 12 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------"; LET j = j + 13 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------" LET j = 12 FOR i = 1 TO l LET j = j + 11 LET nome = nomenclat[i] LET nome1= nomenclat[i+1] IF nome="D" OR nome1 = "D" THEN LET nome = "C" LET nome1= "C" END IF IF nome != nome1 OR i = (l-1) THEN IF nome = "A" THEN PRINT COLUMN j-11," D | "," "; END IF IF nome = "B" THEN PRINT COLUMN j-11," C | "," "; END IF IF nome = "C" THEN PRINT COLUMN j," AA | "," "; END IF END IF END FOR PRINT COLUMN j," ||"; LET j = j + 13 FOR i = 1 TO l LET j = j + 11 LET nome = nomenclat[i] LET nome1= nomenclat[i+1] IF nome="D" OR nome1 = "D" THEN LET nome = "C" LET nome1= "C" END IF IF nome != nome1 OR i = (l-1) THEN IF nome = "A" THEN PRINT COLUMN j-11," D | "," "; END IF IF nome = "B" THEN PRINT COLUMN j-11," C | "," "; END IF IF nome = "C" THEN PRINT COLUMN j," AA | "," "; END IF END IF END FOR PRINT COLUMN j," ||" PRINT COLUMN 1,"-----------"; LET j = 12 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------"; LET j = j + 13 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------" PRINT COLUMN 1,"MES "; LET j = 15 FOR i = 1 TO l PRINT COLUMN j,nomenclat[i] CLIPPED; LET j = j + 11 END FOR PRINT COLUMN j," TOTAL||"; LET j = j + 13 FOR i = 1 TO l PRINT COLUMN j,nomenclat[i] CLIPPED; LET j = j + 11 END FOR PRINT COLUMN j," TOTAL||" PRINT COLUMN 1,"-----------"; LET j = 12 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------"; LET j = j + 13 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------" BEFORE GROUP OF x.mes CASE WHEN x.mes = 1 LET mes_p = "ENERO " EXIT CASE WHEN x.mes = 2 LET mes_p = "FEBRERO " EXIT CASE WHEN x.mes = 3 LET mes_p = "MARZO " EXIT CASE WHEN x.mes = 4 LET mes_p = "ABRIL " EXIT CASE WHEN x.mes = 5 LET mes_p = "MAYO " EXIT CASE WHEN x.mes = 6 LET mes_p = "JUNIO " EXIT CASE WHEN x.mes = 7 LET mes_p = "JULIO " EXIT CASE WHEN x.mes = 8 LET mes_p = "AGOSTO " EXIT CASE WHEN x.mes = 9 LET mes_p = "SEPTIEMBRE" EXIT CASE WHEN x.mes = 10 LET mes_p = "OCTUBRE " EXIT CASE WHEN x.mes = 11 LET mes_p = "NOVIEMBRE " EXIT CASE WHEN x.mes = 12 LET mes_p = "DICIEMBRE " EXIT CASE END CASE PRINT COLUMN 1, mes_p; LET j = 12 BEFORE GROUP OF x.ano LET total = 0 AFTER GROUP OF x.nomenclatura PRINT COLUMN j, x.cantidad USING "###,###.##"," "; LET j = j + 11 LET total = total + x.cantidad AFTER GROUP OF x.ano PRINT COLUMN j, total USING "###,###.##","|| "; LET j = j + 13 AFTER GROUP OF x.mes PRINT COLUMN j," " ON LAST ROW PRINT COLUMN 1,"-----------"; LET j = 12 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------"; LET j = j + 13 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------" PRINT COLUMN 1,"ACUMULADO "; LET total = 0 LET j = 12 FOR i = 1 TO l PRINT COLUMN j,cantidad1[ano,i] USING "###,###.##"," "; LET j = j + 11 LET total = total + cantidad1[ano,i] END FOR PRINT COLUMN j,total USING "###,###.##","|| "; LET total1 = total LET total = 0 LET j = j + 13 FOR i = 1 TO l PRINT COLUMN j,cantidad1[ano_i,i] USING "###,###.##"," "; LET j = j + 11 LET total = total + cantidad1[ano_i,i] END FOR PRINT COLUMN j,total USING "###,###.##","|| " LET total2 = total PRINT COLUMN 1,"-----------"; LET j = 12 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------"; LET j = j + 13 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------" LET cantidad2[1,1] = 0 LET cantidad2[1,2] = 0 LET cantidad2[1,3] = 0 LET cantidad2[2,1] = 0 LET cantidad2[2,2] = 0 LET cantidad2[2,3] = 0 PRINT COLUMN 1,"COMP./TIPO "; LET j = 12 FOR i = 1 TO l PRINT COLUMN j,((cantidad1[ano,i]-cantidad1[ano_i,i])/ cantidad1[ano_i,i])*100 USING "((,(((.##)"," "; LET j = j + 11 LET nome = nomenclat[i] IF nome = "A" THEN LET cantidad2[1,1] = cantidad2[1,1] + cantidad1[ano,i] END IF IF nome = "B" THEN LET cantidad2[1,2] = cantidad2[1,2] + cantidad1[ano,i] END IF IF nome = "C" OR nome = "D" THEN LET cantidad2[1,3] = cantidad2[1,3] + cantidad1[ano,i] END IF END FOR PRINT COLUMN j," ","|| "; LET j = j + 13 FOR i = 1 TO l PRINT COLUMN j, " "," "; LET j = j + 11 LET nome = nomenclat[i] IF nome = "A" THEN LET cantidad2[2,1]=cantidad2[2,1]+cantidad1[ano_i,i] END IF IF nome = "B" THEN LET cantidad2[2,2]=cantidad2[2,2]+cantidad1[ano_i,i] END IF IF nome = "C" OR nome = "D" THEN LET cantidad2[2,3]=cantidad2[2,3]+cantidad1[ano_i,i] END IF END FOR PRINT COLUMN j," "," " PRINT COLUMN 1,"-----------"; LET j = 12 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------"; LET j = j + 13 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------" LET j = 12 PRINT COLUMN 1,"COMP-TAMANO"; FOR i = 1 TO l LET j = j + 11 LET nome = nomenclat[i] LET nome1= nomenclat[i+1] IF nome="D" OR nome1 = "D" THEN LET nome = "C" LET nome1= "C" END IF IF nome != nome1 OR i = (l-1) THEN IF nome = "A" THEN PRINT COLUMN j-11,((cantidad2[1,1]-cantidad2[2,1])/cantidad2[2,1]) *100 USING "((,(((.##)"," "; END IF IF nome = "B" THEN PRINT COLUMN j-11,((cantidad2[1,2]-cantidad2[2,2])/cantidad2[2,2]) *100 USING "((,(((.##)"," "; END IF IF nome = "C" THEN PRINT COLUMN j,((cantidad2[1,3]-cantidad2[2,3])/cantidad2[2,3]) *100 USING "((,(((.##)"," "; END IF END IF END FOR PRINT COLUMN j," ","|| " PRINT COLUMN 1,"-----------"; LET j = 12 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------"; LET j = j + 13 FOR i = 1 TO l PRINT COLUMN j,"-----------"; LET j = j + 11 END FOR PRINT COLUMN j,"-------------" PRINT comp_off END REPORT