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

303 lines
12 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP316
OBJETIVO : Analisis Beneficios Por Productos Por Vendedor
PROGRAMADOR : Ing. Juan F. Soto
FECHA REALIZACION : OCTUBRE 25, 1997
-------------------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
DEFINE nom_cli CHAR(30)
DEFINE fecha_inicial,fecha_final DATE
FUNCTION veprrp316()
DEFINE p_costo DECIMAL(12,3)
DEFINE ventas RECORD
factura INTEGER,
fecha DATE,
sec_vend SMALLINT,
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
monto_desc DECIMAL(10,2),
cod_n LIKE vetb00003.cod_n,
cod_grupo LIKE vetb00003.cod_n,
cod_tipo LIKE vetb00003.cod_n,
cod_sec LIKE vetb00003.cod_n,
cantidad LIKE vetb00003.cantidad,
precio LIKE vetb00003.precio,
costo DECIMAL(12,3),
neto,bruto,vcosto,descuento DECIMAL(12,2),
codigo1 CHAR(7),codigo CHAR(6)
END RECORD
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM vefmrp316 FROM "vefmrp316"
DISPLAY FORM vefmrp316
CALL pantalla()
DISPLAY "veprrp316" AT 4,3
DISPLAY "Analisis Beneficios Por Cliente y Por Producto" AT 6,21
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME fecha_inicial,fecha_final
BEFORE FIELD fecha_final
LET fecha_final = today
AFTER FIELD fecha_final
IF fecha_final is null THEN
LET numero_msg = 16
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
EXIT INPUT
END INPUT
CONSTRUCT BY NAME criterio ON a.tipo_cliente,a.sec_cliente,a.sec_vend,b.cod_n,b.cod_grupo,b.cod_tipo,
b.cod_sec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
# Busca las ventas locales para el rango de fechas especificado
LET selec =
"SELECT a.factura,a.fecha_factura,a.sec_vend,a.tipo_cliente,a.sec_cliente,a.monto_desc, ",
" b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.cantidad,b.precio ",
" FROM vetb00002 a,vetb00003 b ",
" WHERE a.factura = b.factura AND ",criterio CLIPPED," AND ",
" a.fecha_factura BETWEEN '",fecha_inicial,"' "," AND '",
fecha_final,"' "," AND a.status_t IS NULL ",
" ORDER BY 1,2,3,5,6,7,8 "
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_k TO "C:\\archivo"
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
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.bruto = ventas.cantidad * ventas.precio
LET ventas.descuento = ventas.monto_desc
LET ventas.neto = ventas.bruto - ventas.descuento
LET ventas.codigo = ventas.tipo_cliente USING "&&",
ventas.sec_cliente USING "&&&&"
LET ventas.codigo1= ventas.cod_n USING "&",
ventas.cod_grupo USING "&",
ventas.cod_tipo USING "&&",
ventas.cod_sec USING "&&&"
LET p_costo = 0
SELECT a.precio INTO p_costo FROM vetb00025 a
WHERE a.cod_n=ventas.cod_n AND a.cod_grupo = ventas.cod_grupo AND
a.cod_tipo = ventas.cod_tipo AND a.cod_sec=ventas.cod_sec AND
a.ventas = 1 AND a.sec_cliente IS NULL AND
a.tipo_cliente IS NULL AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET STATUS = 0
END IF
LET ventas.costo = p_costo
LET ventas.vcosto = ventas.costo * ventas.cantidad
OUTPUT TO REPORT ventas_k(ventas.*)
END FOREACH
FINISH REPORT ventas_k
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT ventas_k(x)
DEFINE x RECORD
factura INTEGER,
fecha DATE,
sec_vend SMALLINT,
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
monto_desc DECIMAL(10,2),
cod_n LIKE vetb00003.cod_n,
cod_grupo LIKE vetb00003.cod_n,
cod_tipo LIKE vetb00003.cod_n,
cod_sec LIKE vetb00003.cod_n,
cantidad LIKE vetb00003.cantidad,
precio LIKE vetb00003.precio,
costo DECIMAL(12,3),
neto,bruto,vcosto,descuento DECIMAL(12,2),
codigo1 CHAR(7),codigo CHAR(6)
END RECORD,
nombre,apellido CHAR(20)
DEFINE doble_on CHAR(2)
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)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY x.sec_vend,x.codigo,x.codigo1
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 = (155 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, doce,comp_on
PRINT COLUMN 1, "veprrp316",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 148, "Pag. ",pageno using "###"
PRINT COLUMN 69, "Sistema de Ventas",
COLUMN 146, today using "dd/mm/yyyy"
PRINT COLUMN 57, "Analisis Margenes Beneficios Por Vendedor",
COLUMN 151, hora
PRINT COLUMN 1, "Del ", fecha_inicial USING "dd/mm/yy"," Al ",
fecha_final using "dd/mm/yy"
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------",
"--------------------------------------------------------"
PRINT COLUMN 108, "STD Mas",
COLUMN 126, "STD Mas",
COLUMN 151, "Margen "
PRINT COLUMN 1, "Producto",
COLUMN 45, "Cantidad",
COLUMN 58, "Precio",
COLUMN 68, "Monto RD$",
COLUMN 81, "Descuento",
COLUMN 97, "Neto RD$",
COLUMN 108, "Itbi",
COLUMN 126, "Itbi ",
COLUMN 151, "Benef."
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------" ,
"--------------------------------------------------------"
# , negrillas_off
BEFORE GROUP OF x.sec_vend
SKIP 1 LINE
SELECT a.nom1_emp,a.apell1_emp INTO nombre,apellido
FROM adtb00003 a WHERE a.num_emp = x.sec_vend
PRINT COLUMN 1,doble_on,negrillas_on,"(",x.sec_vend USING "&&&",")",
nombre CLIPPED," ",apellido,negrillas_off
SKIP 1 LINE
BEFORE GROUP OF x.codigo
SELECT a.nombre INTO nom_cli FROM vetb00004 a
WHERE a.tipo_cliente=x.tipo_cliente and
a.sec_cliente=x.sec_cliente and a.status_t is null
IF STATUS = NOTFOUND THEN
LET STATUS = 0
END IF
IF nom_cli IS NULL THEN
LET nom_cli = "Cliente no existe. Verifique"
END IF
PRINT COLUMN 1, negrillas_on,"Cliente: ","(",x.tipo_cliente
USING "&&","-",
x.sec_cliente USING "&&&&",")",nom_cli,negrillas_off
SKIP 1 LINE
ON EVERY ROW
SELECT a.descrip_esp INTO descripcion 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
PRINT COLUMN 1, x.factura USING "<<<<<<"," ",x.fecha USING "dd/mm/yyyy"," ",
x.cod_n USING "&","-",x.cod_grupo USING "&","-",
x.cod_tipo USING "&&","-",x.cod_sec USING "&&&",
" ",descripcion[1,30],
COLUMN 45, x.cantidad USING "##,###.###",
COLUMN 55, x.precio using "##,###.##",
COLUMN 65, x.bruto using "##,###,###.##",
COLUMN 80, x.descuento using "###,###.##",
COLUMN 92, x.neto using "##,###,###.##",
COLUMN 106, x.costo using "##,###.##",
COLUMN 122, x.vcosto using "###,###.##",
COLUMN 143, x.neto - x.vcosto using "###,###,###.##"
AFTER GROUP OF x.sec_vend
SKIP 1 LINE
PRINT COLUMN 1, negrillas_on,
COLUMN 33, "Total Vendedor ---> ",
COLUMN 65, GROUP SUM(x.bruto) using "##,###,###.##",
COLUMN 79, GROUP SUM(x.descuento) using "#,###,###.##",
COLUMN 92, GROUP SUM(x.neto) using "##,###,###.##",
COLUMN 106, GROUP SUM(x.costo) using "###,###.##",
COLUMN 120, GROUP SUM(x.vcosto) using "#,###,###.##",
COLUMN 143, GROUP SUM(x.neto-x.vcosto) using "###,###,###.##"
PRINT negrillas_off
ON LAST ROW
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------" ,
"--------------------------------------------------------"
PRINT
COLUMN 33, "Total General Ventas ---> ",
COLUMN 65, SUM(x.bruto) using "##,###,###.##",
COLUMN 79, SUM(x.descuento) using "#,###,###.##",
COLUMN 92, SUM(x.neto) using "##,###,###.##",
COLUMN 106, SUM(x.costo) using "###,###.##",
COLUMN 120, SUM(x.vcosto) using "#,###,###.##",
COLUMN 143, SUM(x.neto - x.vcosto) using "###,###,###.##"
PRINT normall
END REPORT