{ -------------------------------------------------------------------------------- PROGRAMA : VEPRRP033 DESCRIPCION : Reporte de Presupuesto de Ventas (Cantidad y Valor) PROGRAMADOR : Tadeo Alberto Ferreras F. FECHA : Septiembre 13, 1995 -------------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" DEFINE p_ano,p_mes INTEGER DEFINE decide CHAR(1) DEFINE fecha1,fecha2 DATE DEFINE nombre_mes ARRAY[12] OF CHAR(13) DEFINE cantidad1 ARRAY[12] OF DECIMAL(12,2) FUNCTION veprrp033() DEFINE reg_33 RECORD ventas CHAR(1), mes INTEGER, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, nomenclatura CHAR(15), cantidad DECIMAL(12,2) END RECORD DEFINE pilas CHAR(10) DEFINE salir CHAR(1) DEFINE selec1,selec2 CHAR(1000) DEFINE idx_1,idx_2,j,engano SMALLINT # Variables para hacer calculo de variacion en el material DEFINE total_m,total_l,total_g,total_1,total_2,total_3 DECIMAL(12,3) OPTIONS FORM LINE 9, ERROR LINE 24 CALL pantalla() DISPLAY "veprrp033" AT 4,3 DISPLAY "Validacion Presupuesto de Ventas" AT 6,24 OPEN FORM vefmrp033 FROM "vefmrp033" DISPLAY FORM vefmrp033 LET tipo_papel = 2 CALL msgrp000(tipo_papel) # Entrada del mes del reporte y el ano, valores dados en el reporte INPUT BY NAME p_ano,decide AFTER FIELD p_ano IF p_ano is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD p_ano END IF AFTER FIELD decide IF decide is null THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD decide END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CONSTRUCT criterio ON a.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec FROM ventas,cod_n,cod_grupo,cod_tipo,cod_sec IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET p_mes = 12 # Seleccion de busqueda de la venta del mes especificado IF decide = "C" THEN LET selec1 = "SELECT a.ventas,a.mes,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ", " c.nomenclatura,a.cantidad/1000 ", "FROM vetb00017 a, iptb00002 c ", "WHERE a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and ", " a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec and ", " a.ano=? AND mes<=? and a.status_t IS NULL AND ",criterio clipped ELSE LET selec1 = "SELECT a.ventas,a.mes,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ", " c.nomenclatura,a.valor/1000 ", "FROM vetb00017 a, iptb00002 c ", "WHERE a.cod_n = c.cod_n and a.cod_grupo = c.cod_grupo and ", " a.cod_tipo = c.cod_tipo and a.cod_sec = c.cod_sec and ", " a.ano=? AND mes<=? and a.status_t IS NULL AND ",criterio clipped END IF DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE comando FROM selec1 DECLARE busca1 SCROLL CURSOR FOR comando OPEN busca1 USING p_ano,p_mes DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE(REVERSE) START REPORT reporte_33 TO "C:\\archivo" WHILE STATUS != NOTFOUND FETCH busca1 INTO reg_33.* IF STATUS = NOTFOUND THEN EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF reg_33.cantidad IS NULL THEN LET reg_33.cantidad = 0 END IF OUTPUT TO REPORT reporte_33(reg_33.*) END WHILE FINISH REPORT reporte_33 RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT reporte_33(x) DEFINE x RECORD ventas CHAR(1), mes INTEGER, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, nomenclatura CHAR(15), cantidad DECIMAL(12,2) END RECORD DEFINE e,i,p,k,o,engana1,l SMALLINT DEFINE negrillas_on,negrillas_off,normal,comp_on CHAR(3) DEFINE imprime CHAR(1) DEFINE t_ventas,t_porc_m,t_porc_l,t_porc_g,t_costo_mat_real,t_costo_lab_real, t_costo_primo_real,t_costo_primo_unit,t_costo_unit_mat, t_gasto_ind_real,t_costos_totales,t_costo_unit_var, t_costo_unit_fijo,t_costo_unit_total DECIMAL (12,3) OUTPUT TOP MARGIN 3 ORDER BY x.ventas,x.nomenclatura,x.cod_n,x.cod_grupo,x.cod_tipo, x.cod_sec,x.mes FORMAT PAGE HEADER LET comp_on = ASCII 15 LET negrillas_on = ASCII 27,ASCII 69 LET negrillas_off = ASCII 27,ASCII 70 LET normal = ASCII 18 ### Asignando valores a los meses LET nombre_mes[01] = " ENERO" LET nombre_mes[02] = " FEBRERO" LET nombre_mes[03] = " MARZO" LET nombre_mes[04] = " ABRIL" LET nombre_mes[05] = " MAYO" LET nombre_mes[06] = " JUNIO" LET nombre_mes[07] = " JULIO" LET nombre_mes[08] = " AGOSTO" LET nombre_mes[09] = " SEPTIEMBRE" LET nombre_mes[10] = " OCTUBRE" LET nombre_mes[11] = " NOVIEMBRE" LET nombre_mes[12] = " DICIEMBRE" LET l = 15 FOR i = 1 TO p_mes LET l = l + 15 END FOR LET l = l + 15 LET lj = (l - LENGTH(p_companias.nombre CLIPPED))/2 PRINT comp_on,negrillas_on PRINT COLUMN 1, "veprrp033", COLUMN lj, p_companias.nombre CLIPPED, COLUMN l-7, "Pag. ", PAGENO USING "###" PRINT COLUMN (l-46)/2, " SISTEMA DE VENTAS", COLUMN l-7, TODAY USING "dd/mm/yy" PRINT COLUMN (l-46)/2, " VALIDACION DE PRESUPUESTO DE VENTAS AL ", p_ano USING "&&&&", COLUMN l-7, TIME IF decide = "C" THEN PRINT COLUMN (l-46)/2, " EXPRESADO EN CANTIDADES Y EN MILES (1000) " ELSE PRINT COLUMN (l-46)/2, " EXPRESADO EN VALORES RD$ Y EN MILES (1000)" END IF SKIP 1 LINE PRINT COLUMN 1,"---------------"; LET l = 15 FOR i = 1 TO p_mes PRINT COLUMN l, "---------------"; LET l = l + 15 END FOR PRINT COLUMN l, "---------------" PRINT COLUMN 1, "PRODUCTO"; LET l = 15 FOR i = 1 TO p_mes PRINT COLUMN l, nombre_mes[i]; LET l = l + 15 END FOR PRINT COLUMN l, " TOTAL" PRINT COLUMN 1,"---------------"; LET l = 15 FOR i = 1 TO p_mes PRINT COLUMN l, "---------------"; LET l = l + 15 END FOR PRINT COLUMN l, "---------------" PRINT negrillas_off BEFORE GROUP OF x.ventas IF x.ventas = "1" THEN PRINT negrillas_on,"PRESUPUESTOS LOCALES" ELSE PRINT negrillas_on,"PRESUPUESTOS DE EXPORTACION" END IF PRINT negrillas_off AFTER GROUP OF x.nomenclatura PRINT negrillas_off PRINT x.nomenclatura CLIPPED; LET l = 15 FOR i = 1 TO p_mes CASE WHEN i = 1 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 1 USING "##,###,###.##"; EXIT CASE WHEN i = 2 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 2 USING "##,###,###.##"; EXIT CASE WHEN i = 3 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 3 USING "##,###,###.##"; EXIT CASE WHEN i = 4 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 4 USING "##,###,###.##"; EXIT CASE WHEN i = 5 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 5 USING "##,###,###.##"; EXIT CASE WHEN i = 6 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 6 USING "##,###,###.##"; EXIT CASE WHEN i = 7 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 7 USING "##,###,###.##"; EXIT CASE WHEN i = 8 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 8 USING "##,###,###.##"; EXIT CASE WHEN i = 9 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 9 USING "##,###,###.##"; EXIT CASE WHEN i = 10 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 10 USING "##,###,###.##"; EXIT CASE WHEN i = 11 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 11 USING "##,###,###.##"; EXIT CASE WHEN i = 12 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 12 USING "##,###,###.##"; EXIT CASE END CASE LET l = l + 15 END FOR PRINT COLUMN l, GROUP SUM(x.cantidad) USING "##,###,###.##" AFTER GROUP OF x.ventas PRINT negrillas_on PRINT "SUB-TOTAL "; LET l = 15 FOR i = 1 TO p_mes CASE WHEN i = 1 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 1 USING "##,###,###.##"; EXIT CASE WHEN i = 2 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 2 USING "##,###,###.##"; EXIT CASE WHEN i = 3 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 3 USING "##,###,###.##"; EXIT CASE WHEN i = 4 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 4 USING "##,###,###.##"; EXIT CASE WHEN i = 5 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 5 USING "##,###,###.##"; EXIT CASE WHEN i = 6 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 6 USING "##,###,###.##"; EXIT CASE WHEN i = 7 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 7 USING "##,###,###.##"; EXIT CASE WHEN i = 8 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 8 USING "##,###,###.##"; EXIT CASE WHEN i = 9 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 9 USING "##,###,###.##"; EXIT CASE WHEN i = 10 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 10 USING "##,###,###.##"; EXIT CASE WHEN i = 11 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 11 USING "##,###,###.##"; EXIT CASE WHEN i = 12 PRINT COLUMN l, GROUP SUM(x.cantidad) WHERE x.mes = 12 USING "##,###,###.##"; EXIT CASE END CASE LET l = l + 15 END FOR PRINT COLUMN l, GROUP SUM(x.cantidad) USING "##,###,###.##" PRINT negrillas_off ON LAST ROW PRINT negrillas_on PRINT "TOTAL "; LET l = 15 FOR i = 1 TO p_mes CASE WHEN i = 1 PRINT COLUMN l, SUM(x.cantidad) WHERE x.mes = 1 USING "##,###,###.##"; EXIT CASE WHEN i = 2 PRINT COLUMN l, SUM(x.cantidad) WHERE x.mes = 2 USING "##,###,###.##"; EXIT CASE WHEN i = 3 PRINT COLUMN l, SUM(x.cantidad) WHERE x.mes = 3 USING "##,###,###.##"; EXIT CASE WHEN i = 4 PRINT COLUMN l, SUM(x.cantidad) WHERE x.mes = 4 USING "##,###,###.##"; EXIT CASE WHEN i = 5 PRINT COLUMN l, SUM(x.cantidad) WHERE x.mes = 5 USING "##,###,###.##"; EXIT CASE WHEN i = 6 PRINT COLUMN l, SUM(x.cantidad) WHERE x.mes = 6 USING "##,###,###.##"; EXIT CASE WHEN i = 7 PRINT COLUMN l, SUM(x.cantidad) WHERE x.mes = 7 USING "##,###,###.##"; EXIT CASE WHEN i = 8 PRINT COLUMN l, SUM(x.cantidad) WHERE x.mes = 8 USING "##,###,###.##"; EXIT CASE WHEN i = 9 PRINT COLUMN l, SUM(x.cantidad) WHERE x.mes = 9 USING "##,###,###.##"; EXIT CASE WHEN i = 10 PRINT COLUMN l, SUM(x.cantidad) WHERE x.mes = 10 USING "##,###,###.##"; EXIT CASE WHEN i = 11 PRINT COLUMN l, SUM(x.cantidad) WHERE x.mes = 11 USING "##,###,###.##"; EXIT CASE WHEN i = 12 PRINT COLUMN l, SUM(x.cantidad) WHERE x.mes = 12 USING "##,###,###.##"; EXIT CASE END CASE LET l = l + 15 END FOR PRINT COLUMN l, SUM(x.cantidad) USING "##,###,###.##" PRINT negrillas_off,normal END REPORT