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

272 lines
8.2 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP047
OBJETIVO : VENTAS MENSUALES EN RD$ Y MTS
PROGRAMADOR : JUAN F. SOTO
FECHA REALIZACION : Febrero 28,2005
-------------------------------------------------------------------------------
}
DATABASE marmotech
GLOBALS
DEFINE pano,l SMALLINT
DEFINE fecha_2 CHAR(8),
etiqueta1,cels CHAR(40),
archivo,filename,sysos CHAR(120),
cnt,numero_msg SMALLINT ,
decide CHAR(1)
DEFINE ventas_e RECORD
mes SMALLINT,
posicion LIKE posiciones_e.posicion,
cod_n LIKE iptb00020.cod_n,
producto LIKE iptb00020.producto,
sec_vend LIKE vetb00002.sec_vend,
ventas LIKE vetb00002.ventas,
cod_cia SMALLINT,
valor DEC(12,2),
unidades DEC(12,3)
END RECORD,
p_compania RECORD LIKE companias.*
END GLOBALS
MAIN
DEFER INTERRUPT
SELECT * INTO p_compania.* FROM companias
CALL veprrp047()
END MAIN
FUNCTION veprrp047()
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
##### Abriendo y desplegando el formulario de captura de datos
OPEN FORM vefmrp047 FROM "vefmrp047"
DISPLAY FORM vefmrp047
CALL pantalla()
DISPLAY "veprrp047" AT 4,3
DISPLAY "VENTAS POR PRODUCTO EN RD$ Y MTS" AT 6,20
###### Aceptando los valores para el rango de fecha
INPUT BY NAME pano,decide
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = false
RETURN
END IF
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
DECLARE busca CURSOR FOR
SELECT d.mes,e.posicion,a.cod_n,a.producto,b.sec_vend,b.ventas,k.cod_cia,SUM(c.cantidad*precio),SUM(c.cantidad)
FROM iptb00020 a,vetb00002 b,vetb00003 c,prdtable d,posiciones_e e,iptb00002 k
WHERE a.cod_n = c.cod_n AND
b.factura = c.factura AND d.mes = e.mes AND
b.fecha_factura between d.fecha_inicio AND d.fecha_corte AND
c.cod_n = k.cod_n AND
c.cod_grupo = k.cod_grupo AND
c.cod_tipo = k.cod_tipo AND
c.cod_sec = k.cod_sec AND
a.cod_n = k.cod_n AND
d.ano = pano and b.status_t is null
GROUP BY 1,2,3,4,5,6,7
ORDER BY 7,6,5,3,1
START REPORT reporte4 TO "C:\\archivo"
--# CALL fgl_init4js()
--# LET archivo = NULL
--# LET filename = NULL
--# LET filename = FGL_GETENV("USPROGRAM")
#LET filename = "C:\\\\PROGRAM FILES\\\\MICROSOFT OFFICE\\\\OFFICE11\\\\EXCEL.EXE"
--# LET archivo = "u:\\\\veprrp047.XLS"
--# LET filename = filename CLIPPED," ",archivo CLIPPED
--# IF winexec(filename) THEN
--# IF DDEconnect("EXCEL",archivo) THEN
LET etiqueta1 = "AÑO ",pano USING "<<<<"
IF decide = "V" THEN
LET etiqueta1 = etiqueta1 CLIPPED," EN VALORES"
ELSE
LET etiqueta1 = etiqueta1 CLIPPED," EN VOLUMENES"
END IF
LET cels = "R4C1"
--# IF DDEpoke("EXCEL",archivo,cels,etiqueta1) THEN
--# ELSE
--# LET numero_msg =391
--# CALL msg(numero_msg)
--# END IF
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
LET cnt = 6
FOREACH busca INTO ventas_e.*
IF int_flag THEN
ERROR "(2) OPERACION CANCELADA"
LET int_flag = false
RETURN
END IF
OUTPUT TO REPORT reporte4(ventas_e.*)
END FOREACH
--# ELSE
--# CALL fgl_winmessage ("No Pude Conectarme",filename,"stop")
--# END IF
--# ELSE
--# CALL fgl_winmessage ("No Pude Encontrar El Programa",filename,"stop")
--# END IF
FINISH REPORT reporte4
END FUNCTION
REPORT reporte4(x)
DEFINE x RECORD
mes SMALLINT,
posicion LIKE posiciones_e.posicion,
cod_n LIKE iptb00020.cod_n,
producto LIKE iptb00020.producto,
sec_vend LIKE vetb00002.sec_vend,
ventas LIKE vetb00002.ventas,
cod_cia SMALLINT,
valor DEC(12,2),
unidades DEC(12,3)
END RECORD,
nombre,apellido CHAR(30),
pnombre CHAR(64)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
FORMAT
BEFORE GROUP OF x.cod_cia
LET cnt = cnt +1
IF x.cod_cia = 1 THEN
LET cels = "R",cnt USING "<<<","C1"
--# IF DDEpoke("EXCEL",archivo,cels,"PRODUCTOS LOCALES") THEN
--# ELSE
--# LET numero_msg =391
--# CALL msg(numero_msg)
--# END IF
ELSE
LET cels = "R",cnt USING "<<<","C1"
--# IF DDEpoke("EXCEL",archivo,cels,"PRODUCTOS IMPORTADOS") THEN
--# ELSE
--# LET numero_msg =391
--# CALL msg(numero_msg)
--# END IF
END IF
BEFORE GROUP OF x.ventas
LET cnt = cnt +1
CASE
WHEN x.ventas = 1
LET cels = "R",cnt USING "<<<","C1"
--# IF DDEpoke("EXCEL",archivo,cels,"VENTAS LOCALES") THEN
--# ELSE
--# LET numero_msg =391
--# CALL msg(numero_msg)
--# END IF
EXIT CASE
WHEN x.ventas = 2
LET cels = "R",cnt USING "<<<","C1"
--# IF DDEpoke("EXCEL",archivo,cels,"VENTAS IMPORTACION") THEN
--# ELSE
--# LET numero_msg =391
--# CALL msg(numero_msg)
--# END IF
EXIT CASE
WHEN x.ventas = 3
LET cels = "R",cnt USING "<<<","C1"
--# IF DDEpoke("EXCEL",archivo,cels,"VENTAS LOCALES EN USD$") THEN
--# ELSE
--# LET numero_msg =391
--# CALL msg(numero_msg)
--# END IF
EXIT CASE
END CASE
LET cnt = cnt + 1
BEFORE GROUP OF x.sec_vend
SELECT a.nom1_emp,a.apell1_emp INTO nombre,apellido
FROM adtb00003 a
WHERE a.num_emp = x.sec_vend
LET cnt = cnt + 1
LET pnombre = "(",x.sec_vend USING "<<<",")",nombre CLIPPED,",",apellido
LET cels = "R",cnt USING "<<<","C1"
--# IF DDEpoke("EXCEL",archivo,cels,pnombre) THEN
--# ELSE
--# LET numero_msg =391
--# CALL msg(numero_msg)
--# END IF
LET cnt = cnt + 2
BEFORE GROUP OF x.cod_n
LET cels = "R",cnt USING "<<<","C1"
--# IF DDEpoke("EXCEL",archivo,cels,x.producto) THEN
--# ELSE
--# LET numero_msg =391
--# CALL msg(numero_msg)
--# END IF
ON EVERY ROW
IF decide = "V" THEN
LET cels = "R",cnt USING "<<<",x.posicion
--# IF DDEpoke("EXCEL",archivo,cels,x.valor) THEN
--# ELSE
--# LET numero_msg =391
--# CALL msg(numero_msg)
--# END IF
ELSE
LET cels = "R",cnt USING "<<<",x.posicion
--# IF DDEpoke("EXCEL",archivo,cels,x.unidades) THEN
--# ELSE
--# LET numero_msg =391
--# CALL msg(numero_msg)
--# END IF
END IF
AFTER GROUP OF x.cod_n
# Aqui para la suma insertar un string SUM(c1:c2) en cada columna
LET cnt = cnt + 1
END REPORT
FUNCTION pantalla()
DEFINE fecha CHAR(8),
hora char(5)
SELECT * INTO p_compania.*
FROM companias
LET l = (80 - LENGTH(p_compania.nombre CLIPPED)) / 2
LET fecha = today USING "dd/mm/yy"
LET hora = time
DISPLAY p_compania.nombre CLIPPED AT 4,l
ATTRIBUTE (REVERSE,YELLOW)
DISPLAY fecha AT 4,70 ATTRIBUTE (YELLOW)
DISPLAY "Sistema de Contabilidad General" AT 5,24
DISPLAY hora AT 6,73 ATTRIBUTE(YELLOW)
CALL fgl_drawbox(5,79,3,1)
CALL fgl_drawbox(1,79,22,1)
END FUNCTION