514 lines
16 KiB
Plaintext
514 lines
16 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
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
|