{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP037 OBJETIVO : Estado de Ganancias y Perdidas por Cliente y Pila PROGRAMADOR : Abner Montalvo FECHA REALIZACION : Junio 2, 1997 ------------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" DEFINE secuencia,cia,mes_ini,mes_fin,ano_ini,ano_fin SMALLINT DEFINE salir,salir2 CHAR(1) DEFINE tipo CHAR(2) DEFINE sec CHAR(4) DEFINE fecha, fecha_corte_mes DATE DEFINE valor_inicial DECIMAL(12,2) FUNCTION veprrp037() DEFINE clientes RECORD tipo_cliente SMALLINT, sec_cliente INTEGER, cantidad INTEGER, valor DECIMAL(12,2), cliente CHAR(10) END RECORD DEFINE factura RECORD tipo_cliente SMALLINT, sec_cliente INTEGER, nombre CHAR(30), nomenclatura CHAR(10), cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad INTEGER, precio DECIMAL(12,2), porc_desc DECIMAL(8,2), descripcion CHAR(30), cia SMALLINT, mes_factura SMALLINT, costo_lq DECIMAL(12,4), cliente CHAR(10) END RECORD # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM vefmrp037 FROM "vefmrp037" DISPLAY FORM vefmrp037 CALL pantalla() DISPLAY "veprrp037" AT 4,3 DISPLAY "Resumen Estado de Ganancias y Perdidas por Cliente y Pila" AT 6,11 LET tipo_papel = 1 CALL msgrp000(tipo_papel) LET secuencia = 0 INPUT BY NAME ano_ini,mes_ini,mes_fin,valor_inicial IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET numero_msg = FALSE RETURN END IF # Busca Los Movimientos de las Facturas con su factura # CONSTRUCT criterio ON a.tipo_cliente,a.sec_cliente # FROM tipo_cliente1,sec_cliente1 # IF int_flag THEN # LET numero_msg = 2 # CALL msg(numero_msg) # LET numero_msg = FALSE # RETURN # END IF LET selec3 = "SELECT a.tipo_cliente,a.sec_cliente, ", " SUM(c.cantidad),SUM(c.cantidad * c.precio) ", "FROM vetb00002 a, vetb00003 c ", "WHERE a.factura = c.factura AND ", " a.cod_cia = c.cod_cia AND ", " a.ventas = '1' AND ", " a.status_t IS NULL AND ", " a.fecha_factura IS NOT NULL AND ", " MONTH(a.fecha_factura) BETWEEN ? AND ? AND ", " YEAR(a.fecha_factura) = ? AND ", " a.tipo_cliente IS NOT NULL AND ", " a.sec_cliente IS NOT NULL ", # criterio CLIPPED, " GROUP BY 1,2 ", " HAVING SUM(c.cantidad * c.precio) >= ? ", " ORDER BY 4 DESC " LET selec = "SELECT a.tipo_cliente,a.sec_cliente,b.nombre,' ', ", " c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,SUM(c.cantidad), ", " c.precio,a.porc_desc,d.descrip_esp,c.cod_cia, ", " MONTH(a.fecha_factura) ", "FROM iptb00002 d, vetb00002 a, vetb00003 c, OUTER vetb00004 b ", "WHERE a.sec_cliente = b.sec_cliente AND ", " a.factura = c.factura AND ", " a.cod_cia = c.cod_cia AND ", " a.ventas = '1' AND ", " a.status_t IS NULL AND ", " a.fecha_factura IS NOT NULL AND ", " MONTH(a.fecha_factura) BETWEEN ? AND ? AND ", " YEAR(a.fecha_factura) = ? AND ", " a.sec_cliente IS NOT NULL AND ", " b.sec_cliente IS NOT NULL AND ", " a.tipo_cliente = b.tipo_cliente AND ", " c.cod_n = d.cod_n AND ", " c.cod_grupo = d.cod_grupo AND ", " c.cod_tipo = d.cod_tipo AND ", " c.cod_sec = d.cod_sec AND ", # criterio CLIPPED, " GROUP BY 1,2,3,4,5,6,7,8,10,11,12,13,14 ", " ORDER BY 13,1,2 " # " ORDER BY 1,2,13,5,6,7,8 " DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE busca_clientes FROM selec3 DECLARE clientes_curs CURSOR FOR busca_clientes OPEN clientes_curs USING mes_ini,mes_fin,ano_ini,valor_inicial PREPARE busca_movi FROM selec DECLARE movi_curs SCROLL CURSOR FOR busca_movi OPEN movi_curs USING mes_ini,mes_fin,ano_ini START REPORT reporte_37 TO "C:\\archivo" DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) LET salir = "N" LET salir2 = "N" WHILE salir != "S" FETCH clientes_curs INTO clientes.* IF STATUS = NOTFOUND THEN LET salir = "S" 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 tipo = clientes.tipo_cliente USING "&&" LET sec = clientes.sec_cliente USING "&&&&" LET clientes.cliente = tipo,sec LET idx = 1 LET salir2 = "N" WHILE salir2 != "S" FETCH ABSOLUTE idx movi_curs INTO factura.* IF STATUS = NOTFOUND THEN 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 tipo = factura.tipo_cliente USING "&&" LET sec = factura.sec_cliente USING "&&&&" LET factura.cliente = tipo,sec IF clientes.cliente = factura.cliente THEN SELECT fecha_corte INTO fecha_corte_mes FROM prdtable WHERE ano = ano_ini AND mes = factura.mes_factura IF factura.cia = 01 THEN SELECT MAX(fecha_lq) INTO fecha FROM cttb00036 WHERE fecha_lq <= fecha_corte_mes and cod_n = factura.cod_n AND cod_grupo = factura.cod_grupo AND cod_tipo = factura.cod_tipo AND cod_sec = factura.cod_sec AND status_t IS NULL ELSE SELECT MAX(fecha_lq) INTO fecha FROM cttb00013 WHERE fecha_lq <= fecha_corte_mes and cod_n = factura.cod_n AND cod_grupo = factura.cod_grupo AND cod_tipo = factura.cod_tipo AND cod_sec = factura.cod_sec AND status_t IS NULL END IF IF factura.cia = 01 THEN SELECT AVG(costo_lq) INTO factura.costo_lq FROM cttb00036 WHERE cod_n = factura.cod_n AND cod_grupo = factura.cod_grupo AND cod_tipo = factura.cod_tipo AND cod_sec = factura.cod_sec AND fecha_lq = fecha AND status_t IS NULL ELSE SELECT AVG(costo_lq) INTO factura.costo_lq FROM cttb00013 WHERE cod_n = factura.cod_n AND cod_grupo = factura.cod_grupo AND cod_tipo = factura.cod_tipo AND cod_sec = factura.cod_sec AND fecha_lq = fecha AND status_t IS NULL END IF OUTPUT TO REPORT reporte_37(factura.*) END IF LET idx = idx + 1 END WHILE END WHILE FINISH REPORT reporte_37 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT reporte_37(x) DEFINE x RECORD tipo_cliente SMALLINT, sec_cliente INTEGER, nombre CHAR(30), nomenclatura CHAR(10), cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, cantidad INTEGER, precio DECIMAL(12,2), porc_desc DECIMAL(8,2), descripcion CHAR(30), cia SMALLINT, mes_factura SMALLINT, costo_lq DECIMAL(12,4), cliente CHAR(10) 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) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 # ORDER BY x.cliente, x.valor_bruto, x.cia 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 lj = (180 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT comp_on,negrillas_on PRINT COLUMN 1, "veprrp037", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 173, "Pag. ",pageno using "###" PRINT COLUMN 83, " Sistema de Ventas ", COLUMN 173, today using "dd/mm/yy" PRINT COLUMN 77, "Resumen Estado de Ganancias y Perdidas por Cliente y Pila", COLUMN 173, time SKIP 1 LINES PRINT COLUMN 1, "Ventas Brutas desde RD$", valor_inicial USING "<<<,<<<,<##.##", COLUMN 87, "RANKING DEL MES : ", mes_ini using "&&", "/",ano_ini using "&&&&", " AL ", mes_fin using "&&", "/",ano_ini using "&&&&" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------" PRINT COLUMN 1, " ", COLUMN 56, " ", COLUMN 71, " ", COLUMN 88, " Monto", COLUMN 100, " ", COLUMN 117, " Monto", COLUMN 134, " Monto", COLUMN 151, " ", COLUMN 165, " Monto ", COLUMN 182, "Gananc." PRINT COLUMN 1, "Tipo de Producto", COLUMN 56, "Cantidad", COLUMN 71, " ", COLUMN 88, " Bruto", COLUMN 100, " ", COLUMN 117, " Desc.", COLUMN 134, " Neto", COLUMN 151, " ", COLUMN 165, " Costo ", COLUMN 182, "Perdida" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------" PRINT negrillas_off BEFORE GROUP OF x.cliente LET secuencia = secuencia + 1 PRINT COLUMN 1, negrillas_on, secuencia using "<<<<"," ", x.tipo_cliente USING "&&","-", x.sec_cliente USING "&&&&"," ",x.nombre CLIPPED, negrillas_off SKIP 1 LINE AFTER GROUP OF x.cia IF x.cia = 1 THEN PRINT COLUMN 1, " ",x.cia USING "&&"," Productos Locales"; ELSE PRINT COLUMN 1, " ",x.cia USING "&&"," Productos de Compra y Venta"; END IF PRINT COLUMN 50, GROUP SUM(x.cantidad) USING "###,###,###.##", COLUMN 81, GROUP SUM(x.cantidad * x.precio) USING "###,###,###.##", COLUMN 110, GROUP SUM(x.cantidad * x.precio * x.porc_desc / 100) USING "###,###,###.##", COLUMN 126, GROUP SUM((x.cantidad * x.precio) - (x.cantidad * x.precio * x.porc_desc / 100)) USING "###,###,###.##", COLUMN 159, GROUP SUM(x.cantidad * x.costo_lq) USING "###,###,###.##", COLUMN 175, GROUP SUM(((x.cantidad * x.precio) - (x.cantidad * x.precio * x.porc_desc / 100)) - (x.cantidad * x.costo_lq)) USING "(((,(((,(((.##)" AFTER GROUP OF x.cliente SKIP 1 LINE PRINT COLUMN 1, negrillas_on, COLUMN 6, "SUB-TOTAL ",x.tipo_cliente using "&&","-", x.sec_cliente using "&&&&"," ", x.nombre CLIPPED, COLUMN 52, GROUP SUM(x.cantidad) USING "###,###,###.##", COLUMN 83, GROUP SUM(x.cantidad * x.precio) USING "###,###,###.##", COLUMN 112, GROUP SUM(x.cantidad * x.precio * x.porc_desc / 100) USING "###,###,###.##", COLUMN 128, GROUP SUM((x.cantidad * x.precio) - (x.cantidad * x.precio * x.porc_desc / 100)) USING "###,###,###.##", COLUMN 161, GROUP SUM(x.cantidad * x.costo_lq) USING "###,###,###.##", COLUMN 177, GROUP SUM(((x.cantidad * x.precio) - (x.cantidad * x.precio * x.porc_desc / 100)) - (x.cantidad * x.costo_lq)) USING "(((,(((,(((.##)", negrillas_off SKIP 1 LINE ON LAST ROW SKIP 1 LINE PRINT COLUMN 1, negrillas_on, "TOTAL GENERAL", COLUMN 52, SUM(x.cantidad) USING "###,###,###.##", COLUMN 83, SUM(x.cantidad * x.precio) USING "###,###,###.##", COLUMN 112, SUM(x.cantidad * x.precio * x.porc_desc / 100) USING "###,###,###.##", COLUMN 128, SUM((x.cantidad * x.precio) - (x.cantidad * x.precio * x.porc_desc / 100)) USING "###,###,###.##", COLUMN 161, SUM(x.cantidad * x.costo_lq) USING "###,###,###.##", COLUMN 177, SUM(((x.cantidad * x.precio) - (x.cantidad * x.precio * x.porc_desc / 100)) - (x.cantidad * x.costo_lq)) USING "(((,(((,(((.##)", negrillas_off PRINT normal END REPORT