Files
MBS/PROYECTO/ccdir/ccprrp015.4gl
T

1082 lines
35 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : CCPRRP015
OBJETIVO : FLASH REPORT
PROGRAMADOR : Ing. Juan Soto (Johnny)
FECHA REALIZACION : Abril 24, 1993
-------------------------------------------------------------------------------
}
GLOBALS "ccprgb000.4gl"
DEFINE moneda SMALLINT
DEFINE primera,acumulado CHAR(1)
DEFINE mes1 ARRAY [12] OF CHAR (10)
FUNCTION ccprrp015()
DEFINE mes_ini CHAR(6)
DEFINE peri2,periodo,act,ant,hoy CHAR(4)
DEFINE mes_fin CHAR(2)
DEFINE select_dia,select_zona,select_cliente,select_pilas CHAR(1000)
DEFINE p_mes,idx_d,registros,cuenta,peri,idx_t,idx_o,idx_e,idx_p,idx_m
SMALLINT
DEFINE n_encontre,p_ventas,esta,encontre,salir2,salir1,salir CHAR(1)
DEFINE tasa1,tasa2,tasa3 DECIMAL(6,2)
DEFINE fecha1,fecha2,fecha3,fecha4 DATE
DEFINE ventas_dia RECORD
ventas CHAR(1),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad_vend DECIMAL(12,2),
precio DECIMAL(12,2),
prima LIKE vetb00002.prima_us
END RECORD
DEFINE vtas_acum RECORD
ventas CHAR(1),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad_vend DECIMAL(12,2),
precio DECIMAL(12,2),
descuento DECIMAL(12,2),
prima LIKE vetb00002.prima_us
END RECORD
DEFINE ano_ant RECORD
ventas CHAR(1),
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad_vend DECIMAL(12,2),
precio DECIMAL(12,2),
descuento DECIMAL(12,2),
prima LIKE vetb00002.prima_us
END RECORD
DEFINE ventas RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(4) ,
sub_control CHAR(1),
ventas CHAR(1),
cantidad_vend DECIMAL(12,2),
valor DECIMAL(12,2),
cantidad_Pres INTEGER,
valor_pres DECIMAL(12,2),
unidad_acum DECIMAL(12,2),
valor_acum DECIMAL(12,2),
unidad_ant DECIMAL(12,2),
valor_ant DECIMAL(12,2),
codigo CHAR(7),
grupo_venta CHAR(1)
END RECORD
#WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM ccfmrp015 FROM "ccfmrp015"
DISPLAY FORM ccfmrp015
CALL pantalla()
DISPLAY "ccprrp015" AT 4,3
DISPLAY " FLASH REPORT " AT 6,26
LET tipo_papel = 2
CALL msgrp000(tipo_papel)
LET primera = "S"
INPUT BY NAME acumulado,moneda,p_mes,tasa1,tasa2,tasa3 WITHOUT DEFAULTS
AFTER FIELD p_mes
IF p_mes is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_mes
END IF
IF p_mes > 12 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_mes
END IF
LET act = YEAR(today) USING "&&&&"
LET ant = YEAR(today) - 1 USING "&&&&"
SELECT fecha_inicio,fecha_corte INTO fecha1,fecha2 FROM prdtable
WHERE mes = p_mes AND ano = act
SELECT fecha_inicio,fecha_corte INTO fecha3,fecha4 FROM prdtable
WHERE mes = p_mes AND ano = ant
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
EXIT INPUT
END INPUT
# Busca Los Movimientos de las Facturas
LET periodo = act[3,4],p_mes using "&&"
LET peri2 = ant[3,4],p_mes using "&&"
LET peri = periodo
# Buscando Pilas vendias En el mes especificado
IF acumulado = "N" THEN
LET select_pilas =
"SELECT b.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" sum(a.cantidad),sum(a.cantidad * a.precio),sum(b.monto_desc), ",
" b.prima_us ",
"FROM vetb00003 a,vetb00002 b ",
"WHERE b.fecha_factura between ? and ? and a.factura = b.factura and ",
" b.status_t is null and a.status_t is null ",
"GROUP BY 1,2,3,4,5,9 ORDER BY 1,2,3,4 "
DISPLAY "<< Estoy Buscando Ventas Del Mes ... Espere Por Favor. >>"
AT 19,14 ATTRIBUTE (BOLD,REVERSE)
PREPARE busca_act FROM select_pilas
DECLARE act SCROLL CURSOR FOR busca_act
OPEN act USING fecha1,fecha2
END IF
# Buscando los meses acumulado donde la variable acumulado sea igual a S
IF acumulado = "S" THEN
LET select_pilas =
"SELECT b.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" sum(a.cantidad),sum(a.cantidad * a.precio),sum(b.monto_desc), ",
" b.prima_us ",
"FROM vetb00003 a,vetb00002 b ",
"WHERE b.fecha_factura<=? AND a.factura=b.factura and b.status_t is null ",
" and a.status_t is null AND YEAR(b.fecha_factura) = ? ",
"GROUP BY 1,2,3,4,5,9 ORDER BY 1,2,3,4 "
DISPLAY "<< Estoy Buscando Ventas Acumuladas ... Espere Por Favor. >>"
AT 19,14 ATTRIBUTE (BOLD,REVERSE)
PREPARE busca_act1 FROM select_pilas
DECLARE act1 SCROLL CURSOR FOR busca_act1
OPEN act1 USING fecha2,act
END IF
# Buscando Pilas vendias del ano anterior
IF acumulado = "S" THEN
LET select_zona =
"SELECT b.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" sum(a.cantidad),sum(a.cantidad * a.precio),sum(b.monto_desc),",
" b.prima_us ",
"FROM vetb00003 a,vetb00002 b ",
"WHERE b.fecha_factura != ? and a.factura=b.factura and ",
" b.status_t is null and a.status_t is null AND b.fecha_factura < ? ",
"GROUP BY 1,2,3,4,5,9 ORDER BY 1,2,3,4 "
ELSE
LET select_zona =
"SELECT b.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, ",
" sum(a.cantidad),sum(a.cantidad * a.precio),sum(b.monto_desc),",
" b.prima_us ",
"FROM vetb00003 a,vetb00002 b ",
"WHERE b.fecha_factura between ? AND ? AND a.factura = b.factura and ",
" b.status_t is null and a.status_t is null ",
"GROUP BY 1,2,3,4,5,9 ORDER BY 1,2,3,4 "
END IF
DISPLAY "<< Estoy Buscando Ventas Ano Anterior ... Espere Por Favor. >>"
AT 19,14 ATTRIBUTE (BOLD,REVERSE)
PREPARE busca_ant FROM select_zona
DECLARE ant SCROLL CURSOR FOR busca_ant
OPEN ant USING fecha3,fecha4
LET select_cliente =
"SELECT unique d.cod_n,d.cod_grupo,d.cod_tipo,d.cod_sec,d.descrip_esp, ",
" d.unidad_med,' ' ",
"FROM iptb00002 d ",
"WHERE d.status_t is null ORDER BY 2,3,4,5"
PREPARE busca_movi FROM select_cliente
DECLARE movi_curs SCROLL CURSOR FOR busca_movi
OPEN movi_curs
START REPORT flash TO "C:\\archivo"
DISPLAY " "
AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
SELECT count(*) INTO registros FROM iptb00002
LET n_encontre = null
LET cuenta = 0
LET identifica = null
LET verdad = null
LET idx = 1
LET idx_o = 1
LET idx_d = 1
LET salir1 = "N"
LET idx_t = 1
WHILE salir1 != "S"
FETCH ABSOLUTE idx_t movi_curs INTO ventas.*
IF STATUS = NOTFOUND THEN
LET idx_t = 1
LET idx = 1
LET idx_o = 1
LET idx_p = 1
LET ventas.ventas = "2"
IF identifica = "S" THEN
LET salir1 = "S"
EXIT WHILE
ELSE
LET identifica = "S"
CONTINUE WHILE
END IF
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF ventas.ventas is null THEN
LET ventas.ventas = "1"
END IF
IF identifica = "S" THEN
LET ventas.ventas = "2"
END IF
LET idx_t = idx_t + 1
LET cuenta = cuenta + 1
LET salir = "N"
WHILE salir != "S"
IF acumulado = "N" THEN
FETCH ABSOLUTE idx act INTO vtas_acum.*
ELSE
FETCH ABSOLUTE idx act1 INTO vtas_acum.*
END IF
IF status = notfound THEN
LET idx = 1
EXIT WHILE
END IF
LET idx = idx + 1
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF vtas_acum.cod_n = ventas.cod_n and
vtas_acum.cod_grupo = ventas.cod_grupo and
vtas_acum.cod_tipo = ventas.cod_tipo and
vtas_acum.cod_sec = ventas.cod_sec and
vtas_acum.ventas = ventas.ventas THEN
LET ventas.unidad_acum = vtas_acum.cantidad_vend
IF ventas.ventas = "2" THEN
LET ventas.valor_acum = (vtas_acum.precio * vtas_acum.prima)
ELSE
LET ventas.valor_acum = (vtas_acum.precio - vtas_acum.descuento)
END IF
END IF
END WHILE
LET salir = "N"
WHILE salir != "S"
FETCH ABSOLUTE idx_o ant INTO ano_ant.*
IF status = notfound THEN
LET idx_o = 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 idx_o = idx_o + 1
LET ventas.unidad_ant = 0
LET ventas.valor_ant = 0
IF ano_ant.cod_n = ventas.cod_n and
ano_ant.cod_grupo = ventas.cod_grupo and
ano_ant.cod_tipo = ventas.cod_tipo and
ano_ant.cod_sec = ventas.cod_sec and
ano_ant.ventas = ventas.ventas THEN
LET idx_o = 1
LET ventas.unidad_ant = ano_ant.cantidad_vend
IF ano_ant.prima is null THEN
LET ano_ant.prima = 1
END IF
IF ano_ant.descuento is null THEN
LET ano_ant.descuento = 0
END IF
IF ano_ant.ventas = "2" THEN
LET ventas.valor_ant = (ano_ant.precio * ano_ant.prima)
ELSE
LET ventas.valor_ant = (ano_ant.precio - ano_ant.descuento)
END IF
EXIT WHILE
ELSE
LET ventas.unidad_ant = 0
LET ventas.valor_ant = 0
END IF
END WHILE
LET ventas.codigo = ventas.cod_n using "&",
ventas.cod_grupo using "&",
ventas.cod_tipo using "&&",
ventas.cod_sec using "&&&"
LET ventas.grupo_venta = ventas.codigo[5]
IF ventas.unidad_acum is null THEN
LET ventas.unidad_acum = 0
END IF
IF ventas.valor_acum is null THEN
LET ventas.valor_acum = 0
END IF
IF ventas.valor is null THEN
LET ventas.valor = 0
END IF
IF ventas.unidad_ant is null THEN
LET ventas.unidad_ant = 0
END IF
IF ventas.valor_ant is null THEN
LET ventas.valor_ant = 0
END IF
IF ventas.cantidad_vend is null THEN
LET ventas.cantidad_vend = 0
END IF
OUTPUT TO REPORT flash(ventas.*,peri,p_mes,ant,act,tasa1,tasa2,tasa3)
IF cuenta >= registros THEN
LET ventas.ventas = "2"
END IF
LET ventas.cantidad_vend = 0
LET ventas.valor = 0
LET ventas.cantidad_pres = 0
LET ventas.valor_pres = 0
LET ventas.unidad_acum = 0
LET ventas.valor_acum = 0
LET ventas.unidad_ant = 0
LET ventas.valor_ant = 0
END WHILE
FINISH REPORT flash
CLEAR SCREEN
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
REPORT flash(x,peri1,p_mes1,ant1,act1,tasa_act,tasa_pre,tasa_py)
DEFINE x RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descrip_esp CHAR(30),
unidad_med CHAR(4) ,
sub_control CHAR(1),
ventas CHAR(1),
cantidad_vend DECIMAL(12,2),
valor DECIMAL(12,2),
cantidad_Pres DECIMAL(12,2),
valor_pres DECIMAL(12,2),
unidad_acum DECIMAL(12,2),
valor_acum DECIMAL(12,2),
unidad_ant DECIMAL(12,2),
valor_ant DECIMAL(12,2),
codigo CHAR(7),
grupo_venta CHAR(1)
END RECORD,
p_mes1 SMALLINT
DEFINE vendedor,imp,imp1 CHAR (1)
DEFINE nombre,tipo1 CHAR(21)
DEFINE nombre_mes1,nombre_dia,nombre_mes CHAR(11)
DEFINE descrip_zone CHAR(30)
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(6)
DEFINE negrillas_off CHAR(6)
DEFINE comp_on CHAR(3)
DEFINE comp_off CHAR(3)
DEFINE doce CHAR(2)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
DEFINE t_cantidad_pres,t_valor_pres,t_t_cantidad_pres,t_t_valor_pres,
t_t_t_cantidad_pres, t_t_t_valor_pres,g_cantidad_vend,g_valor_vend,
g_unidad_acum,g_valor_acum,g_g_cantidad_vend,g_g_valor_vend,
g_g_unidad_acum,g_g_valor_acum,g_g_g_cantidad_vend,g_g_g_valor_vend,
g_g_g_unidad_acum,g_g_g_valor_acum,g_unidad_ant,g_valor_ant,
g_g_unidad_ant,g_g_valor_ant,g_g_g_unidad_ant,g_g_g_valor_ant,
t1_cantidad_pres,t1_valor_pres,g1_cantidad_vend,g1_valor_vend,
g1_unidad_acum,g1_valor_acum,g1_unidad_ant,g1_valor_ant,
g_p_b,g_g_p_b,g_g_g_p_b,g_p_b_v,g_g_p_b_v,g_g_g_p_b_v,
g_p_py,g_g_p_py,g_g_g_p_py,g_p_py_v,g_g_p_py_v,g_g_g_p_py_v,
g1_p_b,g1_p_b_v,g1_p_py,g1_p_py_v
DECIMAL(12,2)
DEFINE p_b,p_py,p_b_v,p_py_v,tasa_act,tasa_pre,tasa_py DECIMAL(8,2)
#DEFINE tasas RECORD LIKE prtb00001.*
DEFINE peri1,d,m,i SMALLINT
DEFINE ant1,act1 CHAR(4)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 4
ORDER BY x.ventas,x.grupo_venta,x.sub_control,x.codigo
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 69
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET doce = ASCII 27, ASCII 77
LET normal =ASCII 029
LET hora = time
LET lj = (162 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, comp_on,negrillas_on
PRINT COLUMN 1, "ccprrp015",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 155, "Pag. ",pageno using "###"
PRINT COLUMN 71, "Sistema de Finanzas",
COLUMN 153, today using "dd/mm/yyyy"
PRINT COLUMN 64, "Control de productos para la venta",
COLUMN 158, hora
IF acumulado = "N" THEN
PRINT COLUMN 75, "FLASH REPORT"
ELSE
PRINT COLUMN 69, "FLASH REPORT - ACUMULADO"
END IF
SKIP 1 LINES
IF moneda = 1 THEN
PRINT COLUMN 79, "IN RD$"
ELSE
PRINT COLUMN 79, "IN US$"
END IF
CALL meses()
LET nombre_mes = mes1[p_mes1]
PRINT COLUMN 1, "Mes de: ",nombre_mes clipped
PRINT COLUMN 1, "Tasa Actual: ",tasa_act using "###.##"
PRINT COLUMN 1, "Tasa Presupuesto: ",tasa_pre using "###.##"
PRINT COLUMN 1, "Tasa Anterior: ",tasa_py using "###.##"
LET primera = "N"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------" ,
"--------------------------------------------------" ,
"-------------"
PRINT COLUMN 58, " R E A L ",
COLUMN 110, "B U D G E T",
COLUMN 130, "P R I O R Y E A R"
PRINT COLUMN 2, "P r o d u c t o",
COLUMN 53, "Unidades",
COLUMN 65, "% Bget.",
COLUMN 77, "% Py",
COLUMN 89, "Valor",
COLUMN 105, "% Bget.",
COLUMN 116, "% Py",
COLUMN 129, "Unidades",
COLUMN 140, "Valor",
COLUMN 156, "Unidades",
COLUMN 169, "Valor"
PRINT COLUMN 1, "--------------------------------------------------",
"--------------------------------------------------" ,
"--------------------------------------------------" ,
"-------------", negrillas_off
IF t_cantidad_pres is null THEN
LET t_cantidad_pres = 0
LET t1_cantidad_pres = 0
END IF
IF t_valor_pres is null THEN
LET t_valor_pres = 0
LET t1_valor_pres = 0
END IF
IF t_t_cantidad_pres is null THEN
LET t_t_cantidad_pres = 0
END IF
IF t_t_valor_pres is null THEN
LET t_t_valor_pres = 0
END IF
IF t_t_t_cantidad_pres is null THEN
LET t_t_t_cantidad_pres = 0
END IF
IF t_t_t_valor_pres is null THEN
LET t_t_t_valor_pres = 0
END IF
BEFORE GROUP OF x.ventas
SKIP 1 LINE
IF x.ventas = "1" THEN
LET nombre = "L O C A L"
LET g_p_b = 0
LET g_g_p_b = 0
LET g_g_g_p_b = 0
LET g1_p_b = 0
LET g1_p_b_v = 0
LET g1_p_py_v = 0
LET g1_p_py = 0
LET g_p_b_v = 0
LET g_g_p_b_v = 0
LET g_g_g_p_b_v = 0
LET g_p_py = 0
LET g_g_p_py = 0
LET g_g_g_p_py = 0
LET g_p_py_v = 0
LET g_g_p_py_v = 0
LET g_g_g_p_py_v = 0
ELSE
LET nombre = "E X P O R T A C I O N"
END IF
PRINT COLUMN 7,negrillas_on, nombre,negrillas_off
SKIP 1 LINE
AFTER GROUP OF x.codigo
IF acumulado = "N" THEN
SELECT sum(cantidad),sum(valor) INTO x.cantidad_pres,x.valor_pres
FROM vetb00017
WHERE mes = peri1 and ventas = x.ventas and cod_n = x.cod_n and
cod_grupo=x.cod_grupo and cod_tipo=x.cod_tipo and cod_sec=x.cod_sec
ELSE
SELECT sum(cantidad),sum(valor) INTO x.cantidad_pres,x.valor_pres
FROM vetb00017
WHERE mes <= peri1 and ventas = x.ventas and cod_n = x.cod_n and
cod_grupo = x.cod_grupo and cod_tipo = x.cod_tipo and
cod_sec = x.cod_sec
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
IF x.valor_pres > 0 THEN
LET x.valor_pres = x.valor_pres
LET x.cantidad_pres = x.cantidad_pres
END IF
IF moneda = 2 THEN
LET x.valor_acum = x.valor_acum / tasa_act
LET x.valor_pres = x.valor_pres / tasa_pre
LET x.valor_ant = x.valor_ant / tasa_py
END IF
# Calculo del 4.54% para el BUDGET en valor
LET x.valor_pres = x.valor_pres - (x.valor_pres * 0.0454)
# Calculo de 7.72% para el PRIOR YEAR en valor
LET x.valor_ant = x.valor_ant - (x.valor_ant * 0.0772)
# Porciento budget real
IF x.unidad_acum != 0 and x.cantidad_pres != 0 THEN
LET p_b = ((x.unidad_acum / x.cantidad_pres) - 1) * 100
END IF
# Porciento Prior year real
IF x.unidad_acum != 0 and x.unidad_ant THEN
LET p_py = ((x.unidad_acum / x.unidad_ant) - 1) * 100
END IF
# Porciento budget real en valor
IF x.valor_acum >= 1 and x.valor_pres >= 1 THEN
LET p_b_v = ((x.valor_acum / x.valor_pres) - 1) * 100
END IF
# Porciento prior year en valor
IF x.valor_acum >= 1 and x.valor_ant >= 1 THEN
LET p_py_v = ((x.valor_acum / x.valor_ant) - 1) * 100
END IF
IF x.unidad_acum > 0 or x.cantidad_pres > 0 or
x.unidad_ant > 0 or x.valor_acum > 0 or
x.valor_ant > 0 or x.valor_pres > 0 THEN
PRINT COLUMN 1, x.cod_n using "&","-",x.cod_grupo using "&","-",
x.cod_tipo using "&&","-",x.cod_sec using "&&&",
COLUMN 13, x.descrip_esp," ",x.unidad_med clipped,
COLUMN 51, x.unidad_acum using "###,###,###",
COLUMN 62, p_b using "###,###.##",
COLUMN 73, p_py using "###,###.##",
COLUMN 85, x.valor_acum using "###,###,###.##",
COLUMN 101, p_b_v using "###,###.##",
COLUMN 112, p_py_v using "###,###.##",
COLUMN 124, x.cantidad_pres using "###,###,###",
COLUMN 136, x.valor_pres using "###,###,###.##",
COLUMN 152, x.unidad_ant using "###,###,###",
COLUMN 165, x.valor_ant using "###,###,####.##"
END IF
LET p_b = 0
LET p_py = 0
LET p_b_v = 0
LET p_py_v = 0
LET t1_cantidad_pres = t1_cantidad_pres + x.cantidad_pres
LET t1_valor_pres = t1_valor_pres + x.valor_pres
IF g1_valor_vend is null THEN
LET g1_cantidad_vend = 0
LET g1_valor_vend = 0
LET g1_unidad_acum = 0
LET g1_valor_acum = 0
LET g1_unidad_ant = 0
LET g1_valor_ant = 0
END IF
LET g1_p_b = g1_p_b + p_b
LET g1_p_b_v = g1_p_b_v + p_b_v
LET g1_p_py = g1_p_py + p_py
LET g1_p_py_v = g1_p_py_v + p_py_v
LET g1_unidad_acum = g1_unidad_acum + x.unidad_acum
LET g1_valor_acum = g1_valor_acum + x.valor_acum
LET g1_unidad_ant = g1_unidad_ant + x.unidad_ant
LET g1_valor_ant = g1_valor_ant + x.valor_ant
AFTER GROUP OF x.sub_control
IF x.cod_n = 3 THEN
SKIP 1 LINE
IF g1_unidad_acum > 0 or t1_cantidad_pres > 0 or
g1_unidad_ant > 0 THEN
LET g1_p_b = 0
LET g1_p_py = 0
LET g1_p_b_v = 0
LET g1_p_py_v = 0
IF t1_cantidad_pres != 0 and g1_unidad_acum != 0 THEN
LET g1_p_b = ((g1_unidad_acum / t1_cantidad_pres) - 1) * 100
END IF
IF g1_unidad_ant != 0 and g1_unidad_acum != 0 THEN
LET g1_p_py = ((g1_unidad_acum / g1_unidad_ant) - 1) * 100
END IF
IF t1_valor_pres != 0 and g1_valor_acum != 0 THEN
LET g1_p_b_v = ((g1_valor_acum / t1_valor_pres) - 1) * 100
END IF
IF g1_valor_ant != 0 and g1_valor_acum != 0 THEN
LET g1_p_py_v = ((g1_valor_acum / g1_valor_ant) - 1) * 100
END IF
PRINT COLUMN 6, "SUB-TOTAL ",x.sub_control clipped,
COLUMN 51, g1_unidad_acum using "###,###,###",
COLUMN 62, g1_p_b using "###,###.##",
COLUMN 73, g1_p_py using "###,###.##",
COLUMN 85, g1_valor_acum using "###,###,###.##",
COLUMN 101, g1_p_b_v using "###,###.##",
COLUMN 112, g1_p_py_v using "###,###.##",
COLUMN 124, t1_cantidad_pres using "###,###,###",
COLUMN 136, t1_valor_pres using "###,###,###.##",
COLUMN 152, g1_unidad_ant using "###,###,###",
COLUMN 166, g1_valor_ant using "###,###,###.##"
END IF
LET t_cantidad_pres = t_cantidad_pres + t1_cantidad_pres
LET t_valor_pres = t_valor_pres + t1_valor_pres
LET t1_valor_pres = 0
LET t1_cantidad_pres = 0
IF g_valor_vend is null THEN
LET g_cantidad_vend = 0
LET g_valor_vend = 0
LET g_unidad_acum = 0
LET g_valor_acum = 0
LET g_unidad_ant = 0
LET g_valor_ant = 0
END IF
LET g_p_b = g1_p_b + g_p_b
LET g_p_b_v = g1_p_b_v + g_p_b_v
LET g_p_py = g1_p_py + g_p_py
LET g_p_py_v = g1_p_py_v + g_p_py_v
LET g_unidad_acum = g1_unidad_acum + g_unidad_acum
LET g_valor_acum = g1_valor_acum + g_valor_acum
LET g_unidad_ant = g1_unidad_ant + g_unidad_ant
LET g_valor_ant = g1_valor_ant + g_valor_ant
LET g1_p_b = 0
LET g1_p_b_v = 0
LET g1_p_py = 0
LET g1_p_py_v = 0
LET g1_cantidad_vend = 0
LET g1_valor_vend = 0
LET g1_unidad_acum = 0
LET g1_valor_acum = 0
LET g1_unidad_ant = 0
LET g1_valor_ant = 0
SKIP 1 LINE
ELSE
LET t_cantidad_pres = t_cantidad_pres + t1_cantidad_pres
LET t_valor_pres = t_valor_pres + t1_valor_pres
LET t1_valor_pres = 0
LET t1_cantidad_pres = 0
IF g_valor_vend is null THEN
LET g_cantidad_vend = 0
LET g_valor_vend = 0
LET g_unidad_acum = 0
LET g_valor_acum = 0
LET g_unidad_ant = 0
LET g_valor_ant = 0
END IF
LET g_p_b = g1_p_b + g_p_b
LET g_p_b_v = g1_p_b_v + g_p_b_v
LET g_p_py = g1_p_py + g_p_py
LET g_p_py_v = g1_p_py_v + g_p_py_v
LET g_unidad_acum = g1_unidad_acum + g_unidad_acum
LET g_valor_acum = g1_valor_acum + g_valor_acum
LET g_unidad_ant = g1_unidad_ant + g_unidad_ant
LET g_valor_ant = g1_valor_ant + g_valor_ant
LET g1_p_b = 0
LET g1_p_b_v = 0
LET g1_p_py = 0
LET g1_p_py_v = 0
LET g1_cantidad_vend = 0
LET g1_valor_vend = 0
LET g1_unidad_acum = 0
LET g1_valor_acum = 0
LET g1_unidad_ant = 0
LET g1_valor_ant = 0
END IF
AFTER GROUP OF x.grupo_venta
IF x.grupo_venta = "1" THEN
LET tipo1 = "SUPERCELL"
END IF
IF x.grupo_venta = "2" THEN
LET tipo1 = "H. DUTY"
END IF
IF x.grupo_venta = "3" THEN
LET tipo1 = "ALKALINAS"
END IF
IF x.grupo_venta = "4" THEN
LET tipo1 = "LAMPARAS"
END IF
IF x.grupo_venta = "5" THEN
LET tipo1 = "FOCOS"
END IF
IF x.grupo_venta = "6" THEN
LET tipo1 = "BOMBILLOS"
END IF
IF x.grupo_venta = "7" THEN
LET tipo1 = "EXIBIDORES"
END IF
IF g_unidad_acum > 0 or t_cantidad_pres > 0 or
g_unidad_ant > 0 THEN
LET g_p_b = 0
LET g_p_py = 0
LET g_p_b_v = 0
LET g_p_py_v = 0
IF t_cantidad_pres != 0 and g_unidad_acum != 0 THEN
LET g_p_b = ((g_unidad_acum / t_cantidad_pres) - 1) * 100
END IF
IF g_unidad_ant != 0 and g_unidad_acum != 0 THEN
LET g_p_py = ((g_unidad_acum / g_unidad_ant) - 1) * 100
END IF
IF t_valor_pres != 0 and g_valor_acum != 0 THEN
LET g_p_b_v = ((g_valor_acum / t_valor_pres) - 1) * 100
END IF
IF g_valor_ant != 0 and g_valor_acum != 0 THEN
LET g_p_py_v = ((g_valor_acum / g_valor_ant) - 1) * 100
END IF
PRINT COLUMN 1, negrillas_on,
COLUMN 9, "TOTAL ",tipo1 clipped,
COLUMN 53, g_unidad_acum using "###,###,###",
COLUMN 64, g_p_b using "###,###.##",
COLUMN 75, g_p_py using "###,###.##",
COLUMN 87, g_valor_acum using "###,###,###.##",
COLUMN 103, g_p_b_v using "###,###.##",
COLUMN 114, g_p_py_v using "###,###.##",
COLUMN 126, t_cantidad_pres using "###,###,###",
COLUMN 138, t_valor_pres using "###,###,###.##",
COLUMN 154, g_unidad_ant using "###,###,###",
COLUMN 168, g_valor_ant using "###,###,###.##",
negrillas_off
END IF
LET t_t_cantidad_pres = t_t_cantidad_pres + t_cantidad_pres
LET t_t_valor_pres = t_t_valor_pres + t_valor_pres
LET t_cantidad_pres = 0
LET t_valor_pres = 0
IF g_g_valor_vend is null THEN
LET g_g_cantidad_vend = 0
LET g_g_valor_vend = 0
LET g_g_unidad_acum = 0
LET g_g_valor_acum = 0
LET g_g_unidad_ant = 0
LET g_g_valor_ant = 0
END IF
LET g_g_p_b = g_g_p_b + g_p_b
LET g_g_p_b_v = g_g_p_b_v + g_p_b_v
LET g_g_p_py = g_g_p_py + g_p_py
LET g_g_p_py_v = g_g_p_py_v + g_p_py_v
LET g_g_unidad_acum = g_g_unidad_acum + g_unidad_acum
LET g_g_valor_acum = g_g_valor_acum + g_valor_acum
LET g_g_unidad_ant = g_g_unidad_ant + g_unidad_ant
LET g_g_valor_ant = g_g_valor_ant + g_valor_ant
LET g_p_b = 0
LET g_p_b_v = 0
LET g_p_py = 0
LET g_p_py_v = 0
LET g_cantidad_vend = 0
LET g_valor_vend = 0
LET g_unidad_acum = 0
LET g_valor_acum = 0
LET g_unidad_ant = 0
LET g_valor_ant = 0
SKIP 1 LINE
AFTER GROUP OF x.ventas
IF x.ventas = "1" THEN
LET nombre = "L O C A L"
ELSE
LET nombre = "E X P O R T A C I O N"
END IF
SKIP 1 LINE
LET g_g_p_b = 0
LET g_g_p_py = 0
LET g_g_p_b_v = 0
LET g_g_p_py_v = 0
IF t_t_cantidad_pres != 0 and g_g_unidad_acum != 0 THEN
LET g_g_p_b = ((g_g_unidad_acum / t_t_cantidad_pres) - 1) * 100
END IF
IF g_g_unidad_ant != 0 and g_g_unidad_ant != 0 THEN
LET g_g_p_py = ((g_g_unidad_acum / g_g_unidad_ant) - 1) * 100
END IF
IF t_t_valor_pres != 0 and g_g_valor_acum != 0 THEN
LET g_g_p_b_v = ((g_g_valor_acum / t_t_valor_pres) - 1) * 100
END IF
IF g_g_valor_ant != 0 and g_g_valor_acum != 0 THEN
LET g_g_p_py_v = ((g_g_valor_acum / g_g_valor_ant) - 1) * 100
END IF
PRINT COLUMN 7, negrillas_on,"TOTAL ",nombre clipped,
COLUMN 53, g_g_unidad_acum using "###,###,###",
COLUMN 64, g_g_p_b using "###,###.##",
COLUMN 75, g_g_p_py using "###,###.##",
COLUMN 87, g_g_valor_acum using "###,###,###.##",
COLUMN 103, g_g_p_b_v using "###,###.##",
COLUMN 114, g_g_p_py_v using "###,###.##",
COLUMN 126, t_t_cantidad_pres using "###,###,###",
COLUMN 138, t_t_valor_pres using "###,###,###.##",
COLUMN 154, g_g_unidad_ant using "###,###,###",
COLUMN 168, g_g_valor_ant using "###,###,###.##",
negrillas_off
LET t_t_t_cantidad_pres = t_t_t_cantidad_pres + t_t_cantidad_pres
LET t_t_t_valor_pres = t_t_t_valor_pres + t_t_valor_pres
LET t_t_cantidad_pres = 0
LET t_t_valor_pres = 0
IF g_g_g_valor_vend is null THEN
LET g_g_g_cantidad_vend = 0
LET g_g_g_valor_vend = 0
LET g_g_g_unidad_acum = 0
LET g_g_g_valor_acum = 0
LET g_g_g_unidad_ant = 0
LET g_g_g_valor_ant = 0
END IF
LET g_g_g_p_b = g_g_g_p_b + g_g_p_b
LET g_g_g_p_b_v = g_g_g_p_b_v + g_g_p_b_v
LET g_g_g_p_py = g_g_g_p_py + g_g_p_py
LET g_g_g_p_py_v = g_g_g_p_py_v + g_g_p_py_v
LET g_g_g_unidad_acum = g_g_g_unidad_acum + g_g_unidad_acum
LET g_g_g_valor_acum = g_g_g_valor_acum + g_g_valor_acum
LET g_g_g_unidad_ant = g_g_g_unidad_ant + g_g_unidad_ant
LET g_g_g_valor_ant = g_g_g_valor_ant + g_g_valor_ant
LET g_g_p_b = 0
LET g_g_p_b_v = 0
LET g_g_p_py = 0
LET g_g_p_py_v = 0
LET g_g_cantidad_vend = 0
LET g_g_valor_vend = 0
LET g_g_unidad_acum = 0
LET g_g_valor_acum = 0
LET g_g_unidad_ant = 0
LET g_g_valor_ant = 0
IF x.ventas = "1" THEN
SKIP TO TOP OF PAGE
END IF
ON LAST ROW
SKIP 1 LINE
IF t_t_t_cantidad_pres != 0 and g_g_g_unidad_acum != 0 THEN
LET g_g_g_p_b = ((g_g_g_unidad_acum / t_t_t_cantidad_pres) - 1) * 100
END IF
IF g_g_g_unidad_ant != 0 and g_g_g_unidad_acum != 0 THEN
LET g_g_g_p_py = ((g_g_g_unidad_acum / g_g_g_unidad_ant) - 1) * 100
END IF
IF t_t_t_valor_pres != 0 and g_g_g_valor_acum != 0 THEN
LET g_g_g_p_b_v = ((g_g_g_valor_acum / t_t_t_valor_pres) - 1) * 100
END IF
IF g_g_g_valor_ant != 0 and g_g_g_valor_acum != 0 THEN
LET g_g_g_p_py_v = ((g_g_g_valor_acum / g_g_g_valor_ant) - 1) * 100
END IF
PRINT COLUMN 7, negrillas_on,"TOTAL GENERAL ",
COLUMN 53, g_g_g_unidad_acum using "###,###,###",
COLUMN 64, g_g_g_p_b using "###,###.##",
COLUMN 75, g_g_g_p_py using "###,###.##",
COLUMN 87, g_g_g_valor_acum using "###,###,###.##",
COLUMN 103, g_g_g_p_b_v using "###,###.##",
COLUMN 114, g_g_g_p_py_v using "###,###.##",
COLUMN 126, t_t_t_cantidad_pres using "###,###,###",
COLUMN 138, t_t_t_valor_pres using "###,###,###.##",
COLUMN 154, g_g_g_unidad_ant using "###,###,###",
COLUMN 167, g_g_g_valor_ant using "###,###,###.##",
negrillas_off
LET t_t_t_cantidad_pres = 0
LET t_t_t_valor_pres = 0
LET g_g_g_cantidad_vend = 0
LET g_g_g_valor_vend = 0
LET g_g_g_unidad_acum = 0
LET g_g_g_valor_acum = 0
LET g_g_g_unidad_ant = 0
LET g_g_g_valor_ant = 0
LET g_g_g_p_b = 0
LET g_g_g_p_b_v = 0
LET g_g_g_p_py = 0
LET g_g_g_p_py_v = 0
PRINT comp_off
END REPORT
FUNCTION meses()
LET mes1[1] = "Enero"
LET mes1[2] = "Febrero"
LET mes1[3] = "Marzo"
LET mes1[4] = "Abril"
LET mes1[5] = "Mayo"
LET mes1[6] = "Junio"
LET mes1[7] = "Julio"
LET mes1[8] = "Agosto"
LET mes1[9] = "Septiembre"
LET mes1[10] = "Octubre"
LET mes1[11] = "Noviembre"
LET mes1[12] = "Diciembre"
RUN "type C:\\archivo > %USPRINT%" END FUNCTION