465 lines
14 KiB
Plaintext
465 lines
14 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : PRPRRP007
|
|
OBJETIVO : Poduccion Acumulada en un rango de anos
|
|
PROGRAMADOR : Tadeo A. Ferreras
|
|
FECHA REALIZACION : Junio 22, 1994
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
|
|
GLOBALS "prprgb000.4gl"
|
|
|
|
DEFINE jb ARRAY[10000] OF RECORD
|
|
cantidad1 DECIMAL(12,2),
|
|
cantidad2 DECIMAL(12,2),
|
|
cantidad3 DECIMAL(12,2)
|
|
END RECORD
|
|
|
|
DEFINE mes_d CHAR(10)
|
|
DEFINE a,ano_i,ano_f,ano,mes INTEGER
|
|
DEFINE mes_b,ano1,ano2,ano3 CHAR(4)
|
|
DEFINE fecha3,fecha4 DATE
|
|
DEFINE cant_p1,cant_p2,cant_p3,cant_pres1,cant_pres2,cant_pres3,total,
|
|
cantidad1_1,cantidad1_2,cantidad1_3 DECIMAL(12,2)
|
|
DEFINE fecha_inicial,fecha_final DATE
|
|
FUNCTION prprrp007()
|
|
#WHENEVER ERROR CONTINUE
|
|
|
|
DEFINE prt_datos7 RECORD
|
|
ano CHAR(4),
|
|
mes SMALLINT,
|
|
fecha1 DATE,
|
|
fecha2 DATE,
|
|
cantidad1 INTEGER,
|
|
cantidad2 INTEGER,
|
|
cantidad3 INTEGER,
|
|
clave CHAR(1)
|
|
END RECORD
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
|
|
OPEN FORM prfmrp007 FROM "prfmrp007"
|
|
DISPLAY FORM prfmrp007
|
|
CALL pantalla()
|
|
DISPLAY "prprrp007" AT 4,3
|
|
DISPLAY "Produccion Acumulada en Rango de Anos" AT 6,21
|
|
|
|
LET tipo_papel = 2
|
|
CALL msgrp000(tipo_papel)
|
|
########### Captura de valores para el criterio de busqueda ############
|
|
INPUT BY NAME ano,ano_f,mes
|
|
|
|
AFTER FIELD ano
|
|
IF ano IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ano
|
|
END IF
|
|
|
|
SELECT MIN(b.ano) INTO ano1 FROM prdtable b
|
|
|
|
LET ano_i = ano1
|
|
LET ano1 = NULL
|
|
IF ano_i > ano THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ano
|
|
END IF
|
|
LET ano_i = NULL
|
|
|
|
AFTER FIELD ano_f
|
|
IF ano_f IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ano_f
|
|
END IF
|
|
|
|
IF (ano_f - ano) > 5 THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ano
|
|
END IF
|
|
|
|
SELECT MAX(b.ano) INTO ano_i FROM prdtable b
|
|
|
|
IF ano_f > ano_i THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ano_f
|
|
END IF
|
|
|
|
IF (ano - ano_f) > 5 THEN
|
|
LET numero_msg = 64
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ano
|
|
END IF
|
|
|
|
LET ano1 = ano USING "&&&&"
|
|
LET ano2 = ano_f USING "&&&&"
|
|
|
|
AFTER FIELD mes
|
|
IF mes IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes
|
|
END IF
|
|
|
|
SELECT UNIQUE b.mes FROM prdtable b WHERE b.mes = mes AND
|
|
b.ano = ano
|
|
|
|
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
|
|
|
|
FOR a = ano TO ano_f
|
|
LET jb[a].cantidad1 = 0
|
|
LET jb[a].cantidad2 = 0
|
|
LET jb[a].cantidad3 = 0
|
|
END FOR
|
|
|
|
DECLARE busca CURSOR FOR
|
|
SELECT b.ano,b.mes,b.fecha_inicio,b.fecha_corte
|
|
FROM prdtable b
|
|
WHERE (b.ano BETWEEN ano1 AND ano2) AND b.mes <= mes
|
|
ORDER BY 1,2
|
|
|
|
DISPLAY "Buscando Informacion... Espere Por Favor" AT 19,14
|
|
|
|
START REPORT reporte_7 TO "C:\\archivo"
|
|
DISPLAY "Impresion En Proceso... Espere Por Favor" AT 19,14
|
|
|
|
FOREACH busca INTO prt_datos7.*
|
|
LET prt_datos7.cantidad1 = 0
|
|
LET prt_datos7.cantidad2 = 0
|
|
LET prt_datos7.cantidad3 = 0
|
|
LET prt_datos7.clave = "a"
|
|
|
|
SELECT SUM(cantidad_2) INTO prt_datos7.cantidad1
|
|
FROM iptb00006
|
|
WHERE fecha BETWEEN prt_datos7.fecha1 AND prt_datos7.fecha2 AND
|
|
status_t IS NULL AND cod_n = 3 AND cod_grupo = 1 AND
|
|
cod_mov = 20
|
|
|
|
SELECT SUM(cantidad_2) INTO prt_datos7.cantidad2
|
|
FROM iptb00006
|
|
WHERE fecha BETWEEN prt_datos7.fecha1 AND prt_datos7.fecha2 AND
|
|
status_t IS NULL AND cod_n = 3 AND cod_grupo = 2 AND
|
|
cod_mov = 20
|
|
|
|
SELECT SUM(cantidad_2) INTO prt_datos7.cantidad3
|
|
FROM iptb00006
|
|
WHERE fecha BETWEEN prt_datos7.fecha1 AND prt_datos7.fecha2 AND
|
|
status_t IS NULL AND cod_n = 3 AND cod_grupo = 3 AND
|
|
cod_mov = 20
|
|
|
|
IF prt_datos7.cantidad1 IS NULL THEN
|
|
LET prt_datos7.cantidad1 = 0
|
|
END IF
|
|
IF prt_datos7.cantidad2 IS NULL THEN
|
|
LET prt_datos7.cantidad2 = 0
|
|
END IF
|
|
IF prt_datos7.cantidad3 IS NULL THEN
|
|
LET prt_datos7.cantidad3 = 0
|
|
END IF
|
|
|
|
OUTPUT TO REPORT reporte_7(prt_datos7.*)
|
|
|
|
END FOREACH
|
|
FINISH REPORT reporte_7
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
|
|
|
# Rutina de Impresion de las informaciones
|
|
REPORT reporte_7(x)
|
|
|
|
# Variable para tomar las informaciones
|
|
DEFINE x RECORD
|
|
ano CHAR(4),
|
|
mes SMALLINT,
|
|
fecha1 DATE,
|
|
fecha2 DATE,
|
|
cantidad1 INTEGER,
|
|
cantidad2 INTEGER,
|
|
cantidad3 INTEGER,
|
|
clave CHAR(1)
|
|
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.clave,x.mes,x.ano DESC
|
|
|
|
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
|
|
LET l = 15
|
|
FOR a = ano TO ano_f
|
|
LET l = l + 36
|
|
|
|
IF a = ano THEN
|
|
LET l = l + 36
|
|
END IF
|
|
END FOR
|
|
|
|
# Impresion de los encabezados
|
|
PRINT comp_on
|
|
PRINT COLUMN 1, "prprrp007",
|
|
COLUMN ((l-45)/2)+1,
|
|
"R A Y . O . V A C D O M I N I C A N A, S. A.",
|
|
COLUMN l-7, "Pag. ",
|
|
pageno using "###"
|
|
PRINT COLUMN ((l-45)/2)+1,
|
|
" Sistema de Produccion",
|
|
COLUMN l-7, today using "dd/mm/yy"
|
|
PRINT COLUMN ((l-45)/2)+1,
|
|
" Produccion Acumulada Del Ano ",ano1," AL ",ano2,
|
|
COLUMN l-5, hora
|
|
SKIP 1 LINE
|
|
PRINT COLUMN 1, "--------------";
|
|
LET l = 15
|
|
FOR a = ano TO ano_f
|
|
PRINT COLUMN l, "------------------------------------";
|
|
LET l = l + 36
|
|
|
|
IF a = ano THEN
|
|
PRINT COLUMN l, "------------------------------------";
|
|
LET l = l + 36
|
|
END IF
|
|
END FOR
|
|
PRINT COLUMN l,"-"
|
|
|
|
LET l = 32
|
|
LET j = ano_f - ano
|
|
FOR a = ano TO ano_f
|
|
LET k = ano + j
|
|
LET j = j - 1
|
|
PRINT COLUMN l, "-- ",k USING "&&&&"," --";
|
|
LET l = l + 36
|
|
|
|
IF a = ano THEN
|
|
PRINT COLUMN l, "PRES. ",k USING "&&&&";
|
|
LET l = l + 36
|
|
END IF
|
|
END FOR
|
|
PRINT COLUMN l, " "
|
|
|
|
PRINT COLUMN 1, "--------------";
|
|
LET l = 15
|
|
FOR a = ano TO ano_f
|
|
PRINT COLUMN l, "------------------------------------";
|
|
LET l = l + 36
|
|
|
|
IF a = ano THEN
|
|
PRINT COLUMN l, "------------------------------------";
|
|
LET l = l + 36
|
|
END IF
|
|
END FOR
|
|
PRINT COLUMN l,"-"
|
|
{ PRINT COLUMN 1,
|
|
"--------------------------------------------------------",
|
|
"--------------------------------------------------------",
|
|
"---------------------------------"
|
|
}
|
|
PRINT COLUMN 1, "Mes ";
|
|
LET l = 15
|
|
FOR a = ano TO ano_f
|
|
PRINT COLUMN l, " D C AA";
|
|
LET l = l + 36
|
|
|
|
IF a = ano THEN
|
|
PRINT COLUMN l, " D C AA";
|
|
LET l = l + 36
|
|
END IF
|
|
END FOR
|
|
PRINT COLUMN l," "
|
|
|
|
PRINT COLUMN 1, "--------------";
|
|
LET l = 15
|
|
FOR a = ano TO ano_f
|
|
PRINT COLUMN l, "------------------------------------";
|
|
LET l = l + 36
|
|
|
|
IF a = ano THEN
|
|
PRINT COLUMN l, "------------------------------------";
|
|
LET l = l + 36
|
|
END IF
|
|
END FOR
|
|
PRINT COLUMN l,"-"
|
|
|
|
|
|
BEFORE GROUP OF x.mes
|
|
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
|
|
|
|
LET l = 15
|
|
PRINT COLUMN 1, mes_d;
|
|
ON EVERY ROW
|
|
PRINT COLUMN l, x.cantidad1 USING "###,###,###",
|
|
COLUMN l+12, x.cantidad2 USING "###,###,###",
|
|
COLUMN l+24, x.cantidad3 USING "###,###,###";
|
|
LET l= l + 36
|
|
|
|
IF x.ano = ano_f THEN
|
|
LET mes_b = ano2[3,4],x.mes USING "&&"
|
|
LET cant_p1 = 0
|
|
LET cant_p2 = 0
|
|
LET cant_p3 = 0
|
|
|
|
SELECT SUM(b.cantidad) INTO cant_p1 FROM vetb00017 b
|
|
WHERE b.ano = ano_f AND b.mes = mes_b AND b.cod_grupo = 1
|
|
|
|
SELECT SUM(b.cantidad) INTO cant_p2 FROM vetb00017 b
|
|
WHERE b.ano = ano_f AND b.mes = mes_b AND b.cod_grupo = 2
|
|
|
|
SELECT SUM(b.cantidad) INTO cant_p3 FROM vetb00017 b
|
|
WHERE b.ano = ano_f AND b.mes = mes_b AND b.cod_grupo = 3
|
|
|
|
IF cant_p1 IS NULL THEN
|
|
LET cant_p1 = 0
|
|
END IF
|
|
|
|
IF cant_p2 IS NULL THEN
|
|
LET cant_p2 = 0
|
|
END IF
|
|
|
|
IF cant_p3 IS NULL THEN
|
|
LET cant_p3 = 0
|
|
END IF
|
|
|
|
IF cant_pres1 IS NULL THEN
|
|
LET cant_pres1 = 0
|
|
END IF
|
|
|
|
IF cant_pres2 IS NULL THEN
|
|
LET cant_pres2 = 0
|
|
END IF
|
|
|
|
IF cant_pres3 IS NULL THEN
|
|
LET cant_pres3 = 0
|
|
END IF
|
|
|
|
LET cant_pres1 = cant_pres1 + cant_p1
|
|
LET cant_pres2 = cant_pres2 + cant_p3
|
|
LET cant_pres3 = cant_pres2 + cant_p3
|
|
|
|
PRINT COLUMN l, cant_p1 USING "###,###,###",
|
|
COLUMN l+12, cant_p2 USING "###,###,###",
|
|
COLUMN l+24, cant_p3 USING "###,###,###";
|
|
LET l = l + 36
|
|
END IF
|
|
|
|
LET a = x.ano
|
|
LET jb[a].cantidad1 = jb[a].cantidad1 + x.cantidad1
|
|
LET jb[a].cantidad2 = jb[a].cantidad2 + x.cantidad2
|
|
LET jb[a].cantidad3 = jb[a].cantidad3 + x.cantidad3
|
|
|
|
AFTER GROUP OF x.mes
|
|
PRINT COLUMN l," "
|
|
|
|
ON LAST ROW
|
|
|
|
PRINT COLUMN 1, "--------------";
|
|
LET l = 15
|
|
FOR a = ano TO ano_f
|
|
PRINT COLUMN l, "------------------------------------";
|
|
LET l = l + 36
|
|
|
|
IF a = ano THEN
|
|
PRINT COLUMN l, "------------------------------------";
|
|
LET l = l + 36
|
|
END IF
|
|
END FOR
|
|
PRINT COLUMN l,"-"
|
|
PRINT COLUMN 1, "TOTALES ---> ";
|
|
LET l = 15
|
|
LET j = 0
|
|
FOR a = ano TO ano_f
|
|
|
|
LET k = ano_f - j
|
|
|
|
PRINT COLUMN l,jb[k].cantidad1 USING "###,###,###",
|
|
COLUMN l+12,jb[k].cantidad2 USING "###,###,###",
|
|
COLUMN l+24,jb[k].cantidad3 USING "###,###,###";
|
|
|
|
LET l = l + 36
|
|
IF ano_f = ano_f-j THEN
|
|
|
|
PRINT COLUMN l, cant_pres1 USING "###,###,###",
|
|
COLUMN l+12, cant_pres2 USING "###,###,###",
|
|
COLUMN l+24, cant_pres3 USING "###,###,###";
|
|
|
|
LET l = l + 36
|
|
END IF
|
|
LET j = j + 1
|
|
|
|
END FOR
|
|
PRINT COLUMN l," "
|
|
|
|
PRINT COLUMN 1, "--------------";
|
|
LET l = 15
|
|
FOR a = ano TO ano_f
|
|
PRINT COLUMN l, "------------------------------------";
|
|
LET l = l + 36
|
|
|
|
IF a = ano THEN
|
|
PRINT COLUMN l, "------------------------------------";
|
|
LET l = l + 36
|
|
END IF
|
|
END FOR
|
|
PRINT COLUMN l,"-"
|
|
|
|
PRINT comp_off
|
|
LET cant_pres1 = 0
|
|
LET cant_pres2 = 0
|
|
LET cant_pres3 = 0
|
|
|
|
END REPORT
|