{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP029 OBJETIVO : Relacion de ventas diarias y ranchero PLAN RANCHERO PROGRAMADOR : Ing. Juan Soto (Johnny) FECHA REALIZACION : Agosto 19, 1994. ------------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" FUNCTION veprrp029() DEFINE opcion CHAR(1) DEFINE p_fecha1 DATE DEFINE mes_ini CHAR(6) DEFINE peri2,periodo,act1,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 ventas_dia RECORD ventas CHAR(1), cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad_vend INTEGER, 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 INTEGER, precio 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_pres INTEGER, precio DECIMAL(12,2), prima DECIMAL(8,2) 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 INTEGER, valor DECIMAL(12,2), unidad_acum DECIMAL(12,2), valor_acum 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 vefmrp029 FROM "vefmrp029" DISPLAY FORM vefmrp029 CALL pantalla() DISPLAY "veprrp029" AT 4,3 DISPLAY "Ventas Diarias y Acumuladas Plan Ranchero" AT 6,19 LET tipo_papel = 1 CALL msgrp000(tipo_papel) LET rango.fech_in = today INPUT BY NAME detalle,rango.fech_in,p_mes 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 AFTER FIELD fech_in IF rango.fech_in is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fech_in END IF 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 hoy = MONTH(rango.fech_in) LET mes_ini = rango.fech_in LET act1 = YEAR(rango.fech_in) USING "&&&&" LET periodo = act1[3,4],p_mes using "&&" LET peri2 = ant[3,4],p_mes using "&&" LET peri = periodo SELECT a.fecha_inicio INTO p_fecha1 FROM prdtable a WHERE a.mes = p_mes AND a.ano = act1 # Buscando Pilas vendias del ano actual 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*b.prima_us) ", "FROM vetb00003 a,vetb00002 b ", "WHERE (b.fecha_factura between ? and ?) and (a.factura = b.factura) and ", " (b.sec_vend = 8888) and b.status_t is null and a.status_t is null ", " AND b.ventas = 1 GROUP BY 2,3,4,5,1 ORDER BY 1,2,3,4 " DISPLAY "<< Estoy Buscando Ventas Del Ano Actual... 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 p_fecha1,rango.fech_in LET select_dia = "SELECT a.ventas,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec, ", " sum(b.cantidad),sum(b.cantidad * b.precio* a.prima_us) ", "FROM vetb00002 a,vetb00003 b ", "WHERE (a.factura = b.factura) and (a.fecha_factura = ?) and ", " (a.sec_vend = 8888) and a.status_t is null and b.status_t is null ", " AND a.ventas = 1 GROUP BY 2,3,4,5,1 ORDER BY 1,2,3,4,5 " DISPLAY "<< Estoy Buscando Ventas Del Dia... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (BOLD,REVERSE) PREPARE busca_dia FROM select_dia DECLARE movi_dia SCROLL CURSOR FOR busca_dia OPEN movi_dia USING rango.fech_in # Busqueda de los codigos 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,iptb00002 a ", "WHERE d.status_t is null ORDER BY 1,2,3,4" DISPLAY "<< Estoy Buscando Productos Terminados... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (BOLD,REVERSE) PREPARE busca_movi FROM select_cliente DECLARE movi_curs CURSOR FOR busca_movi OPEN movi_curs START REPORT ranchero 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 = "N" LET verdad = null LET salir1 = "N" LET idx_t = 1 WHILE salir1 != "S" FETCH movi_curs INTO ventas.* IF STATUS = NOTFOUND THEN LET salir1 = "S" EXIT WHILE 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 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] LET idx_t = idx_t + 1 LET ventas.ventas = "1" LET ventas.cantidad_vend = 0 LET ventas.valor = 0 LET ventas.unidad_acum = 0 LET ventas.valor_acum = 0 LET idx_d = 1 LET salir = "N" WHILE salir != "S" FETCH ABSOLUTE idx_d movi_dia INTO ventas_dia.* IF status = notfound THEN LET idx_d = 1 LET salir = "S" 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_d = idx_d + 1 IF ventas_dia.cod_n = ventas.cod_n and ventas_dia.cod_grupo = ventas.cod_grupo and ventas_dia.cod_tipo = ventas.cod_tipo and ventas_dia.cod_sec = ventas.cod_sec THEN LET ventas.cantidad_vend = ventas_dia.cantidad_vend LET ventas.valor = ventas_dia.precio LET idx_d = 1 LET salir = "S" EXIT WHILE END IF END WHILE LET idx = 1 LET salir2 = "N" WHILE salir2 != "S" FETCH ABSOLUTE idx act INTO vtas_acum.* IF status = notfound THEN LET idx = 1 LET salir2 = "S" 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 = idx + 1 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 THEN LET ventas.unidad_acum = vtas_acum.cantidad_vend LET ventas.valor_acum = vtas_acum.precio LET salir2 = "S" LET idx = 1 EXIT WHILE END IF END WHILE 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.cantidad_vend is null THEN LET ventas.cantidad_vend = 0 END IF DISPLAY ventas.codigo," ", ventas.cantidad_vend USING "###,###.##" AT 20,14 SLEEP 1 OUTPUT TO REPORT ranchero(ventas.*,peri,p_mes) END WHILE FINISH REPORT ranchero CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT ranchero(x,peri1,p_mes1) 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 INTEGER, valor DECIMAL(12,2), unidad_acum DECIMAL(12,2), valor_acum 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(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 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 DECIMAL(12,2) DEFINE peri1,d,m,i SMALLINT 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 71 LET negrillas_off = ASCII 27, ASCII 72 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 LET hora = time LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, doce,negrillas_on PRINT COLUMN 1, "veprrp029", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 94, "Pag. ",pageno using "###" PRINT COLUMN 28, " Sistema de Ventas ", COLUMN 94, today using "dd/mm/yy" PRINT COLUMN 20, "Relacion de Ventas Diarias Y Acumuladas Por Mes", " Plan Ranchero", COLUMN 97, hora SKIP 1 LINES LET d = WEEKDAY(rango.fech_in) LET m = MONTH(rango.fech_in) LET d = d + 1 CALL meses() LET nombre_mes = mes1[m] LET nombre_mes1 = mes1[p_mes1] CALL f_dias() LET nombre_dia = dias[d] PRINT COLUMN 1, "Dia: ",nombre_dia clipped," ", DAY(rango.fech_in) using "<<<"," ", "de ",nombre_mes clipped," de ",YEAR(rango.fech_in) PRINT COLUMN 1, "---------------------------------------------------", "--------------------------------------------------" PRINT COLUMN 58, "D i a r i a", COLUMN 80, "Acumulada de ",nombre_mes1 clipped PRINT COLUMN 2, "P r o d u c t o", COLUMN 50, "Unidades", COLUMN 69, "Valor", COLUMN 80, "Unidades", COLUMN 96, "Valor" PRINT COLUMN 1, "---------------------------------------------------", "--------------------------------------------------", negrillas_off BEFORE GROUP OF x.ventas SKIP 1 LINE 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 PRINT COLUMN 7,negrillas_on, nombre,negrillas_off SKIP 1 LINE AFTER GROUP OF x.codigo PRINT COLUMN 1, x.cod_n using "&","-",x.cod_grupo using "&","-", x.cod_tipo using "&&","-",x.cod_sec using "&&&", " ",x.descrip_esp," ",x.unidad_med clipped, COLUMN 47, GROUP SUM(x.cantidad_vend) using "#,###,###.##", COLUMN 60, GROUP SUM(x.valor) using "#,###,###.##", COLUMN 73, GROUP SUM(x.unidad_acum) using "###,###,###.##", COLUMN 88, GROUP SUM(x.valor_acum) using "###,###,###.##" AFTER GROUP OF x.sub_control SKIP 1 LINE PRINT COLUMN 6, "SUB-TOTAL ",x.sub_control clipped, COLUMN 47, GROUP SUM(x.cantidad_vend) using "#,###,###.##", COLUMN 60, GROUP SUM(x.valor) using "#,###,###.##", COLUMN 73, GROUP SUM(x.unidad_acum) using "###,###,###.##", COLUMN 88, GROUP SUM(x.valor_acum) using "###,###,###.##" SKIP 1 LINE 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 PRINT COLUMN 1, negrillas_on PRINT COLUMN 9, "TOTAL ",tipo1 clipped, COLUMN 47, GROUP SUM(x.cantidad_vend) using "#,###,###.##", COLUMN 60, GROUP SUM(x.valor) using "#,###,###.##", COLUMN 73, GROUP SUM(x.unidad_acum) using "###,###,###.##", COLUMN 88, GROUP SUM(x.valor_acum) using "###,###,###.##" PRINT COLUMN 1, negrillas_off AFTER GROUP OF x.ventas SKIP 1 LINE PRINT COLUMN 1, negrillas_on PRINT COLUMN 7, "TOTAL ",nombre clipped, COLUMN 47, GROUP SUM(x.cantidad_vend) using "#,###,###.##", COLUMN 60, GROUP SUM(x.valor) using "#,###,###.##", COLUMN 73, GROUP SUM(x.unidad_acum) using "###,###,###.##", COLUMN 88, GROUP SUM(x.valor_acum) using "###,###,###.##" PRINT COLUMN 1, negrillas_off IF x.ventas = "1" THEN SKIP TO TOP OF PAGE END IF ON LAST ROW SKIP 1 LINE PRINT COLUMN 7, negrillas_on PRINT COLUMN 7, "TOTAL GENERAL ", COLUMN 47, SUM(x.cantidad_vend) using "#,###,###.##", COLUMN 60, SUM(x.valor) using "#,###,###.##", COLUMN 73, SUM(x.unidad_acum) using "###,###,###.##", COLUMN 88, SUM(x.valor_acum) using "###,###,###.##" PRINT COLUMN 1, negrillas_off,normal END REPORT