Files
MBS/PROYECTO/vedir/veprrp038.4gl
T

148 lines
4.8 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP038
OBJETIVO : ESTRATIFICACION DE VENTAS POR TIPO DE DESCUENTOS
(MENSUAL)
PROGRAMADOR : Juan F. Soto
FECHA REALIZACION : Junio 5, 1997.
-------------------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
DEFINE fecha1,fecha2 DATE
DEFINE salir CHAR(1),
mes3,mes2 SMALLINT,
anon,tipo_pila SMALLINT,
fecha DATE,
sneto,spierde ARRAY[12] OF DECIMAL(12,2)
FUNCTION veprrp038()
DEFINE codigo CHAR(7),
c_desc DECIMAL(8,2),
bruto,valor,monto_desc,neto,gana_pierde DECIMAL(12,2),
costo DECIMAL(8,4)
DEFINE prt_datos RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad INTEGER,
precio DECIMAL(8,2),
porc_desc DECIMAL(8,2),
nomen CHAR(1),
pmes SMALLINT
END RECORD
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM vefmrp038 FROM "vefmrp038"
DISPLAY FORM vefmrp038
CALL pantalla()
DISPLAY "veprrp038" AT 4,3
DISPLAY "Estratificaion De Ventas Por Tipo De Descuentos" AT 6,17
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME tipo_pila,anon,mes3,mes2
AFTER FIELD mes2
SELECT fecha_corte INTO fecha1
FROM prdtable
WHERE mes = mes2 AND ano = anon
AFTER INPUT
EXIT INPUT
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET numero_msg = FALSE
RETURN
END IF
DISPLAY "Buscando Informacion... Espere Por Favor " AT 19,14
DECLARE busca CURSOR FOR
SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,SUM(b.cantidad),
AVG(b.precio),c.porc_desc ," ",a.mes
FROM prdtable a,vetb00003 b,vetb00002 c
WHERE a.mes between mes3 AND mes2 AND a.ano = anon AND
(c.cod_cia = tipo_pila) AND (c.ventas = "1")
AND (b.factura = c.factura )
AND (c.fecha_factura BETWEEN a.fecha_inicio AND a.fecha_corte)
AND c.status_t IS NULL GROUP BY 1,2,3,4,7,8,9
START REPORT reporte_38 TO "C:\\archivo"
START REPORT reporte_a38 TO "C:\\archivo"
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
FOREACH BUSCA INTO prt_datos.*
LET bruto = 0
LET monto_desc = 0
LET neto = 0
LET valor = 0
LET gana_pierde = 0
LET costo = 0
LET codigo = prt_datos.nomen CLIPPED
IF tipo_pila = 1 THEN
SELECT MAX(a.fecha_lq) INTO fecha
FROM cttb00036 a
WHERE a.fecha_lq <= fecha1 AND
a.ventas = 1 AND
a.cod_n = prt_datos.cod_n AND
a.cod_grupo = prt_datos.cod_grupo AND
a.cod_tipo = prt_datos.cod_tipo AND
a.cod_sec = prt_datos.cod_sec
SELECT UNIQUE a.costo_lq INTO costo
FROM cttb00036 a
WHERE a.ventas = 1 AND
a.cod_n = prt_datos.cod_n AND
a.cod_grupo = prt_datos.cod_grupo AND
a.cod_tipo = prt_datos.cod_tipo AND
a.cod_sec = prt_datos.cod_sec AND
a.fecha_lq = fecha
ELSE
SELECT MAX(a.fecha_lq) INTO fecha
FROM cttb00013 a
WHERE a.fecha_lq <= fecha1 AND
a.cod_n = prt_datos.cod_n AND
a.cod_grupo = prt_datos.cod_grupo AND
a.cod_tipo = prt_datos.cod_tipo AND
a.cod_sec = prt_datos.cod_sec
SELECT AVG(a.costo_lq) INTO costo
FROM cttb00013 a
WHERE a.cod_n = prt_datos.cod_n AND
a.cod_grupo = prt_datos.cod_grupo AND
a.cod_tipo = prt_datos.cod_tipo AND
a.cod_sec = prt_datos.cod_sec AND
a.fecha_lq = fecha
END IF
LET c_desc = prt_datos.porc_desc
LET bruto = prt_Datos.cantidad * prt_Datos.precio
LET monto_desc = bruto * (prt_datos.porc_desc/100)
LET neto = bruto - monto_desc
LET valor = prt_datos.cantidad * costo
LET gana_pierde = neto - valor
OUTPUT TO REPORT reporte_38(prt_datos.*,codigo,c_desc,bruto,
monto_desc,neto,valor,costo,gana_pierde)
OUTPUT TO REPORT reporte_a38(prt_datos.*,codigo,c_desc,bruto,
monto_desc,neto,valor,costo,gana_pierde)
END FOREACH
FINISH REPORT reporte_38
FINISH REPORT reporte_a38
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION