305 lines
9.7 KiB
Plaintext
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
|