419 lines
13 KiB
Plaintext
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
|