Files
MBS/PROYECTOS/irdir/irprrp032.4gl
T

329 lines
11 KiB
Plaintext

{
=============================================================================
PROGRAMA : IRPRRP032
OBJETIVO : IMPRIMIR REPUESTOS, COSTO REAL, ORDEN COMPRA, PRECIO, MONEDA
PROGRAMADOR : ABNER MONTALVO
FECHA : JUNIO 24, 1997
=============================================================================
}
GLOBALS
"irprgb000.4gl"
DEFINE descrip CHAR(30)
DEFINE fecha_inicial,fecha_final DATE
DEFINE opcion1 CHAR(1)
DEFINE ano1 SMALLINT
DEFINE mes1 INTEGER
DEFINE datos_32 RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(3),
existencia DECIMAL(10,2),
num_oc INTEGER,
costo_lq DECIMAL(16,4),
precio DECIMAL(12,2),
fecha_lq DATE,
cod_mon INTEGER,
descrip_mon CHAR(30),
tasa_cambio DECIMAL(12,2),
costo_st DECIMAL(12,2)
END RECORD
FUNCTION irprrp032()
OPTIONS
PROMPT LINE 10,
ERROR LINE 24,
FORM LINE 8
OPEN FORM irfmrp025 FROM "irfmrp001"
DISPLAY FORM irfmrp025
DISPLAY "irprrp032" AT 4,3
DISPLAY "Repuestos con Costos Reales" AT 6,27
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
FROM cod_n,cod_grupo,cod_tipo,cod_sec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET numero_msg = FALSE
RETURN
END IF
LET selec =
"SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,b.descrip_esp, ",
" b.unidad_med, SUM(c.cantidad_2) ",
"FROM irtb00002 a, intb00001 b, irtb00006 c ",
"WHERE a.cod_n = b.cod_n AND ",
" a.cod_grupo = b.cod_grupo AND ",
" a.cod_tipo = b.cod_tipo AND ",
" a.cod_sec = b.cod_sec AND ",
" a.cod_n = c.cod_n AND ",
" a.cod_grupo = c.cod_grupo AND ",
" a.cod_tipo = c.cod_tipo AND ",
" a.cod_sec = c.cod_sec AND ",
" c.fecha < '07/08/97' AND ",
" a.status_t IS NULL AND ",
" b.status_t IS NULL AND ",
" c.status_t IS NULL AND ",
criterio CLIPPED,
" GROUP BY 1,2,3,4,5,6 "
DISPLAY "<< Buscando Informacion ... Espere Por Favor >>" AT 19,14
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
START REPORT reporte_32 TO PIPE "$DBPRINT"
DISPLAY "<< Reporte Generandose ... Espere Por Favor >>" AT 19,14
FOREACH busca INTO datos_32.*
LET datos_32.cod_mon = null
LET datos_32.descrip_mon = null
LET datos_32.fecha_lq = null
LET datos_32.costo_lq = null
LET datos_32.costo_st = null
SELECT MAX(fecha_lq) INTO datos_32.fecha_lq
FROM cttb00013 d
WHERE d.cod_n = datos_32.cod_n AND
d.cod_grupo = datos_32.cod_grupo AND
d.cod_tipo = datos_32.cod_tipo AND
d.cod_sec = datos_32.cod_sec AND
d.fecha_lq < "07/08/97" AND
d.status_t IS NULL
IF status = NOTFOUND THEN
LET datos_32.fecha_lq = null
LET datos_32.costo_lq = null
ELSE
SELECT AVG(costo_lq) INTO datos_32.costo_lq
FROM cttb00013 d
WHERE d.cod_n = datos_32.cod_n AND
d.cod_grupo = datos_32.cod_grupo AND
d.cod_tipo = datos_32.cod_tipo AND
d.cod_sec = datos_32.cod_sec AND
d.fecha_lq = datos_32.fecha_lq AND
d.status_t IS NULL
END IF
LET datos_32.costo_st = null
SELECT MAX(ano) INTO ano1 FROM irtb00013 a
WHERE a.cod_n = datos_32.cod_n AND
a.cod_grupo = datos_32.cod_grupo AND
a.cod_tipo = datos_32.cod_tipo AND
a.cod_sec = datos_32.cod_sec AND
a.status_t IS NULL
IF status = NOTFOUND THEN
LET datos_32.costo_st = null
ELSE
SELECT costo_st INTO datos_32.costo_st
FROM irtb00013 a
WHERE a.cod_n = datos_32.cod_n AND
a.cod_grupo = datos_32.cod_grupo AND
a.cod_tipo = datos_32.cod_tipo AND
a.cod_sec = datos_32.cod_sec AND
a.ano = ano1 AND
a.status_t IS NULL
END IF
IF datos_32.costo_lq IS NULL OR datos_32.costo_lq = 0 THEN
LET datos_32.num_oc = null
LET datos_32.precio = null
SELECT MAX(a.num_oc) INTO datos_32.num_oc
FROM cotb00015 a
WHERE a.cod_n = datos_32.cod_n AND
a.cod_grupo = datos_32.cod_grupo AND
a.cod_tipo = datos_32.cod_tipo AND
a.cod_sec = datos_32.cod_sec AND
a.status_t IS NULL
IF status = NOTFOUND THEN
LET datos_32.num_oc = null
LET datos_32.precio = null
ELSE
SELECT AVG(a.precio) INTO datos_32.precio FROM cotb00015 a
WHERE a.cod_n = datos_32.cod_n AND
a.cod_grupo = datos_32.cod_grupo AND
a.cod_tipo = datos_32.cod_tipo AND
a.cod_sec = datos_32.cod_sec AND
a.num_oc = datos_32.num_oc AND
a.status_t IS NULL
LET datos_32.cod_mon = null
LET datos_32.descrip_mon = null
LET datos_32.tasa_cambio = null
SELECT UNIQUE a.cod_mon, b.descrip_mon, b.tasa_cambio INTO
datos_32.cod_mon, datos_32.descrip_mon,
datos_32.tasa_cambio
FROM cotb00015 a, cotb00031 b
WHERE a.cod_n = datos_32.cod_n AND
a.cod_grupo = datos_32.cod_grupo AND
a.cod_tipo = datos_32.cod_tipo AND
a.cod_sec = datos_32.cod_sec AND
a.num_oc = datos_32.num_oc AND
a.cod_mon = b.cod_mon AND
b.status_t IS NULL AND
a.status_t IS NULL
END IF
END IF
IF datos_32.precio is null OR datos_32.precio = 0 THEN
LET datos_32.num_oc = 0
SELECT MAX(a.num_oc) INTO datos_32.num_oc FROM cotb00034 a
WHERE a.cod_n = datos_32.cod_n AND
a.cod_grupo = datos_32.cod_grupo AND
a.cod_tipo = datos_32.cod_tipo AND
a.cod_sec = datos_32.cod_sec AND
a.status_t IS NULL
IF status = NOTFOUND THEN
LET datos_32.num_oc = null
LET datos_32.precio = null
ELSE
SELECT AVG(a.precio) INTO datos_32.precio FROM cotb00034 a
WHERE a.cod_n = datos_32.cod_n AND
a.cod_grupo = datos_32.cod_grupo AND
a.cod_tipo = datos_32.cod_tipo AND
a.cod_sec = datos_32.cod_sec AND
a.num_oc = datos_32.num_oc AND
a.status_t IS NULL
LET datos_32.cod_mon = null
LET datos_32.descrip_mon = null
LET datos_32.tasa_cambio = null
SELECT UNIQUE a.cod_mon, b.descrip_mon, b.tasa_cambio INTO
datos_32.cod_mon, datos_32.descrip_mon,
datos_32.tasa_cambio
FROM cotb00034 a, cotb00031 b
WHERE a.cod_n = datos_32.cod_n AND
a.cod_grupo = datos_32.cod_grupo AND
a.cod_tipo = datos_32.cod_tipo AND
a.cod_sec = datos_32.cod_sec AND
a.num_oc = datos_32.num_oc AND
a.cod_mon = b.cod_mon AND
b.status_t IS NULL AND
a.status_t IS NULL
END IF
END IF
# IF datos_32.precio is not null THEN
# LET datos_32.precio = datos_32.precio * datos_32.tasa_cambio * 1.08
# END IF
IF datos_32.precio is null THEN
LET datos_32.precio = 0
END IF
IF datos_32.existencia > 0 THEN
OUTPUT TO REPORT reporte_32(datos_32.*)
END IF
END FOREACH
FINISH REPORT reporte_32
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT reporte_32(x)
DEFINE x RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(3),
existencia DECIMAL(10,2),
num_oc INTEGER,
costo_lq DECIMAL(16,4),
precio DECIMAL(12,2),
fecha_lq DATE,
cod_mon INTEGER,
descrip_mon CHAR(30),
tasa_cambio DECIMAL(12,2),
costo_st DECIMAL(12,2)
END RECORD,
doble_off,doble_on,doce CHAR(3),
unidad CHAR(3),
total_p DECIMAL(12,2)
OUTPUT LEFT MARGIN 0
FORMAT
PAGE HEADER
LET doce = ASCII 030
LET doble_on = ASCII 027, ASCII 001
LET doble_off = ASCII 027, ASCII 002
PRINT ASCII 031
PRINT COLUMN 1, "irprrp032",
COLUMN 18, "R A Y .O. V A C D O M I N I C A N A, S. A.",
COLUMN 74, "Pag. ",pageno using "###"
PRINT COLUMN 18, " SISTEMA DE REPUESTOS",
COLUMN 74, today using "dd/mm/yy"
PRINT COLUMN 27, "Repuestos con Costos Reales",
COLUMN 74, time
PRINT COLUMN 1, "FECHA: ",TODAY using "dd/mm/yy"
PRINT
"=============================================================================",
"=============================================================================",
"=============================="
PRINT COLUMN 1, "Codigo",
COLUMN 61, "Costo St.",
COLUMN 75, "Costo Liq.",
COLUMN 87, "O.Compra",
COLUMN 102, "PRECIO",
COLUMN 116, "MONEDA",
COLUMN 153, "Tasa Cambio",
COLUMN 174, "Nuevo Costo"
PRINT
"=============================================================================",
"=============================================================================",
"=============================="
SKIP 1 LINE
ON EVERY ROW
LET total_p = 0
IF x.costo_lq > 0 THEN
LET x.num_oc = null
LET x.precio = null
LET total_p = x.costo_lq
ELSE
LET x.costo_lq = null
END IF
IF x.precio = 0 THEN
LET x.precio = null
END IF
IF x.precio > 0 THEN
LET total_p = x.precio * x.tasa_cambio
END IF
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&"," ",
x.descrip_esp," ",x.unidad_med,
COLUMN 53, x.costo_st USING "###,###,###.####",
COLUMN 70, x.costo_lq USING "###,###,###.####",
COLUMN 87, x.num_oc USING "######",
COLUMN 97, x.precio USING "####,###.##",
COLUMN 115, x.cod_mon USING "##"," ",x.descrip_mon,
COLUMN 150, x.tasa_cambio USING "###,###,###.##",
COLUMN 170, total_p USING "###,###,###.##"
ON LAST ROW
PRINT
"=============================================================================",
"=============================================================================",
"=============================="
PRINT "TOTAL REGISTRO ---> ", COUNT(*) USING "<<<,<<<,<<<"
PRINT ASCII 030
END REPORT