Files
MBS/PROYECTO/vedir/veprrp008.4gl
T

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