272 lines
8.2 KiB
Plaintext
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
|