{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP116 OBJETIVO : Analisis Beneficios Por Productos PROGRAMADOR : Ing. Juan F. Soto FECHA REALIZACION : SEPTIEMBRE 10, 1997. ------------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" DEFINE nom_cli CHAR(30) DEFINE fecha_inicial,fecha_final DATE FUNCTION veprrp116() DEFINE p_costo DECIMAL(12,3) DEFINE ventas RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, monto_desc DECIMAL(10,2), cod_n LIKE vetb00003.cod_n, cod_grupo LIKE vetb00003.cod_n, cod_tipo LIKE vetb00003.cod_n, cod_sec LIKE vetb00003.cod_n, cantidad LIKE vetb00003.cantidad, precio LIKE vetb00003.precio, costo DECIMAL(12,3), neto,bruto,vcosto,descuento DECIMAL(12,2), codigo1 CHAR(7),codigo CHAR(6) END RECORD OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM vefmrp116 FROM "vefmrp116" DISPLAY FORM vefmrp116 CALL pantalla() DISPLAY "veprrp116" AT 4,3 DISPLAY "Analisis Beneficios Por Cliente y Por Producto" AT 6,21 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME fecha_inicial,fecha_final ON KEY (F2) RUN "copy pantalla.bat impresion.bat" DISPLAY "ACTIVACION REPORTE POR WORDPAD" AT 20,15 ATTRIBUTE(RED) BEFORE FIELD fecha_final LET fecha_final = today AFTER FIELD fecha_final IF fecha_final is null THEN LET numero_msg = 16 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 EXIT INPUT END INPUT CONSTRUCT BY NAME criterio ON b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec ON KEY (F2) RUN "copy pantalla.bat impresion.bat" DISPLAY "ACTIVACION REPORTE POR WORDPAD" AT 20,15 ATTRIBUTE(RED) AFTER CONSTRUCT EXIT CONSTRUCT END CONSTRUCT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF # Busca las ventas locales para el rango de fechas especificado LET selec = "SELECT a.tipo_cliente,a.sec_cliente, SUM(a.monto_desc),", " b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,SUM(b.cantidad), ", " AVG(b.precio)", " FROM vetb00002 a,vetb00003 b ", " WHERE a.factura = b.factura AND ",criterio CLIPPED," AND ", " a.fecha_factura BETWEEN '",fecha_inicial,"' AND '", fecha_final, "' AND a.status_t IS NULL GROUP BY 1,2,4,5,6,7 ORDER BY 1,2,4,5,6,7 " 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_b TO "C:\\archivo" DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) 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.bruto = ventas.cantidad * ventas.precio LET ventas.descuento = ventas.monto_desc LET ventas.neto = ventas.bruto - ventas.descuento LET ventas.codigo = ventas.tipo_cliente USING "&&", ventas.sec_cliente USING "&&&&" LET ventas.codigo1 = ventas.cod_n USING "&", ventas.cod_grupo USING "&", ventas.cod_tipo USING "&&", ventas.cod_sec USING "&&&" LET p_costo = 0 SELECT a.precio INTO p_costo FROM vetb00025 a WHERE a.cod_n = ventas.cod_n AND a.cod_grupo = ventas.cod_grupo AND a.cod_tipo = ventas.cod_tipo AND a.cod_sec = ventas.cod_sec AND a.ventas = 1 AND a.sec_cliente IS NULL AND a.tipo_cliente IS NULL AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET STATUS = 0 END IF LET ventas.costo = p_costo LET ventas.vcosto = ventas.costo * ventas.cantidad display ventas.codigo1," ",ventas.costo at 18,1 OUTPUT TO REPORT ventas_b(ventas.*) END FOREACH FINISH REPORT ventas_b CLEAR SCREEN RUN "impresion C:\\archivo" RUN "copy printer2.bat impresion.bat" END FUNCTION REPORT ventas_b(x) DEFINE x RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, monto_desc DECIMAL(10,2), cod_n LIKE vetb00003.cod_n, cod_grupo LIKE vetb00003.cod_n, cod_tipo LIKE vetb00003.cod_n, cod_sec LIKE vetb00003.cod_n, cantidad LIKE vetb00003.cantidad, precio LIKE vetb00003.precio, costo DECIMAL(12,3), neto,bruto,vcosto,descuento DECIMAL(12,2), codigo1 CHAR(7),codigo CHAR(6) END RECORD 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 normall CHAR(3) DEFINE comprimido CHAR(3) DEFINE hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.codigo,x.codigo1 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 = (148 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, doce,comp_on PRINT COLUMN 1, "veprrp116", 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, " Analisis Margenes Beneficios Por Cliente", COLUMN 145, hora PRINT COLUMN 1, "Del ", fecha_inicial USING "dd/mm/yy"," Al ", fecha_final using "dd/mm/yy" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------------" PRINT COLUMN 108, "STD Mas", COLUMN 126, "STD Mas", COLUMN 151, "Margen " PRINT COLUMN 1, "Producto", COLUMN 45, "Cantidad", COLUMN 58, "Precio", COLUMN 68, "Monto RD$", COLUMN 81, "Descuento", COLUMN 97, "Neto RD$", COLUMN 108, "Itbi", COLUMN 126, "Itbi ", COLUMN 151, "Benef." PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "--------------------------------------------------------" # , negrillas_off BEFORE GROUP OF x.codigo SKIP 1 LINE SELECT a.nombre INTO nom_cli FROM vetb00004 a WHERE a.tipo_cliente=x.tipo_cliente and a.sec_cliente=x.sec_cliente and a.status_t is null IF STATUS = NOTFOUND THEN LET STATUS = 0 END IF IF nom_cli IS NULL THEN LET nom_cli = "Cliente no existe. Verifique" END IF PRINT COLUMN 1, negrillas_on,"Cliente: ","(",x.tipo_cliente USING "&&","-", x.sec_cliente USING "&&&&",")",nom_cli,negrillas_off SKIP 1 LINE ON EVERY ROW SELECT a.descrip_esp INTO descripcion 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 "&&&", " ",descripcion[1,30], COLUMN 45, x.cantidad USING "##,###.##", COLUMN 55, x.precio using "##,###.##", COLUMN 65, x.bruto using "##,###,###.##", COLUMN 80, x.descuento using "###,###.##", COLUMN 92, x.neto using "##,###,###.##", COLUMN 106, x.costo using "##,###.##", COLUMN 122, x.vcosto using "###,###.##", COLUMN 143, x.neto - x.vcosto using "###,###,###.##" ON LAST ROW PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" , "--------------------------------------------------------" PRINT COLUMN 33, "Total General Ventas ---> ", COLUMN 65, SUM(x.bruto) using "##,###,###.##", COLUMN 80, SUM(x.descuento) using "###,###.##", COLUMN 92, SUM(x.neto) using "##,###,###.##", COLUMN 106, SUM(x.costo) using "###,###.##", COLUMN 120, SUM(x.vcosto) using "#,###,###.##", COLUMN 143, SUM(x.neto - x.vcosto) using "###,###,###.##" PRINT normall END REPORT