Files
MBS/PROYECTO/PRDIR/prprrp006.4gl
T

360 lines
13 KiB
Plaintext

{
-------------------------------------------------------------------------------
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