{ ------------------------------------------------------------------------------- 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