493 lines
17 KiB
Plaintext
493 lines
17 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : VEPRRP008
|
|
OBJETIVO : Estadisticas de Ventas por Mes y Ano
|
|
PROGRAMADOR : Lic. Abner Montalvo Zapata
|
|
FECHA REALIZACION : Enero 20, 1993
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "veprgb000.4gl"
|
|
|
|
DEFINE prima_us DECIMAL(8,2)
|
|
DEFINE selec_v CHAR(1000)
|
|
|
|
DEFINE ventas RECORD
|
|
cantidad_vr DECIMAL(12,2),
|
|
valor_vr DECIMAL(14,2),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
mes SMALLINT,
|
|
ano SMALLINT,
|
|
ventas CHAR(1),
|
|
cantidad_pres DECIMAL(12,2),
|
|
valor_pres DECIMAL(14,2),
|
|
codigo CHAR(7)
|
|
END RECORD
|
|
|
|
DEFINE entrada RECORD
|
|
ano SMALLINT,
|
|
mes SMALLINT,
|
|
ventas INTEGER
|
|
END RECORD
|
|
|
|
DEFINE ano_anterior, ano_tras_anterior SMALLINT
|
|
DEFINE idx1,idx2 INTEGER
|
|
|
|
FUNCTION veprrp008()
|
|
|
|
DEFINE select_pt,select_vr,select_vp,select_vap,select_pres CHAR(1000)
|
|
DEFINE idx_pt,idx_vr,idx_vp,idx_vap,idx_pres,mes_inicial,x,venta1,venta2
|
|
SMALLINT
|
|
DEFINE salir_pt,salir_vr,salir_vp,salir_vap,salir_pres,doble_proceso CHAR(1)
|
|
DEFINE mes_proceso, mes_vp, mes_vap CHAR(4)
|
|
|
|
DEFINE pt RECORD
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
descrip_esp CHAR(30)
|
|
END RECORD
|
|
|
|
DEFINE vr RECORD
|
|
cantidad DECIMAL(12,2),
|
|
valor DECIMAL(14,2),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
mes SMALLINT,
|
|
ano CHAR(4),
|
|
ventas CHAR(1)
|
|
END RECORD
|
|
|
|
DEFINE vp RECORD
|
|
cantidad DECIMAL(12,2),
|
|
valor DECIMAL(14,2),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
mes SMALLINT,
|
|
ventas CHAR(1)
|
|
END RECORD
|
|
|
|
DEFINE vap RECORD
|
|
cantidad DECIMAL(12,2),
|
|
valor DECIMAL(14,2),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
mes SMALLINT,
|
|
ventas CHAR(1)
|
|
END RECORD
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21,
|
|
PROMPT LINE 14
|
|
|
|
OPEN FORM vefmrp008 FROM "vefmrp008"
|
|
DISPLAY FORM vefmrp008
|
|
CALL pantalla()
|
|
DISPLAY "veprrp008" AT 4,3
|
|
DISPLAY "Ventas Por Mes Y Ano" AT 6,30
|
|
|
|
LET tipo_papel = 1
|
|
CALL msgrp000(tipo_papel)
|
|
|
|
|
|
INPUT BY NAME entrada.ano,entrada.mes
|
|
ON KEY (F2)
|
|
RUN "copy pantalla.bat impresion.bat"
|
|
DISPLAY "ACTIVACION REPORTE POR WORDPAD" AT 20,15 ATTRIBUTE(RED)
|
|
|
|
AFTER FIELD ano
|
|
IF entrada.ano is null OR entrada.ano = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ano
|
|
END IF
|
|
|
|
AFTER FIELD mes
|
|
IF entrada.mes is null OR entrada.mes = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
IF entrada.ano is null OR entrada.ano = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ano
|
|
END IF
|
|
|
|
IF entrada.mes is null OR entrada.mes = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD mes
|
|
END IF
|
|
|
|
EXIT INPUT
|
|
END INPUT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
LET ano_anterior = entrada.ano - 1
|
|
LET ano_tras_anterior= entrada.ano - 2
|
|
|
|
CONSTRUCT criterio ON b.ventas,c.cod_n, c.cod_grupo, c.cod_tipo, c.cod_sec
|
|
FROM ventas,cod_n, cod_grupo, cod_tipo, cod_sec
|
|
|
|
ON KEY (F2)
|
|
RUN "copy pantalla.bat impresion.bat"
|
|
DISPLAY "ACTIVACION REPORTE POR WORDPAD" AT 20,15 ATTRIBUTE(RED)
|
|
AFTER CONSTRUCT
|
|
EXIT CONSTRUCT
|
|
END CONSTRUCT
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
# Busca los codigos de los productos terminados
|
|
|
|
# Busca las ventas reales del ano actual hasta el mes indicado anteriormente
|
|
|
|
LET select_vr =
|
|
"SELECT sum(c.cantidad), sum(c.cantidad * c.precio),c.cod_n,c.cod_grupo, ",
|
|
" c.cod_tipo,c.cod_sec, a.mes, a.ano, b.ventas ",
|
|
"FROM vetb00002 b, vetb00003 c, prdtable a ",
|
|
"WHERE (b.factura = c.factura) AND (b.sec_vend != 8888) AND ",
|
|
" (b.fecha_factura between a.fecha_inicio and a.fecha_corte) and ",
|
|
" b.status_t is null and a.ano BETWEEN ?-2 AND ? and a.mes <= ? and ( ",
|
|
criterio clipped,
|
|
" ) GROUP BY 9,3,4,5,6,7,8 "
|
|
|
|
DISPLAY " " AT 19,14
|
|
DISPLAY "<< Buscando Informaciones del Ano Actual >>" AT 19,14
|
|
|
|
PREPARE busca_vr FROM select_vr
|
|
DECLARE movi_vr CURSOR FOR busca_vr
|
|
OPEN movi_vr USING entrada.ano,entrada.ano, entrada.mes
|
|
|
|
START REPORT venta TO "C:\\archivo"
|
|
DISPLAY " " AT 19,14
|
|
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
|
|
AT 19,14 ATTRIBUTE (REVERSE)
|
|
|
|
SELECT UNIQUE a.prima INTO prima_us FROM vetb00019 a
|
|
WHERE a.disponible = "S"
|
|
|
|
IF prima_us IS NULL THEN
|
|
LET prima_us = 1
|
|
END IF
|
|
|
|
LET idx_vr = 1
|
|
LET salir_vr = "N"
|
|
WHILE salir_vr != "S"
|
|
FETCH movi_vr INTO ventas.*
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
LET salir_vr = "S"
|
|
LET idx_vr = 1
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
LET ventas.cantidad_pres = 0
|
|
LET ventas.valor_pres = 0
|
|
|
|
IF ventas.ano = entrada.ano THEN
|
|
SELECT sum(c.cantidad),sum(c.valor)
|
|
INTO ventas.cantidad_pres,ventas.valor_pres
|
|
FROM vetb00045 c
|
|
WHERE c.ano = entrada.ano AND c.mes = ventas.mes AND
|
|
c.ventas = ventas.ventas AND c.cod_n = ventas.cod_n AND
|
|
c.cod_grupo=ventas.cod_grupo AND c.cod_tipo=ventas.cod_tipo AND
|
|
c.cod_sec = ventas.cod_sec AND c.status_t is null
|
|
END IF
|
|
|
|
IF ventas.cantidad_pres IS NULL THEN
|
|
LET ventas.cantidad_pres = 0
|
|
END IF
|
|
IF ventas.valor_pres IS NULL THEN
|
|
LET ventas.valor_pres = 0
|
|
END IF
|
|
|
|
LET ventas.codigo = ventas.cod_n using "&",
|
|
ventas.cod_grupo using "&",
|
|
ventas.cod_tipo using "&&",
|
|
ventas.cod_sec using "&&&"
|
|
|
|
IF ventas.ventas = "2" THEN
|
|
LET ventas.valor_vr = ventas.valor_vr * prima_us
|
|
END IF
|
|
|
|
DISPLAY " "
|
|
AT 20,14
|
|
DISPLAY ventas.codigo CLIPPED," ",ventas.ventas,
|
|
" ",ventas.mes USING "&&"," ",ventas.ano USING "&&&&"
|
|
AT 20,14
|
|
OUTPUT TO REPORT venta(ventas.*)
|
|
END WHILE
|
|
FINISH REPORT venta
|
|
|
|
RUN "impresion C:\\archivo"
|
|
RUN "copy printer2.bat impresion.bat"
|
|
END FUNCTION
|
|
|
|
REPORT venta(x)
|
|
DEFINE x RECORD
|
|
cantidad_vr DECIMAL(12,2),
|
|
valor_vr DECIMAL(14,2),
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
mes CHAR(4),
|
|
ano SMALLINT,
|
|
ventas CHAR(1),
|
|
cantidad_pres DECIMAL(12,2),
|
|
valor_pres DECIMAL(14,2),
|
|
codigo CHAR(7)
|
|
END RECORD,
|
|
medida CHAR(4),
|
|
valor_actual,valor_ant1,valor_ant2, dif1,dif2 DECIMAL(12,2)
|
|
|
|
DEFINE vendedor,imp,imp1 CHAR (1)
|
|
DEFINE descrip_venta CHAR(22)
|
|
DEFINE descrip1 CHAR(30)
|
|
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)
|
|
DEFINE hora CHAR(5)
|
|
DEFINE descrip_mes CHAR(15)
|
|
DEFINE pt_impresos SMALLINT
|
|
DEFINE total_cantidad_vr, total_valor_vr, total_cantidad_vp,
|
|
total_valor_vp, total_cantidad_vap, total_valor_vap,
|
|
total_cantidad_pres, total_valor_pres DECIMAL (14,2)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 2
|
|
ORDER BY x.ventas,x.codigo,x.mes,x.ano DESC
|
|
|
|
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 27, ASCII 80
|
|
LET hora = time
|
|
LET lj = (152 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
|
|
PRINT COLUMN 1,doce,comp_on
|
|
PRINT COLUMN 1, "veprrp008",
|
|
COLUMN lj, p_companias.nombre CLIPPED,
|
|
COLUMN 145, "Pag. ", pageno using "###"
|
|
PRINT COLUMN 67, "Sistema de Ventas",
|
|
COLUMN 145, today using "dd/mm/yy"
|
|
PRINT COLUMN 66, "Ventas por Mes y Ano",
|
|
COLUMN 148, hora
|
|
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"--------------------------------------------------",
|
|
"---------------------------"
|
|
|
|
PRINT COLUMN 38, "REAL ", entrada.ano using "&&&&",
|
|
COLUMN 74, "PRESUPUESTO ", entrada.ano using "&&&&",
|
|
COLUMN 112, "REAL ", entrada.ano-1 using "&&&&",
|
|
COLUMN 156, "REAL ", entrada.ano-2 using "&&&&"
|
|
|
|
PRINT COLUMN 30, "UNIDADES",
|
|
COLUMN 46, "VALOR RD$",
|
|
COLUMN 66, "UNIDADES",
|
|
COLUMN 79, "VALOR RD$",
|
|
COLUMN 94, "DIF",
|
|
|
|
COLUMN 107, "UNIDADES",
|
|
COLUMN 120, "VALOR RD$",
|
|
COLUMN 137, "DIF",
|
|
|
|
COLUMN 148, "UNIDADES",
|
|
COLUMN 162, "VALOR RD$",
|
|
COLUMN 176, "DIF"
|
|
|
|
PRINT COLUMN 1, "--------------------------------------------------",
|
|
"--------------------------------------------------" ,
|
|
"--------------------------------------------------" ,
|
|
"---------------------------"
|
|
|
|
BEFORE GROUP OF x.ventas
|
|
IF x.ventas = "1" THEN
|
|
LET descrip_venta = " VENTAS LOCALES "
|
|
END IF
|
|
|
|
IF x.ventas = "2" THEN
|
|
LET descrip_venta = "VENTAS DE EXPORTACION"
|
|
END IF
|
|
PRINT COLUMN 73,"******* ", descrip_venta," *******"
|
|
SKIP 1 LINE
|
|
|
|
BEFORE GROUP OF x.codigo
|
|
IF pt_impresos is null THEN
|
|
LET pt_impresos = 0
|
|
END IF
|
|
|
|
LET pt_impresos = pt_impresos + 1
|
|
|
|
IF pt_impresos > 4 THEN
|
|
LET pt_impresos = 1
|
|
SKIP TO TOP OF PAGE
|
|
END IF
|
|
|
|
IF pt_impresos > 1 THEN
|
|
SKIP 1 LINE
|
|
END IF
|
|
|
|
SELECT a.descrip_esp,a.unidad_med INTO descrip1,medida FROM iptb00002 a
|
|
WHERE a.cod_n = x.cod_n AND a.cod_grupo = x.cod_grupo AND
|
|
a.cod_tipo = x.cod_tipo AND a.cod_sec = x.cod_sec
|
|
|
|
PRINT COLUMN 1, negrillas_on,x.cod_n using "&","-",
|
|
x.cod_grupo using "&","-",x.cod_tipo using "&&","-",
|
|
x.cod_sec using "&&&", " ",descrip1, " ",
|
|
medida,negrillas_off
|
|
|
|
LET total_cantidad_vr = 0
|
|
LET total_valor_vr = 0
|
|
LET total_cantidad_vp = 0
|
|
LET total_valor_vp = 0
|
|
LET total_cantidad_vap = 0
|
|
LET total_valor_vap = 0
|
|
LET total_cantidad_pres = 0
|
|
LET total_valor_pres = 0
|
|
|
|
|
|
AFTER GROUP OF x.mes
|
|
LET descrip_mes = null
|
|
SELECT a.descrip INTO descrip_mes FROM mestable a WHERE a.mes = x.mes
|
|
|
|
IF x.cantidad_vr is null THEN
|
|
LET x.cantidad_vr = 0
|
|
END IF
|
|
|
|
IF x.valor_vr is null THEN
|
|
LET x.valor_vr = 0
|
|
END IF
|
|
|
|
IF x.cantidad_pres is null THEN
|
|
LET x.cantidad_pres = 0
|
|
END IF
|
|
|
|
IF x.valor_pres is null THEN
|
|
LET x.valor_pres = 0
|
|
END IF
|
|
LET valor_actual = GROUP SUM(x.valor_vr) WHERE x.ano = entrada.ano
|
|
LET valor_ant1 = GROUP SUM(x.valor_vr) WHERE x.ano = entrada.ano -1
|
|
LET valor_ant2 = GROUP SUM(x.valor_vr) WHERE x.ano = entrada.ano -2
|
|
LET dif1 = valor_actual - valor_ant1
|
|
LET dif2 = valor_actual - valor_ant2
|
|
PRINT COLUMN 1, descrip_mes CLIPPED," ",entrada.ano USING "&&&&",
|
|
COLUMN 24, GROUP SUM(x.cantidad_vr)
|
|
WHERE x.ano = entrada.ano using "###,###,###.##",
|
|
COLUMN 41, GROUP SUM(x.valor_vr)
|
|
WHERE x.ano = entrada.ano using "###,###,###.##",
|
|
COLUMN 60, GROUP SUM(x.cantidad_pres)
|
|
WHERE x.ano = entrada.ano using "###,###,###.##",
|
|
COLUMN 74, GROUP SUM(x.valor_pres)
|
|
WHERE x.ano = entrada.ano using "###,###,###.##",
|
|
COLUMN 89, GROUP SUM(x.valor_pres -x.valor_vr)
|
|
WHERE x.ano = entrada.ano using "((((,(((.##)",
|
|
|
|
COLUMN 102, GROUP SUM(x.cantidad_vr)
|
|
WHERE x.ano = entrada.ano-1 using "###,###,###.##",
|
|
COLUMN 117, GROUP SUM(x.valor_vr)
|
|
WHERE x.ano = entrada.ano-1 using "###,###,###.##",
|
|
COLUMN 132, dif1 USING "((((,(((.##)",
|
|
|
|
COLUMN 123, GROUP SUM(x.cantidad_vr)
|
|
WHERE x.ano = entrada.ano-2 using "###,###,###.##",
|
|
COLUMN 139, GROUP SUM(x.valor_vr)
|
|
WHERE x.ano = entrada.ano-2 using "###,###,###.##",
|
|
COLUMN 154, dif2 USING "((((,(((.##)"
|
|
AFTER GROUP OF x.codigo
|
|
LET valor_actual = GROUP SUM(x.valor_vr) WHERE x.ano = entrada.ano
|
|
LET valor_ant1 = GROUP SUM(x.valor_vr) WHERE x.ano = entrada.ano -1
|
|
LET valor_ant2 = GROUP SUM(x.valor_vr) WHERE x.ano = entrada.ano -2
|
|
LET dif1 = valor_actual - valor_ant1
|
|
LET dif2 = valor_actual - valor_ant2
|
|
PRINT COLUMN 1, negrillas_on
|
|
PRINT COLUMN 17, "TOTAL ",
|
|
COLUMN 24, GROUP SUM(x.cantidad_vr)
|
|
WHERE x.ano = entrada.ano using "###,###,###.##",
|
|
COLUMN 41, GROUP SUM(x.valor_vr)
|
|
WHERE x.ano = entrada.ano using "###,###,###.##",
|
|
|
|
COLUMN 60, GROUP SUM(x.cantidad_pres)
|
|
WHERE x.ano = entrada.ano using "###,###,###.##",
|
|
COLUMN 74, GROUP SUM(x.valor_pres)
|
|
WHERE x.ano = entrada.ano using "###,###,###.##",
|
|
COLUMN 89, GROUP SUM(x.valor_pres -x.valor_vr)
|
|
WHERE x.ano = entrada.ano using "((((,(((.##)",
|
|
|
|
COLUMN 90, GROUP SUM(x.cantidad_vr)
|
|
WHERE x.ano = entrada.ano-1 using "###,###,###.##",
|
|
COLUMN 107, GROUP SUM(x.valor_vr)
|
|
WHERE x.ano = entrada.ano-1 using "###,###,###.##",
|
|
COLUMN 130, dif1 USING "((,(((,(((.##)",
|
|
|
|
COLUMN 123, GROUP SUM(x.cantidad_vr)
|
|
WHERE x.ano = entrada.ano-2 using "###,###,###.##",
|
|
COLUMN 139, GROUP SUM(x.valor_vr)
|
|
WHERE x.ano = entrada.ano-2 using "###,###,###.##",
|
|
COLUMN 154, dif2 USING "((,(((,(((.##)"
|
|
PRINT COLUMN 1, negrillas_off
|
|
|
|
|
|
AFTER GROUP OF x.ventas
|
|
SKIP TO TOP OF PAGE
|
|
ON LAST ROW
|
|
PRINT comp_off
|
|
END REPORT
|
|
|