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

307 lines
10 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP019
OBJETIVO : Relacion de Ventas en unidades
PROGRAMADOR : Juan Fco. Soto
FECHA REALIZACION : Junio 3, 1993
-------------------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
DEFINE mes SMALLINT
DEFINE cod_cia SMALLINT
DEFINE p_datos RECORD
fecha_in DATE,
fecha_fin DATE
END RECORD
FUNCTION veprrp019()
DEFINE vendedor RECORD
sec_vend SMALLINT,
fecha_factura DATE,
factura INTEGER,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad INTEGER ,
precio DECIMAL(10,2),
porc_venta DECIMAL(10,4),
descrip_esp CHAR(30),
nombre_vend CHAR(30),
apellido_vend CHAR(30) ,
vende CHAR(6),
codigo CHAR(7)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21,
PROMPT LINE 14
OPEN FORM vefmrp019 FROM "vefmrp019"
DISPLAY FORM vefmrp019
CALL pantalla()
DISPLAY "veprrp019" AT 4,3
DISPLAY "Relacion Ventas en Unidades" AT 6,26
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME cod_cia,p_datos.*
CONSTRUCT criterio ON a.sec_vend,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
FROM sec_vend,cod_n,cod_grupo,cod_tipo,cod_sec
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LABEL pide:
PROMPT "1- Unisys 1354 2- IBM PRO"C:\\archivo" " FOR tipo_imp
IF tipo_imp != 1 AND tipo_imp != 2 THEN
LET numero_msg = -1301
CALL msg(numero_msg)
GOTO pide
END IF
IF tipo_imp = 2 THEN
START REPORT vendidas TO "C:\\archivo"
ELSE
START REPORT vendidas TO PIPE "lp -dcentral"
END IF
DISPLAY " " AT 19,14
DISPLAY "<< Buscando Las Informaciones... Espere Por Favor >>" AT 19,14
LET selec =
"SELECT a.sec_vend,a.fecha_factura,a.factura,b.cod_n,b.cod_grupo, ",
" b.cod_tipo,b.cod_sec,b.cantidad,b.cantidad * b.precio ",
"FROM vetb00002 a,vetb00003 b ",
"WHERE a.fecha_factura between ? and ? and a.factura = b.factura and ",
" a.cod_cia = ? and a.status_t is null and ",criterio clipped
PREPARE b_vende FROM selec
DECLARE c_vende CURSOR FOR b_vende
OPEN c_vende USING p_datos.fecha_in,p_datos.fecha_fin,cod_cia
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose... Espere Por Favor >>" AT 19,14
WHILE STATUS != NOTFOUND
FETCH c_vende INTO vendedor.*
IF status = notfound THEN
EXIT WHILE
END IF
SELECT descrip_esp INTO vendedor.descrip_esp FROM iptb00002
WHERE cod_n = vendedor.cod_n and cod_grupo = vendedor.cod_grupo and
cod_tipo = vendedor.cod_tipo and cod_sec = vendedor.cod_sec
SELECT nom1_emp,apell1_emp INTO vendedor.nombre_vend,vendedor.apellido_vend
FROM adtb00003 WHERE num_emp = vendedor.sec_vend
LET vendedor.vende = vendedor.sec_vend using "&&&&"
LET vendedor.codigo = vendedor.cod_n using "&",
vendedor.cod_grupo using "&",
vendedor.cod_tipo using "&&",
vendedor.cod_sec using "&&&"
OUTPUT TO REPORT vendidas (vendedor.*)
END WHILE
FINISH REPORT vendidas
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT vendidas(x)
DEFINE x RECORD
sec_vend SMALLINT,
fecha_factura DATE,
factura INTEGER,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad INTEGER ,
precio DECIMAL(10,2),
porc_venta DECIMAL(10,4),
descrip_esp CHAR(30),
nombre_vend CHAR(30),
apellido_vend CHAR(30) ,
vendedor CHAR(6) ,
codigo CHAR(7)
END RECORD
DEFINE j RECORD
factura INTEGER,
fecha DATE,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
precio DECIMAL(10,2),
cantidad INTEGER
END RECORD
DEFINE nombre_mes CHAR(10)
DEFINE ii,total_clientes INTEGER
DEFINE doble_on CHAR(3)
DEFINE doble_off CHAR(3)
DEFINE negrillas_on CHAR(6)
DEFINE negrillas_off CHAR(6)
DEFINE comp_on CHAR(3)
DEFINE comp_off CHAR(3)
DEFINE doce CHAR(6)
DEFINE normal CHAR(6)
DEFINE hora CHAR(5)
DEFINE i SMALLINT
DEFINE porc DECIMAL(10,4)
DEFINE val_vend,cant_vend,val_dev,cant_dev,total_gen,total_vend,
total_dev,cant_pagar DECIMAL(12,2)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 4
ORDER BY x.vendedor,x.codigo,x.factura
FORMAT
PAGE HEADER
IF tipo_imp = 2 THEN
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
ELSE
LET doble_on = ASCII 001
LET doble_off = ASCII 002
LET negrillas_on = ASCII 027, ASCII 098
LET negrillas_off = ASCII 027, ASCII 099
LET comp_on = ASCII 31
LET comp_off = ASCII 29
LET doce = ASCII 30
LET normal = ASCII 029
END IF
LET hora = time
LET lj = (97 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, doce, negrillas_on
PRINT COLUMN 1, "veprrp019",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 90, "Pag.",
COLUMN 95, pageno using "###"
PRINT COLUMN 41, "Sistema de Ventas ",
COLUMN 88, today using "dd/mm/yyyy"
PRINT COLUMN 34, "Relacion de Ventas por Vendedor",
COLUMN 93, hora, negrillas_off
IF cod_cia = 1 THEN
PRINT COLUMN 1, "Rayovac Dominicana"
ELSE
PRINT COLUMN 1, "Distribuidora Dominicana de Pilas"
END IF
PRINT COLUMN 1, "Del ",p_datos.fecha_in using "dd/mm/yy"," Al ",
p_datos.fecha_fin using "dd/mm/yy"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------"
PRINT COLUMN 1, "PRODUCTO",
COLUMN 45, "FACTURA",
COLUMN 53, "FECHA",
COLUMN 63, "VALOR",
COLUMN 75, "UNIDADES"
PRINT COLUMN 1,
"--------------------------------------------------",
"--------------------------------------------------"
IF total_gen is null THEN
LET total_gen = 0
END IF
SKIP 1 LINE
BEFORE GROUP OF x.vendedor
LET total_vend = 0
LET total_dev = 0
PRINT COLUMN 1,doble_on,"VENDEDOR : ",
x.nombre_vend clipped," ",
x.apellido_vend clipped, doble_off
SKIP 1 LINE
BEFORE GROUP OF x.codigo
PRINT COLUMN 1,x.cod_n using "&","-",x.cod_grupo using "&","-",
x.cod_tipo using "&&","-",x.cod_sec using "&&&",
" ",x.descrip_esp CLIPPED;
LET val_vend = 0
LET cant_vend = 0
ON EVERY ROW
PRINT COLUMN 45, x.factura using "&&&&&&",
COLUMN 53, x.fecha_factura using "dd/mm/yy",
COLUMN 62, x.precio using "###,###",
COLUMN 74, x.cantidad using "###,###"
LET val_vend = val_vend + x.precio
LET cant_vend = cant_vend + x.cantidad
AFTER GROUP OF x.codigo
PRINT COLUMN 60, "----------",
COLUMN 74, "----------"
PRINT COLUMN 30, " V E N T A -->",
COLUMN 58, GROUP SUM(x.precio) using "###,###,###",
COLUMN 72, GROUP SUM(x.cantidad) using "#,###,###"
LET total_vend = total_vend + val_vend
SELECT SUM(c.precio*a.cantidad_2),SUM(a.cantidad_2)
INTO val_dev,cant_dev
FROM iptb00006 a,vetb00003 c,vetb00002 d
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 AND
a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND
a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec AND
a.cod_mov IN (12,13) AND a.fecha BETWEEN p_datos.fecha_in AND
p_datos.fecha_fin AND a.fact_no = c.factura AND a.status_t IS NULL
AND a.fact_no = d.factura AND d.sec_vend = x.vendedor AND
a.status_t IS NULL AND d.cod_cia = cod_cia
IF val_dev IS NULL THEN
LET val_dev = 0
END IF
IF cant_dev IS NULL THEN
LET cant_dev = 0
END IF
LET total_dev = total_dev + val_dev
IF cant_dev > 0 THEN
PRINT COLUMN 30, "D E V O L U C I O N -->",
COLUMN 58, val_dev using "###,###,###",
COLUMN 72, cant_dev using "#,###,###"
PRINT COLUMN 62, "----------",
COLUMN 74, "----------"
PRINT COLUMN 30, " T O T A L -->",
COLUMN 58, val_vend - val_dev using "###,###,###",
COLUMN 72, cant_vend - cant_dev using "#,###,###"
END IF
SKIP 1 LINE
AFTER GROUP OF x.vendedor
PRINT COLUMN 1,negrillas_on
PRINT COLUMN 10, "TOTAL VALOR VENDIDO --> ",
COLUMN 58, total_vend USING "###,###,###"
PRINT COLUMN 10, "TOTAL VALOR DEVUELTO --> ",
COLUMN 58, total_dev USING "###,###,###"
PRINT COLUMN 58, "-----------"
PRINT COLUMN 10, "TOTAL VALOR VENDEDOR --> ",
COLUMN 58, total_vend - total_dev USING "###,###,###"
PRINT COLUMN 1,negrillas_off
END REPORT