{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP040 OBJETIVO : VENTAS VS PRESUPUESTO POR PRODUCTO Y VENDEDOR PROGRAMADOR : ING. JUAN F. SOTO FECHA REALIZACION : OCTUBRE 2, 1997 ------------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" DEFINE nom_cli CHAR(30) DEFINE fecha1,fecha2,fecha_inicial,fecha_final DATE , k,p_ano,p_mes SMALLINT FUNCTION veprrp040() DEFINE ventas RECORD sec_vend SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, presupuesto DECIMAL(12,3), ventas DECIMAL(12,3), codigo CHAR(8) END RECORD OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM vefmrp040 FROM "vefmrp040" DISPLAY FORM vefmrp040 CALL pantalla() DISPLAY "veprrp040" AT 4,3 DISPLAY "Ventas VS Presupuesto Por Producto Y Vendedor" AT 6,21 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME fecha_inicial,fecha_final AFTER FIELD fecha_inicial IF fecha_inicial IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_inicial END IF AFTER FIELD fecha_final IF fecha_final IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_final END IF LET p_ano = YEAR(fecha_final) LET p_mes = MONTH(fecha_final) SELECT a.fecha_inicio,a.fecha_corte INTO fecha1,fecha2 FROM prdtable a WHERE a.ano = p_ano AND a.mes = p_mes IF STATUS = NOTFOUND THEN LET numero_msg = 51 CALL msg(numero_msg) NEXT FIELD fecha_final END IF IF fecha_final < fecha_inicial THEN LET numero_msg = 86 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 IF fecha_inicial < fecha1 OR fecha_final > fecha2 THEN LET numero_msg = 57 CALL msg(numero_msg) NEXT FIELD fecha_final END IF EXIT INPUT END INPUT CONSTRUCT BY NAME criterio ON b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec # Busca las ventas locales para el rango de fechas especificado IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET selec = "SELECT a.sec_vend,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,", " a.cantidad,' ' ", "FROM vetb00045 a,iptb00002 b ", "WHERE ",criterio CLIPPED," AND a.mes = ",p_mes," AND ", " a.ano = ",p_ano," AND a.cod_n = b.cod_n AND ", " a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND ", " a.cod_sec = b.cod_sec AND a.status_t IS NULL ORDER BY 1,2,3,4,5 " 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_p TO "C:\\archivo" DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) LET k = 1 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.codigo = ventas.cod_n USING "&", ventas.cod_grupo USING "&", ventas.cod_tipo USING "&&", ventas.cod_sec USING "&&&" LET ventas.ventas = 0 SELECT SUM(b.cantidad) INTO ventas.ventas FROM vetb00002 a,vetb00003 b WHERE a.factura = b.factura AND a.fecha_factura BETWEEN fecha_inicial AND fecha_final AND a.sec_vend = ventas.sec_vend AND b.cod_n = ventas.cod_n AND b.cod_grupo = ventas.cod_grupo AND b.cod_tipo = ventas.cod_tipo AND b.cod_sec = ventas.cod_sec AND a.status_t IS NULL IF ventas.ventas IS NULL THEN LET ventas.ventas = 0 END IF OUTPUT TO REPORT ventas_p(ventas.*) END FOREACH FINISH REPORT ventas_p CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT ventas_p(x) DEFINE x RECORD sec_vend SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, presupuesto DECIMAL(12,3), ventas DECIMAL(12,3), codigo CHAR(8) END RECORD, l1,pmarca,i,l SMALLINT DEFINE doble_on CHAR(2), nombre_mes CHAR(20) 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), tt_p,tt_m,tt_ventas,tt_presup,t_presup,t_ventas,total_ventas, total_presup DECIMAL(12,3) DEFINE total_m ARRAY[20] OF DECIMAL(12,3) DEFINE total_p ARRAY[20] OF DECIMAL(12,3) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.codigo,x.sec_vend 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 = (153 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, doce,comp_on PRINT COLUMN 1, "veprrp040", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 141, "Pag.", COLUMN 147, pageno using "###" PRINT COLUMN 53, " Sistema de Ventas ", COLUMN 140, today using "dd/mm/yyyy" PRINT COLUMN 53, "Ventas VS Presupuesto Por Producto Y Vendedor", COLUMN 145, hora SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = p_mes PRINT COLUMN 1, " Mes Presupuesto:", nombre_mes CLIPPED," ", "Rango Fecha De Venta: ", fecha_inicial USING "dd/mm/yy"," Al ", fecha_final USING "dd/mm/yy" PRINT COLUMN 1,negrillas_on, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------------" , "--------------------------------------------------" DECLARE busca CURSOR FOR SELECT UNIQUE a.nom1_emp,a.apell1_emp ,a.num_emp INTO descrip1,descrip2 FROM adtb00003 a,vetb00045 b WHERE a.status_t IS NULL AND a.num_emp = b.sec_vend AND b.ano = p_ano AND b.mes = p_mes ORDER BY 3 LET l = 60 LET idx = 0 FOREACH busca PRINT COLUMN l,descrip1 CLIPPED," ",descrip2 CLIPPED,"|"; LET l = l +25 LET idx = idx + 1 END FOREACH PRINT COLUMN l,"TOTAL", COLUMN l+10,"TOTAL" PRINT COLUMN 1, "Producto"; LET l = 60 FOR i = 1 TO idx PRINT COLUMN l, "VENTAS", COLUMN l+9, "PRESUPUESTO"; LET l = l + 25 END FOR PRINT COLUMN l, "VENTAS", COLUMN l+10, "PRESUPUESTO" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "--------------------------------------------------------", "--------------------------------------------------", negrillas_off BEFORE GROUP OF x.codigo LET i = 0 LET total_ventas = 0 LET total_presup = 0 SELECT a.descrip_esp INTO descrip2 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 LET descripcion = descrip2 CLIPPED PRINT COLUMN 1, x.cod_n USING "&","-",x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-",x.cod_sec USING "&&&", " ",descripcion[1,50]; LET l = 60 AFTER GROUP OF x.sec_vend PRINT COLUMN l, x.ventas USING "##,###.##", COLUMN l+10, x.presupuesto using "##,###.##"; LET total_presup = total_presup + x.presupuesto LET total_ventas = total_ventas + x.ventas LET l = l + 25 LET i = i + 1 #LET total_m[k] = total_m[k] + x.ventas #LET total_p[k] = total_p[k] + x.presupuesto LET k = k + 1 AFTER GROUP OF x.codigo IF i != idx THEN LET i = idx - i FOR idx = 1 TO i PRINT COLUMN l, total_m[idx] USING "##,###.##", COLUMN l+10, total_p[idx] USING "##,###.##" LET l = l + 25 END FOR END IF PRINT COLUMN l, total_ventas USING "###,###.##", COLUMN l+13, total_presup USING "###,###.##" END REPORT