355 lines
12 KiB
Plaintext
355 lines
12 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
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
|