{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP038 OBJETIVO : ESTRATIFICACION DE VENTAS POR TIPO DE DESCUENTOS (MENSUAL) PROGRAMADOR : Juan F. Soto FECHA REALIZACION : Junio 5, 1997. ------------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" DEFINE fecha1,fecha2 DATE DEFINE salir CHAR(1), mes3,mes2 SMALLINT, anon,tipo_pila SMALLINT, fecha DATE, sneto,spierde ARRAY[12] OF DECIMAL(12,2) FUNCTION veprrp038() 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), pmes SMALLINT END RECORD OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21 OPEN FORM vefmrp038 FROM "vefmrp038" DISPLAY FORM vefmrp038 CALL pantalla() DISPLAY "veprrp038" 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,mes3,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 ," ",a.mes FROM prdtable a,vetb00003 b,vetb00002 c WHERE a.mes between mes3 AND 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,9 START REPORT reporte_38 TO "C:\\archivo" START REPORT reporte_a38 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_38(prt_datos.*,codigo,c_desc,bruto, monto_desc,neto,valor,costo,gana_pierde) OUTPUT TO REPORT reporte_a38(prt_datos.*,codigo,c_desc,bruto, monto_desc,neto,valor,costo,gana_pierde) END FOREACH FINISH REPORT reporte_38 FINISH REPORT reporte_a38 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION