Files
MBS/PROYECTO/codir/coprrp032.4gl
T

305 lines
9.7 KiB
Plaintext

{
=======================================================================
Programa : COPRRP032
Sistema : Sistema de Compras
Proceso : RESUMEN COMPRAS CATEGORIZADAS POR NATURALEZA DEL PRODUCTO
Autor : Juan F. Soto
Fecha : Febrero 4, 1997
=======================================================================
}
GLOBALS
"coprgb000.4gl"
DEFINE fecha_in,fecha_fi DATE,
cod_sup SMALLINT,
total2,cantidad1 DECIMAL(12,2)
FUNCTION coprrp032()
DEFINE c_datos RECORD
cod_sp SMALLINT,
cod_sp_Sec SMALLINT,
categoria CHAR(1),
moneda LIKE cotb00015.cod_mon,
cantidad LIKE cotb00015.cantidad,
precio LIKE cotb00015.precio,
cod_n LIKE cotb00015.cod_n,
cod_grupo LIKE cotb00015.cod_n,
cod_tipo LIKE cotb00015.cod_n,
cod_sec LIKE cotb00015.cod_n,
base LIKE intb00002.base,
bruto DECIMAL(14,2),
gastos DECIMAL(14,2),
porc DECIMAL(10,4),
codigo CHAR(8),
cod_cat CHAR(3),
gasto1 DECIMAL(12,2)
END RECORD
LET int_flag = FALSE
OPTIONS
FORM LINE 8
CALL pantalla()
OPEN FORM cofmrp032 FROM "cofmrp032"
DISPLAY FORM cofmrp032
DISPLAY "coprrp032" AT 4,3 ATTRIBUTE(YELLOW)
DISPLAY "Resumen Compras Categorizadas Por Naturaleza Del Producto"
AT 6,10
ATTRIBUTE(YELLOW)
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME fecha_in,fecha_fi
AFTER FIELD fecha_in
IF fecha_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_in
END IF
BEFORE FIELD fecha_fi
LET fecha_fi = today
AFTER FIELD fecha_fi
IF fecha_fi IS NULL THEN
LET fecha_fi = today
END IF
IF fecha_fi < fecha_in THEN
LET numero_msg = 51
CALL msg(numero_msg)
NEXT FIELD fecha_fi
END IF
DISPLAY BY NAME fecha_fi
END INPUT
IF int_flag tHEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
CONSTRUCT BY NAME criterio ON a.cod_sp,a.cod_sp_sec
IF int_flag tHEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
LET selec =
"SELECT a.cod_sp,a.cod_sp_sec,c.categoria,b.cod_mon,",
"b.cantidad,b.precio,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_Sec ",
" FROM cotb00014 a,cotb00015 b,cotb00021 c ",
" WHERE a.num_oc = b.num_oc AND ",
"a.tipo = b.tipo AND ",
"a.fech_oc BETWEEN ? AND ? AND ",
"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 ",
"a.status_t IS NULL AND ",criterio CLIPPED,
#" GROUP BY 1,2,3,4",
" ORDER BY 1,2,3,4"
DISPLAY "Buscando Informacion..... Espere por Favor" AT 17,14
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
OPEN busca USING fecha_in,fecha_fi
#CREACION DE VIEW PARA CLASIFICAR LAS ORDENES PERTENECIENTES A UNA MONEDA
#ESPECIFICA.
CREATE VIEW ordenes (num_oc,tipo,cod_mon) AS
SELECT UNIQUE a.num_oc,a.tipo,b.cod_mon
FROM cotb00014 a,cotb00015 b
WHERE a.num_oc = b.num_oc AND
a.tipo = b.tipo AND
#a.fecha_oc BETWEEN fecha_in AND fecha_fi AND
a.status_t IS NULL
START REPORT corp032 TO "jh"
DISPLAY "Impresion en Proceso..... Espere por Favor" AT 17,14
LET idx = 1
WHILE STATUS != NOTFOUND
FETCH busca INTO c_datos.*
IF STATUS = NOTFOUND THEN
EXIT WHILE
END IF
LET c_datos.codigo = c_datos.cod_sp USING "##",
c_datos.cod_sp_sec USING "####",
c_datos.moneda USING "##"
LET c_datos.cod_cat = c_datos.categoria CLIPPED,
c_datos.moneda USING "##"
LET c_datos.base = 1
IF c_Datos.cod_n = 1 THEN
SELECT a.base INTO c_Datos.base
FROM intb00002 a
WHERE a.cod_n = c_Datos.cod_n AND
a.cod_grupo = c_datos.cod_grupo AND
a.cod_tipo = c_datos.cod_tipo AND
a.cod_sec = c_datos.cod_sec
END IF
LET c_datos.bruto = c_datos.cantidad * c_datos.precio
LET c_datos.bruto = c_datos.bruto / c_datos.base
IF c_datos.codigo[1,2] != "**" THEN
OUTPUT TO REPORT corp032(c_datos.*,fecha_in,fecha_fi)
END IF
LET idx = idx + 1
END WHILE
FINISH REPORT corp032
DROP VIEW ordenes
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT corp032(x,fecha1,fecha2)
DEFINE x RECORD
cod_sp SMALLINT,
cod_sp_Sec SMALLINT,
categoria CHAR(1),
moneda LIKE cotb00015.cod_mon,
cantidad LIKE cotb00015.cantidad,
precio LIKE cotb00015.precio,
cod_n LIKE cotb00015.cod_n,
cod_grupo LIKE cotb00015.cod_n,
cod_tipo LIKE cotb00015.cod_n,
cod_sec LIKE cotb00015.cod_n,
base LIKE intb00002.base,
bruto DECIMAL(14,2),
gastos DECIMAL(14,2),
porc DECIMAL(10,4),
codigo CHAR(8),
cod_cat CHAR(3),
gasto1 DECIMAL(12,2)
END RECORD,
d_moneda LIKE cotb00031.descrip_mon,
t_sup SMALLINT
DEFINE p_descrip,nom_sup CHAR(30)
DEFINE fecha1,fecha2 DATE
DEFINE descrip,descrip1 CHAR(30)
DEFINE hora CHAR(5),
negrillas_on,negrillas_off CHAR(2),
tt_valor,gasto_tot,t_bruto,t_bruto1 DECIMAL(12,2)
OUTPUT
LEFT MARGIN 2
TOP MARGIN 1
ORDER BY x.codigo,x.moneda,x.cod_cat
FORMAT
PAGE HEADER
LET hora = time
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET l = (80 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1,negrillas_on
PRINT COLUMN 1, "coprrp032",
COLUMN l, p_companias.nombre CLIPPED,
COLUMN 73, "Pag. ", pageno using "###"
PRINT COLUMN 31, "Sistema de Compras",
COLUMN 73, today using "dd/mm/yy"
PRINT COLUMN 11,"RESUMEN COMPRAS CATEGORIZADAS POR NATURALEZA DE PRODUCTO"
PRINT negrillas_off
PRINT COLUMN 1, "FECHA: DEL ", fecha1 USING "dd/mm/yy",
" AL ", fecha2 USING "dd/mm/yy"
PRINT negrillas_on
PRINT COLUMN 1, "----------------------------------------",
"----------------------------------------"
PRINT COLUMN 1, "Secuencia",
COLUMN 15, "Suplidor",
COLUMN 62, "Valor Compras"
PRINT COLUMN 1, "----------------------------------------",
"----------------------------------------"
PRINT negrillas_off
BEFORE GROUP OF x.codigo
LET gasto_tot = 0
LET t_bruto = 0
LET tt_valor = 0
SELECT SUM(a.c_flete+a.otros_g) INTO gasto_tot
FROM cotb00014 a,ordenes b
WHERE a.cod_sp = x.cod_sp AND
a.cod_sp_Sec = x.cod_sp_sec AND
a.fech_oc BETWEEN fecha_in AND fecha_fi AND
a.num_oc = b.num_oc AND
a.tipo = b.tipo AND
b.cod_mon = x.moneda AND
a.status_t IS NULL
SELECT a.nom_sp INTO nom_sup
FROM cotb00001 a
WHERE a.cod_sp = x.cod_sp AND
a.cod_sp_sec = x.cod_sp_Sec
PRINT COLUMN 1,negrillas_on,x.cod_sp USING "##","-",
x.cod_sp_sec USING "####"," ",
nom_sup,negrillas_off
BEFORE GROUP OF x.moneda
LET d_moneda = "MONEDA NO EXISTE"
SELECT a.descrip_mon INTO d_moneda
FROM cotb00031 a
WHERE a.cod_mon = x.moneda
PRINT COLUMN 3, negrillas_on,"MONEDA: ",
d_moneda CLIPPED, negrillas_off
BEFORE GROUP OF x.cod_cat
LET t_bruto1 = 0
ON EVERY ROW
LET t_bruto = t_bruto + x.bruto
LET t_bruto1 = t_bruto1 + x.bruto
AFTER GROUP OF x.cod_cat
LET p_descrip = "CATEGORIA SIN DESCRIPCION"
SELECT a.descripcion INTO p_descrip
FROM cotb00023 a
WHERE a.categoria = x.categoria
LET x.porc = 1
IF t_bruto != 0 THEN
LET x.porc = GROUP SUM(x.bruto) / t_bruto
END IF
LET x.gasto1 = x.porc * gasto_tot
LET tt_valor = t_bruto1 + x.gasto1 + tt_valor
PRINT COLUMN 10, x.categoria," ",p_descrip,
#COLUMN 57, x.base ," ",t_bruto," ",x.gasto1
COLUMN 57, t_bruto1+x.gasto1 USING "###,###,###.##"
AFTER GROUP OF x.codigo
IF t_sup IS NULL THEN
LET t_sup = 0
END IF
LET t_sup = t_sup + 1
PRINT COLUMN 57, "--------------"
PRINT COLUMN 10, "Total Suplidor---> ",
COLUMN 57, tt_valor USING "##,###,###.##"
SKIP 1 LINE
ON LAST ROW
PRINT COLUMN 1, "Total Registros==> ", t_sup USING "###"
END REPORT