Files

419 lines
13 KiB
Plaintext

{
--------------------------------------------------------------------------------
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