{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP035 OBJETIVO : ESTRATIFICACION DE VENTAS POR TIPO DE DESCUENTOS PROGRAMADOR : Juan F. Soto FECHA REALIZACION : Junio 2, 1997. ------------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" DEFINE fecha1,fecha2 DATE DEFINE salir CHAR(1), mes12,mes2 SMALLINT, anon,tipo_pila SMALLINT, fecha DATE, sneto,spierde DECIMAL(12,2) FUNCTION veprrp035() DEFINE codigo CHAR(7), c_desc DECIMAL(8,2), bruto,valor,monto_desc,neto,gana_pierde DECIMAL(12,2), costo DECIMAL(8,4) DEFINE prt_datos RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad INTEGER, precio DECIMAL(8,2), porc_desc DECIMAL(8,2), nomen CHAR(1) END RECORD OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM vefmrp035 FROM "vefmrp035" DISPLAY FORM vefmrp035 CALL pantalla() DISPLAY "veprrp035" AT 4,3 DISPLAY "Estratificaion De Ventas Por Tipo De Descuentos" AT 6,17 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME tipo_pila,anon,mes2 AFTER FIELD mes2 SELECT fecha_corte INTO fecha1 FROM prdtable WHERE mes = mes2 AND ano = anon AFTER INPUT EXIT INPUT END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET numero_msg = FALSE RETURN END IF DISPLAY "Buscando Informacion... Espere Por Favor " AT 19,14 DECLARE busca CURSOR FOR SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,SUM(b.cantidad), AVG(b.precio),c.porc_desc ," " FROM prdtable a,vetb00003 b,vetb00002 c WHERE a.mes = mes2 AND a.ano = anon AND (c.cod_cia = tipo_pila) AND (c.ventas = "1") AND (b.factura = c.factura ) AND (c.fecha_factura BETWEEN a.fecha_inicio AND a.fecha_corte) AND c.status_t IS NULL GROUP BY 1,2,3,4,7,8 START REPORT reporte_35 TO "C:\\archivo" START REPORT reporte_a35 TO "C:\\archivo" DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) FOREACH BUSCA INTO prt_datos.* LET bruto = 0 LET monto_desc = 0 LET neto = 0 LET valor = 0 LET gana_pierde = 0 LET costo = 0 LET codigo = prt_datos.nomen CLIPPED IF tipo_pila = 1 THEN SELECT MAX(a.fecha_lq) INTO fecha FROM cttb00036 a WHERE a.fecha_lq <= fecha1 AND a.ventas = 1 AND a.cod_n = prt_datos.cod_n AND a.cod_grupo = prt_datos.cod_grupo AND a.cod_tipo = prt_datos.cod_tipo AND a.cod_sec = prt_datos.cod_sec SELECT UNIQUE a.costo_lq INTO costo FROM cttb00036 a WHERE a.ventas = 1 AND a.cod_n = prt_datos.cod_n AND a.cod_grupo = prt_datos.cod_grupo AND a.cod_tipo = prt_datos.cod_tipo AND a.cod_sec = prt_datos.cod_sec AND a.fecha_lq = fecha ELSE SELECT MAX(a.fecha_lq) INTO fecha FROM cttb00013 a WHERE a.fecha_lq <= fecha1 AND a.cod_n = prt_datos.cod_n AND a.cod_grupo = prt_datos.cod_grupo AND a.cod_tipo = prt_datos.cod_tipo AND a.cod_sec = prt_datos.cod_sec SELECT AVG(a.costo_lq) INTO costo FROM cttb00013 a WHERE a.cod_n = prt_datos.cod_n AND a.cod_grupo = prt_datos.cod_grupo AND a.cod_tipo = prt_datos.cod_tipo AND a.cod_sec = prt_datos.cod_sec AND a.fecha_lq = fecha END IF LET c_desc = prt_datos.porc_desc LET bruto = prt_Datos.cantidad * prt_Datos.precio LET monto_desc = bruto * (prt_datos.porc_desc/100) LET neto = bruto - monto_desc LET valor = prt_datos.cantidad * costo LET gana_pierde = neto - valor OUTPUT TO REPORT reporte_35(prt_datos.*,codigo,c_desc,bruto, monto_desc,neto,valor,costo,gana_pierde) OUTPUT TO REPORT reporte_a35(prt_datos.*,codigo,c_desc,bruto, monto_desc,neto,valor,costo,gana_pierde) END FOREACH FINISH REPORT reporte_35 FINISH REPORT reporte_a35 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT reporte_35(x,x_codigo,x_desc,xbruto,xmonto_desc,xneto,xvalor,xcosto, xgana_pierde) DEFINE x RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad INTEGER, precio DECIMAL(8,2), porc_desc DECIMAL(8,2), nomen CHAR(1) END RECORD, xbruto,xvalor,xmonto_desc,xneto,xgana_pierde DECIMAL(12,2), xcosto DECIMAL(8,4) 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), nombre_pto CHAR(30), x_codigo CHAR(7), x_desc DECIMAL(8,2), nombre_mes1,nombre_mes2 CHAR(15) OUTPUT TOP MARGIN 0 LEFT MARGIN 5 BOTTOM MARGIN 2 ORDER BY x_codigo,x_Desc 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 18 LET hora = time SELECT descrip INTO nombre_mes2 FROM mestable WHERE mes = mes2 LET lj = (165 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT comp_on,negrillas_on PRINT COLUMN 1, "veprrp035", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 158, "Pag. ",pageno using "###" PRINT COLUMN 60, " Sistema de Ventas ", COLUMN 158, today using "dd/mm/yy" PRINT COLUMN 58, "ESTRATIFICACION DE VENTAS POR TIPOS DE DESCUENTOS", COLUMN 161, hora PRINT COLUMN 1, "Al Mes De ",nombre_mes2 CLIPPED, " DEL ",anon USING "####" SKIP 1 LINES IF tipo_pila = 1 THEN PRINT COLUMN 1, "Productos Locales" ELSE PRINT COLUMN 1, "Productos Compra Y Venta" END IF PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "---------------------------------------------------", "------------------------------------" PRINT COLUMN 66, "Precio", COLUMN 93, "Valor", COLUMN 116, "Monto", COLUMN 132, "Valor", COLUMN 143, "Ultimo", COLUMN 158, "Valor", COLUMN 171, "Ganancia O" PRINT COLUMN 1, " ARTICULOS ", COLUMN 50, "Cantidad", COLUMN 66, "Unitario", COLUMN 93, "Bruto", COLUMN 100, "% Desc.", COLUMN 116, "Desc.", COLUMN 132, "Neto", COLUMN 143, "Costo", COLUMN 158, "Costeo", COLUMN 171, "Perdida" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "---------------------------------------------------", "------------------------------------" PRINT negrillas_off ON EVERY ROW SELECT a.descrip_esp INTO nombre_pto 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 PRINT COLUMN 1, x.cod_n USING "&","-", x.cod_grupo USING "&","-", x.cod_tipo USING "&&","-", x.cod_sec USING "&&&"," ", nombre_pto, COLUMN 45, x.cantidad USING "##,###,###.##", COLUMN 65, x.precio USING "##,###.##", COLUMN 85, xbruto USING "##,###,###.##", COLUMN 100, x.porc_desc USING "###.##%", COLUMN 110, xmonto_desc USING "##,###,###.##", COLUMN 125, xneto USING "##,###,###.##", COLUMN 135, xcosto USING "#,###.####", COLUMN 150, xvalor USING "##,###,###.##", COLUMN 165, xgana_pierde USING "(((,(((,(##.##)" AFTER GROUP OF x_desc PRINT negrillas_on PRINT COLUMN 1, "SUB-TOTAL DESCUENTO ", COLUMN 45, GROUP SUM(x.cantidad) USING "##,###,###.##", COLUMN 85, GROUP SUM(xbruto) USING "##,###,###.##", COLUMN 110, GROUP SUM(xmonto_desc) USING "##,###,###.##", COLUMN 125, GROUP SUM(xneto) USING "##,###,###.##", #COLUMN 135, GROUP SUM(xcosto) USING "#,###.####", COLUMN 150, GROUP SUM(xvalor) USING "##,###,###.##", COLUMN 165, GROUP SUM(xgana_pierde) USING "(((,(((,(##.##)" PRINT negrillas_off AFTER GROUP OF x_codigo PRINT negrillas_on PRINT COLUMN 1, "TOTAL ",x.nomen, COLUMN 45, GROUP SUM(x.cantidad) USING "##,###,###.##", #COLUMN 65, x.precio USING "##,###.##", COLUMN 85, GROUP SUM(xbruto) USING "##,###,###.##", #COLUMN 100, x.porc_desc USING "###.##%", COLUMN 110, GROUP SUM(xmonto_desc) USING "##,###,###.##", COLUMN 125, GROUP SUM(xneto) USING "##,###,###.##", COLUMN 150, GROUP SUM(xvalor) USING "##,###,###.##", COLUMN 165, GROUP SUM(xgana_pierde) USING "(((,(((,(##.##)" PRINT negrillas_off ON LAST ROW PRINT negrillas_on LET sneto = SUM(xneto) LET spierde = SUM(xgana_pierde) PRINT COLUMN 1, "TOTAL GENERAL ", COLUMN 45, SUM(x.cantidad) USING "##,###,###.##", COLUMN 85, SUM(xbruto) USING "##,###,###.##", COLUMN 110, SUM(xmonto_desc) USING "##,###,###.##", COLUMN 125, SUM(xneto) USING "##,###,###.##", COLUMN 150, SUM(xvalor) USING "##,###,###.##", COLUMN 165, SUM(xgana_pierde) USING "(((,(((,(##.##)" PRINT negrillas_off END REPORT REPORT reporte_a35(x,x_codigo,x_desc,xbruto,xmonto_desc,xneto,xvalor,xcosto, xgana_pierde) DEFINE x RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad INTEGER, precio DECIMAL(8,2), porc_desc DECIMAL(8,2), nomen CHAR(1) END RECORD, xbruto,xvalor,xmonto_desc,xneto,xgana_pierde DECIMAL(12,2), xcosto DECIMAL(8,4) 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), nombre_pto CHAR(30), x_codigo CHAR(7), x_desc DECIMAL(8,2), nombre_mes1,nombre_mes2 CHAR(15) OUTPUT TOP MARGIN 0 LEFT MARGIN 5 BOTTOM MARGIN 2 ORDER BY x_Desc 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 18 LET hora = time SELECT descrip INTO nombre_mes2 FROM mestable WHERE mes = mes2 PRINT comp_on,negrillas_on PRINT COLUMN 1, "veprrp035", COLUMN 60, "E L E C T R O D O M E S T I C O S J U V I A R", COLUMN 158, "Pag. ",pageno using "###" PRINT COLUMN 60, " Sistema de Ventas ", COLUMN 158, today using "dd/mm/yy" PRINT COLUMN 58, "ESTRATIFICACION DE VENTAS POR TIPOS DE DESCUENTOS", COLUMN 161, hora PRINT COLUMN 1, "Al Mes De ",nombre_mes2 CLIPPED, " DEL ",anon USING "####" SKIP 1 LINES IF tipo_pila = 1 THEN PRINT COLUMN 1, "Productos Locales" ELSE PRINT COLUMN 1, "Productos Compra Y Venta" END IF PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "---------------------------------------------------", "---------------------------------------------------" PRINT COLUMN 66, "Precio", COLUMN 83, "Valor", COLUMN 106, "Monto", COLUMN 122, "Valor", COLUMN 137, "Porc.", COLUMN 157, "Valor", COLUMN 171, "Ganancia O", COLUMN 185, "Porc", COLUMN 194, "Porc" PRINT COLUMN 1, " DESCUENTOS", COLUMN 50, "Cantidad", COLUMN 66, "Unitario", COLUMN 83, "Bruto", COLUMN 106, "Desc.", COLUMN 122, "Neto", COLUMN 137, "Neto", COLUMN 157, "Costeo", COLUMN 171, "Perdida", COLUMN 185, "G o P", COLUMN 194, "G. Total" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "---------------------------------------------------", "---------------------------------------------------" PRINT negrillas_off AFTER GROUP OF x_desc PRINT negrillas_on PRINT COLUMN 1, x_desc CLIPPED,"%", COLUMN 45, GROUP SUM(x.cantidad) USING "##,###,###.##", COLUMN 75, GROUP SUM(xbruto) USING "##,###,###.##", COLUMN 100, GROUP SUM(xmonto_desc) USING "##,###,###.##", COLUMN 115, GROUP SUM(xneto) USING "##,###,###.##", COLUMN 135, (GROUP SUM(xneto)/sneto) * 100 USING "###.##%", COLUMN 150, GROUP SUM(xvalor) USING "##,###,###.##", COLUMN 165, GROUP SUM(xgana_pierde) USING "(((,(((,(##.##)", COLUMN 183, (GROUP SUM(xgana_pierde) /spierde) * 100 USING "((((.##%)" , COLUMN 193, (GROUP SUM(xgana_pierde)/ GROUP SUM(xneto)) *100 USING "((((.##%)" PRINT negrillas_off ON LAST ROW PRINT negrillas_on PRINT COLUMN 45, "-------------", COLUMN 75, "-------------", COLUMN 100, "-------------", COLUMN 115, "-------------", COLUMN 134, "-------", COLUMN 150, "-------------", COLUMN 165, "---------------", COLUMN 182, "---------" PRINT COLUMN 1, "TOTAL GENERAL ", COLUMN 45, SUM(x.cantidad) USING "##,###,###.##", COLUMN 75, SUM(xbruto) USING "##,###,###.##", COLUMN 100, SUM(xmonto_desc) USING "##,###,###.##", COLUMN 115, SUM(xneto) USING "##,###,###.##", COLUMN 134, (SUM(xneto)/sneto) * 100 USING "###.##%", COLUMN 150, SUM(xvalor) USING "##,###,###.##", COLUMN 165, SUM(xgana_pierde) USING "(((,(((,(##.##)", COLUMN 182, (SUM(xgana_pierde) /spierde) * 100 USING "((((.##%)" PRINT COLUMN 45, "=============", COLUMN 75, "=============", COLUMN 100, "=============", COLUMN 115, "=============", COLUMN 134, "=======", COLUMN 150, "=============", COLUMN 165, "===============", COLUMN 182, "=========" PRINT negrillas_off END REPORT