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

311 lines
10 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP040
OBJETIVO : VENTAS VS PRESUPUESTO POR PRODUCTO Y VENDEDOR
PROGRAMADOR : ING. JUAN F. SOTO
FECHA REALIZACION : OCTUBRE 2, 1997
-------------------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
DEFINE nom_cli CHAR(30)
DEFINE fecha1,fecha2,fecha_inicial,fecha_final DATE ,
k,p_ano,p_mes SMALLINT
FUNCTION veprrp040()
DEFINE ventas RECORD
sec_vend SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
presupuesto DECIMAL(12,3),
ventas DECIMAL(12,3),
codigo CHAR(8)
END RECORD
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM vefmrp040 FROM "vefmrp040"
DISPLAY FORM vefmrp040
CALL pantalla()
DISPLAY "veprrp040" AT 4,3
DISPLAY "Ventas VS Presupuesto Por Producto Y Vendedor" AT 6,21
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME fecha_inicial,fecha_final
AFTER FIELD fecha_inicial
IF fecha_inicial IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_inicial
END IF
AFTER FIELD fecha_final
IF fecha_final IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
LET p_ano = YEAR(fecha_final)
LET p_mes = MONTH(fecha_final)
SELECT a.fecha_inicio,a.fecha_corte INTO fecha1,fecha2
FROM prdtable a WHERE a.ano = p_ano AND a.mes = p_mes
IF STATUS = NOTFOUND THEN
LET numero_msg = 51
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
IF fecha_final < fecha_inicial THEN
LET numero_msg = 86
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF fecha_inicial < fecha1 OR
fecha_final > fecha2 THEN
LET numero_msg = 57
CALL msg(numero_msg)
NEXT FIELD fecha_final
END IF
EXIT INPUT
END INPUT
CONSTRUCT BY NAME criterio ON b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
# Busca las ventas locales para el rango de fechas especificado
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET selec =
"SELECT a.sec_vend,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,",
" a.cantidad,' ' ",
"FROM vetb00045 a,iptb00002 b ",
"WHERE ",criterio CLIPPED," AND a.mes = ",p_mes," AND ",
" a.ano = ",p_ano," AND 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.status_t IS NULL ORDER BY 1,2,3,4,5 "
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
PREPARE comando FROM selec
DECLARE facturas CURSOR FOR comando
DISPLAY " " AT 20,14
START REPORT ventas_p TO "C:\\archivo"
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
LET k = 1
FOREACH facturas INTO ventas.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET ventas.codigo = ventas.cod_n USING "&",
ventas.cod_grupo USING "&",
ventas.cod_tipo USING "&&",
ventas.cod_sec USING "&&&"
LET ventas.ventas = 0
SELECT SUM(b.cantidad) INTO ventas.ventas
FROM vetb00002 a,vetb00003 b
WHERE a.factura = b.factura AND
a.fecha_factura BETWEEN fecha_inicial AND
fecha_final AND
a.sec_vend = ventas.sec_vend AND
b.cod_n = ventas.cod_n AND
b.cod_grupo = ventas.cod_grupo AND
b.cod_tipo = ventas.cod_tipo AND
b.cod_sec = ventas.cod_sec AND
a.status_t IS NULL
IF ventas.ventas IS NULL THEN
LET ventas.ventas = 0
END IF
OUTPUT TO REPORT ventas_p(ventas.*)
END FOREACH
FINISH REPORT ventas_p
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT ventas_p(x)
DEFINE x RECORD
sec_vend SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
presupuesto DECIMAL(12,3),
ventas DECIMAL(12,3),
codigo CHAR(8)
END RECORD,
l1,pmarca,i,l SMALLINT
DEFINE doble_on CHAR(2),
nombre_mes CHAR(20)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE normall CHAR(3)
DEFINE comprimido CHAR(3)
DEFINE hora CHAR(5),
tt_p,tt_m,tt_ventas,tt_presup,t_presup,t_ventas,total_ventas,
total_presup DECIMAL(12,3)
DEFINE total_m ARRAY[20] OF DECIMAL(12,3)
DEFINE total_p ARRAY[20] OF DECIMAL(12,3)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY x.codigo,x.sec_vend
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET normall = ASCII 030
LET hora = time
LET lj = (153 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, doce,comp_on
PRINT COLUMN 1, "veprrp040",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 141, "Pag.",
COLUMN 147, pageno using "###"
PRINT COLUMN 53, " Sistema de Ventas ",
COLUMN 140, today using "dd/mm/yyyy"
PRINT COLUMN 53, "Ventas VS Presupuesto Por Producto Y Vendedor",
COLUMN 145, hora
SELECT a.descrip INTO nombre_mes
FROM mestable a
WHERE a.mes = p_mes
PRINT COLUMN 1, " Mes Presupuesto:", nombre_mes CLIPPED," ",
"Rango Fecha De Venta: ",
fecha_inicial USING "dd/mm/yy"," Al ",
fecha_final USING "dd/mm/yy"
PRINT COLUMN 1,negrillas_on,
"--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------------" ,
"--------------------------------------------------"
DECLARE busca CURSOR FOR
SELECT UNIQUE a.nom1_emp,a.apell1_emp ,a.num_emp
INTO descrip1,descrip2
FROM adtb00003 a,vetb00045 b
WHERE a.status_t IS NULL AND a.num_emp = b.sec_vend AND
b.ano = p_ano AND b.mes = p_mes ORDER BY 3
LET l = 60
LET idx = 0
FOREACH busca
PRINT COLUMN l,descrip1 CLIPPED," ",descrip2 CLIPPED,"|";
LET l = l +25
LET idx = idx + 1
END FOREACH
PRINT COLUMN l,"TOTAL",
COLUMN l+10,"TOTAL"
PRINT COLUMN 1, "Producto";
LET l = 60
FOR i = 1 TO idx
PRINT COLUMN l, "VENTAS",
COLUMN l+9, "PRESUPUESTO";
LET l = l + 25
END FOR
PRINT COLUMN l, "VENTAS",
COLUMN l+10, "PRESUPUESTO"
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------" ,
"--------------------------------------------------------",
"--------------------------------------------------",
negrillas_off
BEFORE GROUP OF x.codigo
LET i = 0
LET total_ventas = 0
LET total_presup = 0
SELECT a.descrip_esp INTO descrip2 FROM iptb00002 a
WHERE a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND
a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec
LET descripcion = descrip2 CLIPPED
PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&",
" ",descripcion[1,50];
LET l = 60
AFTER GROUP OF x.sec_vend
PRINT COLUMN l, x.ventas USING "##,###.##",
COLUMN l+10, x.presupuesto using "##,###.##";
LET total_presup = total_presup + x.presupuesto
LET total_ventas = total_ventas + x.ventas
LET l = l + 25
LET i = i + 1
#LET total_m[k] = total_m[k] + x.ventas
#LET total_p[k] = total_p[k] + x.presupuesto
LET k = k + 1
AFTER GROUP OF x.codigo
IF i != idx THEN
LET i = idx - i
FOR idx = 1 TO i
PRINT COLUMN l, total_m[idx] USING "##,###.##",
COLUMN l+10, total_p[idx] USING "##,###.##"
LET l = l + 25
END FOR
END IF
PRINT COLUMN l, total_ventas USING "###,###.##",
COLUMN l+13, total_presup USING "###,###.##"
END REPORT