{ ------------------------------------------------------------------------------- PROGRAMA : CCPRRP015 OBJETIVO : FLASH REPORT PROGRAMADOR : Ing. Juan Soto (Johnny) FECHA REALIZACION : Abril 24, 1993 ------------------------------------------------------------------------------- } GLOBALS "ccprgb000.4gl" DEFINE moneda SMALLINT DEFINE primera,acumulado CHAR(1) DEFINE mes1 ARRAY [12] OF CHAR (10) FUNCTION ccprrp015() DEFINE mes_ini CHAR(6) DEFINE peri2,periodo,act,ant,hoy CHAR(4) DEFINE mes_fin CHAR(2) DEFINE select_dia,select_zona,select_cliente,select_pilas CHAR(1000) DEFINE p_mes,idx_d,registros,cuenta,peri,idx_t,idx_o,idx_e,idx_p,idx_m SMALLINT DEFINE n_encontre,p_ventas,esta,encontre,salir2,salir1,salir CHAR(1) DEFINE tasa1,tasa2,tasa3 DECIMAL(6,2) DEFINE fecha1,fecha2,fecha3,fecha4 DATE DEFINE ventas_dia RECORD ventas CHAR(1), cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad_vend DECIMAL(12,2), precio DECIMAL(12,2), prima LIKE vetb00002.prima_us END RECORD DEFINE vtas_acum RECORD ventas CHAR(1), cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad_vend DECIMAL(12,2), precio DECIMAL(12,2), descuento DECIMAL(12,2), prima LIKE vetb00002.prima_us END RECORD DEFINE ano_ant RECORD ventas CHAR(1), cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad_vend DECIMAL(12,2), precio DECIMAL(12,2), descuento DECIMAL(12,2), prima LIKE vetb00002.prima_us END RECORD DEFINE ventas RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(30), unidad_med CHAR(4) , sub_control CHAR(1), ventas CHAR(1), cantidad_vend DECIMAL(12,2), valor DECIMAL(12,2), cantidad_Pres INTEGER, valor_pres DECIMAL(12,2), unidad_acum DECIMAL(12,2), valor_acum DECIMAL(12,2), unidad_ant DECIMAL(12,2), valor_ant DECIMAL(12,2), codigo CHAR(7), grupo_venta CHAR(1) END RECORD #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM ccfmrp015 FROM "ccfmrp015" DISPLAY FORM ccfmrp015 CALL pantalla() DISPLAY "ccprrp015" AT 4,3 DISPLAY " FLASH REPORT " AT 6,26 LET tipo_papel = 2 CALL msgrp000(tipo_papel) LET primera = "S" INPUT BY NAME acumulado,moneda,p_mes,tasa1,tasa2,tasa3 WITHOUT DEFAULTS AFTER FIELD p_mes IF p_mes is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_mes END IF IF p_mes > 12 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_mes END IF LET act = YEAR(today) USING "&&&&" LET ant = YEAR(today) - 1 USING "&&&&" SELECT fecha_inicio,fecha_corte INTO fecha1,fecha2 FROM prdtable WHERE mes = p_mes AND ano = act SELECT fecha_inicio,fecha_corte INTO fecha3,fecha4 FROM prdtable WHERE mes = p_mes AND ano = ant AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF EXIT INPUT END INPUT # Busca Los Movimientos de las Facturas LET periodo = act[3,4],p_mes using "&&" LET peri2 = ant[3,4],p_mes using "&&" LET peri = periodo # Buscando Pilas vendias En el mes especificado IF acumulado = "N" THEN LET select_pilas = "SELECT b.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ", " sum(a.cantidad),sum(a.cantidad * a.precio),sum(b.monto_desc), ", " b.prima_us ", "FROM vetb00003 a,vetb00002 b ", "WHERE b.fecha_factura between ? and ? and a.factura = b.factura and ", " b.status_t is null and a.status_t is null ", "GROUP BY 1,2,3,4,5,9 ORDER BY 1,2,3,4 " DISPLAY "<< Estoy Buscando Ventas Del Mes ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (BOLD,REVERSE) PREPARE busca_act FROM select_pilas DECLARE act SCROLL CURSOR FOR busca_act OPEN act USING fecha1,fecha2 END IF # Buscando los meses acumulado donde la variable acumulado sea igual a S IF acumulado = "S" THEN LET select_pilas = "SELECT b.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ", " sum(a.cantidad),sum(a.cantidad * a.precio),sum(b.monto_desc), ", " b.prima_us ", "FROM vetb00003 a,vetb00002 b ", "WHERE b.fecha_factura<=? AND a.factura=b.factura and b.status_t is null ", " and a.status_t is null AND YEAR(b.fecha_factura) = ? ", "GROUP BY 1,2,3,4,5,9 ORDER BY 1,2,3,4 " DISPLAY "<< Estoy Buscando Ventas Acumuladas ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (BOLD,REVERSE) PREPARE busca_act1 FROM select_pilas DECLARE act1 SCROLL CURSOR FOR busca_act1 OPEN act1 USING fecha2,act END IF # Buscando Pilas vendias del ano anterior IF acumulado = "S" THEN LET select_zona = "SELECT b.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ", " sum(a.cantidad),sum(a.cantidad * a.precio),sum(b.monto_desc),", " b.prima_us ", "FROM vetb00003 a,vetb00002 b ", "WHERE b.fecha_factura != ? and a.factura=b.factura and ", " b.status_t is null and a.status_t is null AND b.fecha_factura < ? ", "GROUP BY 1,2,3,4,5,9 ORDER BY 1,2,3,4 " ELSE LET select_zona = "SELECT b.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ", " sum(a.cantidad),sum(a.cantidad * a.precio),sum(b.monto_desc),", " b.prima_us ", "FROM vetb00003 a,vetb00002 b ", "WHERE b.fecha_factura between ? AND ? AND a.factura = b.factura and ", " b.status_t is null and a.status_t is null ", "GROUP BY 1,2,3,4,5,9 ORDER BY 1,2,3,4 " END IF DISPLAY "<< Estoy Buscando Ventas Ano Anterior ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (BOLD,REVERSE) PREPARE busca_ant FROM select_zona DECLARE ant SCROLL CURSOR FOR busca_ant OPEN ant USING fecha3,fecha4 LET select_cliente = "SELECT unique d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec,d.descrip_esp, ", " d.unidad_med,' ' ", "FROM iptb00002 d ", "WHERE d.status_t is null ORDER BY 2,3,4,5" PREPARE busca_movi FROM select_cliente DECLARE movi_curs SCROLL CURSOR FOR busca_movi OPEN movi_curs START REPORT flash TO "C:\\archivo" DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) SELECT count(*) INTO registros FROM iptb00002 LET n_encontre = null LET cuenta = 0 LET identifica = null LET verdad = null LET idx = 1 LET idx_o = 1 LET idx_d = 1 LET salir1 = "N" LET idx_t = 1 WHILE salir1 != "S" FETCH ABSOLUTE idx_t movi_curs INTO ventas.* IF STATUS = NOTFOUND THEN LET idx_t = 1 LET idx = 1 LET idx_o = 1 LET idx_p = 1 LET ventas.ventas = "2" IF identifica = "S" THEN LET salir1 = "S" EXIT WHILE ELSE LET identifica = "S" CONTINUE WHILE END IF END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF ventas.ventas is null THEN LET ventas.ventas = "1" END IF IF identifica = "S" THEN LET ventas.ventas = "2" END IF LET idx_t = idx_t + 1 LET cuenta = cuenta + 1 LET salir = "N" WHILE salir != "S" IF acumulado = "N" THEN FETCH ABSOLUTE idx act INTO vtas_acum.* ELSE FETCH ABSOLUTE idx act1 INTO vtas_acum.* END IF IF status = notfound THEN LET idx = 1 EXIT WHILE END IF LET idx = idx + 1 IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF IF vtas_acum.cod_n = ventas.cod_n and vtas_acum.cod_grupo = ventas.cod_grupo and vtas_acum.cod_tipo = ventas.cod_tipo and vtas_acum.cod_sec = ventas.cod_sec and vtas_acum.ventas = ventas.ventas THEN LET ventas.unidad_acum = vtas_acum.cantidad_vend IF ventas.ventas = "2" THEN LET ventas.valor_acum = (vtas_acum.precio * vtas_acum.prima) ELSE LET ventas.valor_acum = (vtas_acum.precio - vtas_acum.descuento) END IF END IF END WHILE LET salir = "N" WHILE salir != "S" FETCH ABSOLUTE idx_o ant INTO ano_ant.* IF status = notfound THEN LET idx_o = 1 EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET idx_o = idx_o + 1 LET ventas.unidad_ant = 0 LET ventas.valor_ant = 0 IF ano_ant.cod_n = ventas.cod_n and ano_ant.cod_grupo = ventas.cod_grupo and ano_ant.cod_tipo = ventas.cod_tipo and ano_ant.cod_sec = ventas.cod_sec and ano_ant.ventas = ventas.ventas THEN LET idx_o = 1 LET ventas.unidad_ant = ano_ant.cantidad_vend IF ano_ant.prima is null THEN LET ano_ant.prima = 1 END IF IF ano_ant.descuento is null THEN LET ano_ant.descuento = 0 END IF IF ano_ant.ventas = "2" THEN LET ventas.valor_ant = (ano_ant.precio * ano_ant.prima) ELSE LET ventas.valor_ant = (ano_ant.precio - ano_ant.descuento) END IF EXIT WHILE ELSE LET ventas.unidad_ant = 0 LET ventas.valor_ant = 0 END IF END WHILE LET ventas.codigo = ventas.cod_n using "&", ventas.cod_grupo using "&", ventas.cod_tipo using "&&", ventas.cod_sec using "&&&" LET ventas.grupo_venta = ventas.codigo[5] IF ventas.unidad_acum is null THEN LET ventas.unidad_acum = 0 END IF IF ventas.valor_acum is null THEN LET ventas.valor_acum = 0 END IF IF ventas.valor is null THEN LET ventas.valor = 0 END IF IF ventas.unidad_ant is null THEN LET ventas.unidad_ant = 0 END IF IF ventas.valor_ant is null THEN LET ventas.valor_ant = 0 END IF IF ventas.cantidad_vend is null THEN LET ventas.cantidad_vend = 0 END IF OUTPUT TO REPORT flash(ventas.*,peri,p_mes,ant,act,tasa1,tasa2,tasa3) IF cuenta >= registros THEN LET ventas.ventas = "2" END IF LET ventas.cantidad_vend = 0 LET ventas.valor = 0 LET ventas.cantidad_pres = 0 LET ventas.valor_pres = 0 LET ventas.unidad_acum = 0 LET ventas.valor_acum = 0 LET ventas.unidad_ant = 0 LET ventas.valor_ant = 0 END WHILE FINISH REPORT flash CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT flash(x,peri1,p_mes1,ant1,act1,tasa_act,tasa_pre,tasa_py) DEFINE x RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(30), unidad_med CHAR(4) , sub_control CHAR(1), ventas CHAR(1), cantidad_vend DECIMAL(12,2), valor DECIMAL(12,2), cantidad_Pres DECIMAL(12,2), valor_pres DECIMAL(12,2), unidad_acum DECIMAL(12,2), valor_acum DECIMAL(12,2), unidad_ant DECIMAL(12,2), valor_ant DECIMAL(12,2), codigo CHAR(7), grupo_venta CHAR(1) END RECORD, p_mes1 SMALLINT DEFINE vendedor,imp,imp1 CHAR (1) DEFINE nombre,tipo1 CHAR(21) DEFINE nombre_mes1,nombre_dia,nombre_mes CHAR(11) DEFINE descrip_zone CHAR(30) DEFINE doble_on CHAR(2) DEFINE doble_off CHAR(2) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(3) DEFINE comp_off CHAR(3) DEFINE doce CHAR(2) DEFINE normal CHAR(2) DEFINE hora CHAR(5) DEFINE t_cantidad_pres,t_valor_pres,t_t_cantidad_pres,t_t_valor_pres, t_t_t_cantidad_pres, t_t_t_valor_pres,g_cantidad_vend,g_valor_vend, g_unidad_acum,g_valor_acum,g_g_cantidad_vend,g_g_valor_vend, g_g_unidad_acum,g_g_valor_acum,g_g_g_cantidad_vend,g_g_g_valor_vend, g_g_g_unidad_acum,g_g_g_valor_acum,g_unidad_ant,g_valor_ant, g_g_unidad_ant,g_g_valor_ant,g_g_g_unidad_ant,g_g_g_valor_ant, t1_cantidad_pres,t1_valor_pres,g1_cantidad_vend,g1_valor_vend, g1_unidad_acum,g1_valor_acum,g1_unidad_ant,g1_valor_ant, g_p_b,g_g_p_b,g_g_g_p_b,g_p_b_v,g_g_p_b_v,g_g_g_p_b_v, g_p_py,g_g_p_py,g_g_g_p_py,g_p_py_v,g_g_p_py_v,g_g_g_p_py_v, g1_p_b,g1_p_b_v,g1_p_py,g1_p_py_v DECIMAL(12,2) DEFINE p_b,p_py,p_b_v,p_py_v,tasa_act,tasa_pre,tasa_py DECIMAL(8,2) #DEFINE tasas RECORD LIKE prtb00001.* DEFINE peri1,d,m,i SMALLINT DEFINE ant1,act1 CHAR(4) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 4 ORDER BY x.ventas,x.grupo_venta,x.sub_control,x.codigo 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 69 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal =ASCII 029 LET hora = time LET lj = (162 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, comp_on,negrillas_on PRINT COLUMN 1, "ccprrp015", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 155, "Pag. ",pageno using "###" PRINT COLUMN 71, "Sistema de Finanzas", COLUMN 153, today using "dd/mm/yyyy" PRINT COLUMN 64, "Control de productos para la venta", COLUMN 158, hora IF acumulado = "N" THEN PRINT COLUMN 75, "FLASH REPORT" ELSE PRINT COLUMN 69, "FLASH REPORT - ACUMULADO" END IF SKIP 1 LINES IF moneda = 1 THEN PRINT COLUMN 79, "IN RD$" ELSE PRINT COLUMN 79, "IN US$" END IF CALL meses() LET nombre_mes = mes1[p_mes1] PRINT COLUMN 1, "Mes de: ",nombre_mes clipped PRINT COLUMN 1, "Tasa Actual: ",tasa_act using "###.##" PRINT COLUMN 1, "Tasa Presupuesto: ",tasa_pre using "###.##" PRINT COLUMN 1, "Tasa Anterior: ",tasa_py using "###.##" LET primera = "N" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "--------------------------------------------------" , "-------------" PRINT COLUMN 58, " R E A L ", COLUMN 110, "B U D G E T", COLUMN 130, "P R I O R Y E A R" PRINT COLUMN 2, "P r o d u c t o", COLUMN 53, "Unidades", COLUMN 65, "% Bget.", COLUMN 77, "% Py", COLUMN 89, "Valor", COLUMN 105, "% Bget.", COLUMN 116, "% Py", COLUMN 129, "Unidades", COLUMN 140, "Valor", COLUMN 156, "Unidades", COLUMN 169, "Valor" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "--------------------------------------------------" , "-------------", negrillas_off IF t_cantidad_pres is null THEN LET t_cantidad_pres = 0 LET t1_cantidad_pres = 0 END IF IF t_valor_pres is null THEN LET t_valor_pres = 0 LET t1_valor_pres = 0 END IF IF t_t_cantidad_pres is null THEN LET t_t_cantidad_pres = 0 END IF IF t_t_valor_pres is null THEN LET t_t_valor_pres = 0 END IF IF t_t_t_cantidad_pres is null THEN LET t_t_t_cantidad_pres = 0 END IF IF t_t_t_valor_pres is null THEN LET t_t_t_valor_pres = 0 END IF BEFORE GROUP OF x.ventas SKIP 1 LINE IF x.ventas = "1" THEN LET nombre = "L O C A L" LET g_p_b = 0 LET g_g_p_b = 0 LET g_g_g_p_b = 0 LET g1_p_b = 0 LET g1_p_b_v = 0 LET g1_p_py_v = 0 LET g1_p_py = 0 LET g_p_b_v = 0 LET g_g_p_b_v = 0 LET g_g_g_p_b_v = 0 LET g_p_py = 0 LET g_g_p_py = 0 LET g_g_g_p_py = 0 LET g_p_py_v = 0 LET g_g_p_py_v = 0 LET g_g_g_p_py_v = 0 ELSE LET nombre = "E X P O R T A C I O N" END IF PRINT COLUMN 7,negrillas_on, nombre,negrillas_off SKIP 1 LINE AFTER GROUP OF x.codigo IF acumulado = "N" THEN SELECT sum(cantidad),sum(valor) INTO x.cantidad_pres,x.valor_pres FROM vetb00017 WHERE mes = peri1 and ventas = x.ventas and cod_n = x.cod_n and cod_grupo=x.cod_grupo and cod_tipo=x.cod_tipo and cod_sec=x.cod_sec ELSE SELECT sum(cantidad),sum(valor) INTO x.cantidad_pres,x.valor_pres FROM vetb00017 WHERE mes <= peri1 and ventas = x.ventas and cod_n = x.cod_n and cod_grupo = x.cod_grupo and cod_tipo = x.cod_tipo and cod_sec = x.cod_sec END IF IF x.cantidad_pres is null THEN LET x.cantidad_pres = 0 END IF IF x.valor_pres is null THEN LET x.valor_pres = 0 END IF IF x.valor_pres > 0 THEN LET x.valor_pres = x.valor_pres LET x.cantidad_pres = x.cantidad_pres END IF IF moneda = 2 THEN LET x.valor_acum = x.valor_acum / tasa_act LET x.valor_pres = x.valor_pres / tasa_pre LET x.valor_ant = x.valor_ant / tasa_py END IF # Calculo del 4.54% para el BUDGET en valor LET x.valor_pres = x.valor_pres - (x.valor_pres * 0.0454) # Calculo de 7.72% para el PRIOR YEAR en valor LET x.valor_ant = x.valor_ant - (x.valor_ant * 0.0772) # Porciento budget real IF x.unidad_acum != 0 and x.cantidad_pres != 0 THEN LET p_b = ((x.unidad_acum / x.cantidad_pres) - 1) * 100 END IF # Porciento Prior year real IF x.unidad_acum != 0 and x.unidad_ant THEN LET p_py = ((x.unidad_acum / x.unidad_ant) - 1) * 100 END IF # Porciento budget real en valor IF x.valor_acum >= 1 and x.valor_pres >= 1 THEN LET p_b_v = ((x.valor_acum / x.valor_pres) - 1) * 100 END IF # Porciento prior year en valor IF x.valor_acum >= 1 and x.valor_ant >= 1 THEN LET p_py_v = ((x.valor_acum / x.valor_ant) - 1) * 100 END IF IF x.unidad_acum > 0 or x.cantidad_pres > 0 or x.unidad_ant > 0 or x.valor_acum > 0 or x.valor_ant > 0 or x.valor_pres > 0 THEN PRINT COLUMN 1, x.cod_n using "&","-",x.cod_grupo using "&","-", x.cod_tipo using "&&","-",x.cod_sec using "&&&", COLUMN 13, x.descrip_esp," ",x.unidad_med clipped, COLUMN 51, x.unidad_acum using "###,###,###", COLUMN 62, p_b using "###,###.##", COLUMN 73, p_py using "###,###.##", COLUMN 85, x.valor_acum using "###,###,###.##", COLUMN 101, p_b_v using "###,###.##", COLUMN 112, p_py_v using "###,###.##", COLUMN 124, x.cantidad_pres using "###,###,###", COLUMN 136, x.valor_pres using "###,###,###.##", COLUMN 152, x.unidad_ant using "###,###,###", COLUMN 165, x.valor_ant using "###,###,####.##" END IF LET p_b = 0 LET p_py = 0 LET p_b_v = 0 LET p_py_v = 0 LET t1_cantidad_pres = t1_cantidad_pres + x.cantidad_pres LET t1_valor_pres = t1_valor_pres + x.valor_pres IF g1_valor_vend is null THEN LET g1_cantidad_vend = 0 LET g1_valor_vend = 0 LET g1_unidad_acum = 0 LET g1_valor_acum = 0 LET g1_unidad_ant = 0 LET g1_valor_ant = 0 END IF LET g1_p_b = g1_p_b + p_b LET g1_p_b_v = g1_p_b_v + p_b_v LET g1_p_py = g1_p_py + p_py LET g1_p_py_v = g1_p_py_v + p_py_v LET g1_unidad_acum = g1_unidad_acum + x.unidad_acum LET g1_valor_acum = g1_valor_acum + x.valor_acum LET g1_unidad_ant = g1_unidad_ant + x.unidad_ant LET g1_valor_ant = g1_valor_ant + x.valor_ant AFTER GROUP OF x.sub_control IF x.cod_n = 3 THEN SKIP 1 LINE IF g1_unidad_acum > 0 or t1_cantidad_pres > 0 or g1_unidad_ant > 0 THEN LET g1_p_b = 0 LET g1_p_py = 0 LET g1_p_b_v = 0 LET g1_p_py_v = 0 IF t1_cantidad_pres != 0 and g1_unidad_acum != 0 THEN LET g1_p_b = ((g1_unidad_acum / t1_cantidad_pres) - 1) * 100 END IF IF g1_unidad_ant != 0 and g1_unidad_acum != 0 THEN LET g1_p_py = ((g1_unidad_acum / g1_unidad_ant) - 1) * 100 END IF IF t1_valor_pres != 0 and g1_valor_acum != 0 THEN LET g1_p_b_v = ((g1_valor_acum / t1_valor_pres) - 1) * 100 END IF IF g1_valor_ant != 0 and g1_valor_acum != 0 THEN LET g1_p_py_v = ((g1_valor_acum / g1_valor_ant) - 1) * 100 END IF PRINT COLUMN 6, "SUB-TOTAL ",x.sub_control clipped, COLUMN 51, g1_unidad_acum using "###,###,###", COLUMN 62, g1_p_b using "###,###.##", COLUMN 73, g1_p_py using "###,###.##", COLUMN 85, g1_valor_acum using "###,###,###.##", COLUMN 101, g1_p_b_v using "###,###.##", COLUMN 112, g1_p_py_v using "###,###.##", COLUMN 124, t1_cantidad_pres using "###,###,###", COLUMN 136, t1_valor_pres using "###,###,###.##", COLUMN 152, g1_unidad_ant using "###,###,###", COLUMN 166, g1_valor_ant using "###,###,###.##" END IF LET t_cantidad_pres = t_cantidad_pres + t1_cantidad_pres LET t_valor_pres = t_valor_pres + t1_valor_pres LET t1_valor_pres = 0 LET t1_cantidad_pres = 0 IF g_valor_vend is null THEN LET g_cantidad_vend = 0 LET g_valor_vend = 0 LET g_unidad_acum = 0 LET g_valor_acum = 0 LET g_unidad_ant = 0 LET g_valor_ant = 0 END IF LET g_p_b = g1_p_b + g_p_b LET g_p_b_v = g1_p_b_v + g_p_b_v LET g_p_py = g1_p_py + g_p_py LET g_p_py_v = g1_p_py_v + g_p_py_v LET g_unidad_acum = g1_unidad_acum + g_unidad_acum LET g_valor_acum = g1_valor_acum + g_valor_acum LET g_unidad_ant = g1_unidad_ant + g_unidad_ant LET g_valor_ant = g1_valor_ant + g_valor_ant LET g1_p_b = 0 LET g1_p_b_v = 0 LET g1_p_py = 0 LET g1_p_py_v = 0 LET g1_cantidad_vend = 0 LET g1_valor_vend = 0 LET g1_unidad_acum = 0 LET g1_valor_acum = 0 LET g1_unidad_ant = 0 LET g1_valor_ant = 0 SKIP 1 LINE ELSE LET t_cantidad_pres = t_cantidad_pres + t1_cantidad_pres LET t_valor_pres = t_valor_pres + t1_valor_pres LET t1_valor_pres = 0 LET t1_cantidad_pres = 0 IF g_valor_vend is null THEN LET g_cantidad_vend = 0 LET g_valor_vend = 0 LET g_unidad_acum = 0 LET g_valor_acum = 0 LET g_unidad_ant = 0 LET g_valor_ant = 0 END IF LET g_p_b = g1_p_b + g_p_b LET g_p_b_v = g1_p_b_v + g_p_b_v LET g_p_py = g1_p_py + g_p_py LET g_p_py_v = g1_p_py_v + g_p_py_v LET g_unidad_acum = g1_unidad_acum + g_unidad_acum LET g_valor_acum = g1_valor_acum + g_valor_acum LET g_unidad_ant = g1_unidad_ant + g_unidad_ant LET g_valor_ant = g1_valor_ant + g_valor_ant LET g1_p_b = 0 LET g1_p_b_v = 0 LET g1_p_py = 0 LET g1_p_py_v = 0 LET g1_cantidad_vend = 0 LET g1_valor_vend = 0 LET g1_unidad_acum = 0 LET g1_valor_acum = 0 LET g1_unidad_ant = 0 LET g1_valor_ant = 0 END IF AFTER GROUP OF x.grupo_venta IF x.grupo_venta = "1" THEN LET tipo1 = "SUPERCELL" END IF IF x.grupo_venta = "2" THEN LET tipo1 = "H. DUTY" END IF IF x.grupo_venta = "3" THEN LET tipo1 = "ALKALINAS" END IF IF x.grupo_venta = "4" THEN LET tipo1 = "LAMPARAS" END IF IF x.grupo_venta = "5" THEN LET tipo1 = "FOCOS" END IF IF x.grupo_venta = "6" THEN LET tipo1 = "BOMBILLOS" END IF IF x.grupo_venta = "7" THEN LET tipo1 = "EXIBIDORES" END IF IF g_unidad_acum > 0 or t_cantidad_pres > 0 or g_unidad_ant > 0 THEN LET g_p_b = 0 LET g_p_py = 0 LET g_p_b_v = 0 LET g_p_py_v = 0 IF t_cantidad_pres != 0 and g_unidad_acum != 0 THEN LET g_p_b = ((g_unidad_acum / t_cantidad_pres) - 1) * 100 END IF IF g_unidad_ant != 0 and g_unidad_acum != 0 THEN LET g_p_py = ((g_unidad_acum / g_unidad_ant) - 1) * 100 END IF IF t_valor_pres != 0 and g_valor_acum != 0 THEN LET g_p_b_v = ((g_valor_acum / t_valor_pres) - 1) * 100 END IF IF g_valor_ant != 0 and g_valor_acum != 0 THEN LET g_p_py_v = ((g_valor_acum / g_valor_ant) - 1) * 100 END IF PRINT COLUMN 1, negrillas_on, COLUMN 9, "TOTAL ",tipo1 clipped, COLUMN 53, g_unidad_acum using "###,###,###", COLUMN 64, g_p_b using "###,###.##", COLUMN 75, g_p_py using "###,###.##", COLUMN 87, g_valor_acum using "###,###,###.##", COLUMN 103, g_p_b_v using "###,###.##", COLUMN 114, g_p_py_v using "###,###.##", COLUMN 126, t_cantidad_pres using "###,###,###", COLUMN 138, t_valor_pres using "###,###,###.##", COLUMN 154, g_unidad_ant using "###,###,###", COLUMN 168, g_valor_ant using "###,###,###.##", negrillas_off END IF LET t_t_cantidad_pres = t_t_cantidad_pres + t_cantidad_pres LET t_t_valor_pres = t_t_valor_pres + t_valor_pres LET t_cantidad_pres = 0 LET t_valor_pres = 0 IF g_g_valor_vend is null THEN LET g_g_cantidad_vend = 0 LET g_g_valor_vend = 0 LET g_g_unidad_acum = 0 LET g_g_valor_acum = 0 LET g_g_unidad_ant = 0 LET g_g_valor_ant = 0 END IF LET g_g_p_b = g_g_p_b + g_p_b LET g_g_p_b_v = g_g_p_b_v + g_p_b_v LET g_g_p_py = g_g_p_py + g_p_py LET g_g_p_py_v = g_g_p_py_v + g_p_py_v LET g_g_unidad_acum = g_g_unidad_acum + g_unidad_acum LET g_g_valor_acum = g_g_valor_acum + g_valor_acum LET g_g_unidad_ant = g_g_unidad_ant + g_unidad_ant LET g_g_valor_ant = g_g_valor_ant + g_valor_ant LET g_p_b = 0 LET g_p_b_v = 0 LET g_p_py = 0 LET g_p_py_v = 0 LET g_cantidad_vend = 0 LET g_valor_vend = 0 LET g_unidad_acum = 0 LET g_valor_acum = 0 LET g_unidad_ant = 0 LET g_valor_ant = 0 SKIP 1 LINE AFTER GROUP OF x.ventas IF x.ventas = "1" THEN LET nombre = "L O C A L" ELSE LET nombre = "E X P O R T A C I O N" END IF SKIP 1 LINE LET g_g_p_b = 0 LET g_g_p_py = 0 LET g_g_p_b_v = 0 LET g_g_p_py_v = 0 IF t_t_cantidad_pres != 0 and g_g_unidad_acum != 0 THEN LET g_g_p_b = ((g_g_unidad_acum / t_t_cantidad_pres) - 1) * 100 END IF IF g_g_unidad_ant != 0 and g_g_unidad_ant != 0 THEN LET g_g_p_py = ((g_g_unidad_acum / g_g_unidad_ant) - 1) * 100 END IF IF t_t_valor_pres != 0 and g_g_valor_acum != 0 THEN LET g_g_p_b_v = ((g_g_valor_acum / t_t_valor_pres) - 1) * 100 END IF IF g_g_valor_ant != 0 and g_g_valor_acum != 0 THEN LET g_g_p_py_v = ((g_g_valor_acum / g_g_valor_ant) - 1) * 100 END IF PRINT COLUMN 7, negrillas_on,"TOTAL ",nombre clipped, COLUMN 53, g_g_unidad_acum using "###,###,###", COLUMN 64, g_g_p_b using "###,###.##", COLUMN 75, g_g_p_py using "###,###.##", COLUMN 87, g_g_valor_acum using "###,###,###.##", COLUMN 103, g_g_p_b_v using "###,###.##", COLUMN 114, g_g_p_py_v using "###,###.##", COLUMN 126, t_t_cantidad_pres using "###,###,###", COLUMN 138, t_t_valor_pres using "###,###,###.##", COLUMN 154, g_g_unidad_ant using "###,###,###", COLUMN 168, g_g_valor_ant using "###,###,###.##", negrillas_off LET t_t_t_cantidad_pres = t_t_t_cantidad_pres + t_t_cantidad_pres LET t_t_t_valor_pres = t_t_t_valor_pres + t_t_valor_pres LET t_t_cantidad_pres = 0 LET t_t_valor_pres = 0 IF g_g_g_valor_vend is null THEN LET g_g_g_cantidad_vend = 0 LET g_g_g_valor_vend = 0 LET g_g_g_unidad_acum = 0 LET g_g_g_valor_acum = 0 LET g_g_g_unidad_ant = 0 LET g_g_g_valor_ant = 0 END IF LET g_g_g_p_b = g_g_g_p_b + g_g_p_b LET g_g_g_p_b_v = g_g_g_p_b_v + g_g_p_b_v LET g_g_g_p_py = g_g_g_p_py + g_g_p_py LET g_g_g_p_py_v = g_g_g_p_py_v + g_g_p_py_v LET g_g_g_unidad_acum = g_g_g_unidad_acum + g_g_unidad_acum LET g_g_g_valor_acum = g_g_g_valor_acum + g_g_valor_acum LET g_g_g_unidad_ant = g_g_g_unidad_ant + g_g_unidad_ant LET g_g_g_valor_ant = g_g_g_valor_ant + g_g_valor_ant LET g_g_p_b = 0 LET g_g_p_b_v = 0 LET g_g_p_py = 0 LET g_g_p_py_v = 0 LET g_g_cantidad_vend = 0 LET g_g_valor_vend = 0 LET g_g_unidad_acum = 0 LET g_g_valor_acum = 0 LET g_g_unidad_ant = 0 LET g_g_valor_ant = 0 IF x.ventas = "1" THEN SKIP TO TOP OF PAGE END IF ON LAST ROW SKIP 1 LINE IF t_t_t_cantidad_pres != 0 and g_g_g_unidad_acum != 0 THEN LET g_g_g_p_b = ((g_g_g_unidad_acum / t_t_t_cantidad_pres) - 1) * 100 END IF IF g_g_g_unidad_ant != 0 and g_g_g_unidad_acum != 0 THEN LET g_g_g_p_py = ((g_g_g_unidad_acum / g_g_g_unidad_ant) - 1) * 100 END IF IF t_t_t_valor_pres != 0 and g_g_g_valor_acum != 0 THEN LET g_g_g_p_b_v = ((g_g_g_valor_acum / t_t_t_valor_pres) - 1) * 100 END IF IF g_g_g_valor_ant != 0 and g_g_g_valor_acum != 0 THEN LET g_g_g_p_py_v = ((g_g_g_valor_acum / g_g_g_valor_ant) - 1) * 100 END IF PRINT COLUMN 7, negrillas_on,"TOTAL GENERAL ", COLUMN 53, g_g_g_unidad_acum using "###,###,###", COLUMN 64, g_g_g_p_b using "###,###.##", COLUMN 75, g_g_g_p_py using "###,###.##", COLUMN 87, g_g_g_valor_acum using "###,###,###.##", COLUMN 103, g_g_g_p_b_v using "###,###.##", COLUMN 114, g_g_g_p_py_v using "###,###.##", COLUMN 126, t_t_t_cantidad_pres using "###,###,###", COLUMN 138, t_t_t_valor_pres using "###,###,###.##", COLUMN 154, g_g_g_unidad_ant using "###,###,###", COLUMN 167, g_g_g_valor_ant using "###,###,###.##", negrillas_off LET t_t_t_cantidad_pres = 0 LET t_t_t_valor_pres = 0 LET g_g_g_cantidad_vend = 0 LET g_g_g_valor_vend = 0 LET g_g_g_unidad_acum = 0 LET g_g_g_valor_acum = 0 LET g_g_g_unidad_ant = 0 LET g_g_g_valor_ant = 0 LET g_g_g_p_b = 0 LET g_g_g_p_b_v = 0 LET g_g_g_p_py = 0 LET g_g_g_p_py_v = 0 PRINT comp_off END REPORT FUNCTION meses() LET mes1[1] = "Enero" LET mes1[2] = "Febrero" LET mes1[3] = "Marzo" LET mes1[4] = "Abril" LET mes1[5] = "Mayo" LET mes1[6] = "Junio" LET mes1[7] = "Julio" LET mes1[8] = "Agosto" LET mes1[9] = "Septiembre" LET mes1[10] = "Octubre" LET mes1[11] = "Noviembre" LET mes1[12] = "Diciembre" RUN "type C:\\archivo > %USPRINT%" END FUNCTION