Files
MBS/PROYECTO/cgdir/cgprrp029.4gl
T

1083 lines
37 KiB
Plaintext

{
----------------------------------------------------------------------------
PROGRAMA : CGPRRP029
OBJETIVO : PANORAMICO ANALISIS DE BENEFICIOS POR VENDEDOR
PROGRAMADOR: JUAN F. SOTO
FECHA : NOVIEMBRE 28, 1996.
---------------------------------------------------------------------------
}
GLOBALS
"cgprgb000.4gl"
DEFINE m_mes,p_ano,p_mes SMALLINT,
fecha1,fecha2,fech1,fech2,fecha_c DATE
DEFINE cost_vta RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad INTEGER
END RECORD,
fecha_ingreso DATE,
descripcion_cta VARCHAR(30)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_compania.* FROM companias a
CALL cgprrp029()
END MAIN
FUNCTION cgprrp029()
DEFINE vendedor RECORD
sec_vend SMALLINT,
nombre CHAR(20),
apellido CHAR(20),
tipo_Emp CHAR(2),
bruto DECIMAL(12,2),
neto DECIMAL(12,2),
costo_venta DECIMAL(12,2),
salario DECIMAL(12,2),
comision DECIMAL(12,2),
descuento DECIMAL(12,2)
END RECORD
OPTIONS
FORM LINE 9,
ERROR LINE 24
OPEN FORM cgfmrp029 FROM "cgfmrp029"
DISPLAY FORM cgfmrp029
CALL pantalla()
DISPLAY "cgprrp029" AT 4,3 ATTRIBUTE(RED)
DISPLAY "Panoramico Analisis De Beneficos Por Vendedor" AT 6,15 ATTRIBUTE(BLACK)
DIALOG ATTRIBUTE (UNBUFFERED)
INPUT BY NAME p_ano ,p_mes
BEFORE INPUT
LET p_ano = YEAR(TODAY)
LET p_mes = MONTH(TODAY) USING "&&"
DISPLAY BY NAME p_ano,p_mes
DISPLAY "MES ",p_mes
AFTER FIELD p_mes
SELECT a.fecha_inicio,a.fecha_corte INTO fecha1,fecha_c
FROM prdtable a
WHERE a.ano = p_ano and a.mes = p_mes
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
END INPUT
CONSTRUCT criterio ON b.num_emp FROM kvendedor
BEFORE CONSTRUCT
CALL cvendedor()
ON ACTION genera_reporte
LET selec=
"SELECT DISTINCT b.num_emp , ",
" b.nom1_emp,b.apell1_emp,b.nomina ",
"FROM vetb00002 a,adtb00003 b ",
"WHERE a.sec_vend = b.num_emp AND ",criterio clipped,
" AND (b.status_t IS NULL OR b.status_t IN ('I')) ",
" and CONVERT(CHAR(10),a.fecha_factura,103) between '",fecha1,"' and '",fecha_c ,"' ",
"ORDER BY b.num_emp "
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
OPEN busca
LET r_output='XLS'
CALL configureoutput(r_output) RETURNING handler
START REPORT analisis TO XML HANDLER handler
DISPLAY "<< Reporte Generandose... Espere Por Favor >>" AT 19,14
WHILE STATUS != NOTFOUND
FETCH busca INTO vendedor.*
IF STATUS = NOTFOUND THEN
EXIT WHILE
END IF
OUTPUT TO REPORT analisis(vendedor.*)
END WHILE
FINISH REPORT analisis
EXIT PROGRAM
END CONSTRUCT
ON ACTION CANCEL
EXIT PROGRAM
END DIALOG
END FUNCTION
REPORT analisis(x)
DEFINE x RECORD
sec_vend SMALLINT,
nombre CHAR(20),
apellido CHAR(20),
tipo_emp CHAR(2),
bruto DECIMAL(12,2),
neto DECIMAL(12,2),
costo_venta DECIMAL(12,2),
salario DECIMAL(12,2),
comision DECIMAL(12,2),
descuento DECIMAL(12,2)
END RECORD,
nombre_mes CHAR(12)
DEFINE bruto,descuento,costo_v,salario,comision,total_g,neto,beneficio_b
DYNAMIC ARRAY OF DECIMAL(12,2),
t_bruto,t_descuento,t_costo_v,t_salario,t_comision,t_total_g,t_neto,
t_beneficio_b,t_beneficio_n,t_regalia DECIMAL(12,2),
porc_v,regalia,bonificacion,tt_bruto,tt_descuento,tt_costo_v,
tt_salario,tt_comision,tt_total_g,tt_neto,tt_beneficio_b,
t_costo,tt_beneficio_n,tt_regalia,tt_incentivo,incentivo,gastos,t_gastos,
t_incentivo DECIMAL(12,2),
l SMALLINT
OUTPUT
LEFT MARGIN 0
RIGHT MARGIN 0
PAGE LENGTH 100
FORMAT
PAGE HEADER
SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = p_mes
PRINT COLUMN 1, "cgprrp029",
COLUMN 90, p_compania.nombre,
COLUMN 200, "PAGINA: ",PAGENO USING "###"
PRINT COLUMN 1, "JFS",
COLUMN 90, " ANALISIS BENEFICIO POR VENDEDOR",
COLUMN 197,TODAY USING "DD/MM/YY"
PRINT COLUMN 90, "CORRESPONDIENTE AL PERIODO OCTUBRE - ",nombre_mes clipped,
"/",p_ano using "####",
COLUMN 197, TIME
PRINT
"----------------------------------------------------------------------------",
"----------------------------------------------------------------------------------------------------------------------------------------------------------"
LET l = 40
DECLARE busca10 CURSOR FOR
SELECT MIN(fecha_inicio), MAX(fecha_corte), mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
GROUP BY mes
ORDER BY mes
FOREACH busca10 INTO fech1, fech2
--FOR idx =1 TO p_mes
LET l = l + 14
--END FOR
END FOREACH
PRINT COLUMN l," TOTAL",
COLUMN l+14, " TOTAL"
LET l = 40
DECLARE busca11 CURSOR FOR
SELECT MIN(fecha_inicio), MAX(fecha_corte), mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
GROUP BY mes
ORDER BY mes
FOREACH busca11 INTO fech1,fech2,m_mes
--FOR idx =1 TO p_mes
SELECT a.descrip INTO nombre_mes FROM mestable a WHERE a.mes = m_mes
PRINT COLUMN l, nombre_mes clipped;
LET l = l + 14
--END FOR
END FOREACH
PRINT COLUMN l," ACTUAL",
COLUMN l+14, "ANTERIOR"
PRINT
"----------------------------------------------------------------------------",
"----------------------------------------------------------------------------------------------------------------------------------------------------------"
BEFORE GROUP OF x.sec_vend
PRINT COLUMN 1,"VENDEDOR: ","(",x.sec_vend using "<<<<",")",
x.nombre clipped," ",x.apellido
SKIP 1 LINE
LET t_costo = 0
LET t_bruto = 0
LET t_descuento = 0
LET t_neto = 0
LET t_comision = 0
LET t_salario = 0
LET t_beneficio_b = 0
LET t_beneficio_n = 0
LET t_regalia = 0
LET t_costo_v = 0
LET tt_total_g = 0
LET t_total_g = 0
LET tt_costo_v = 0
FOR idx = 1 TO 12
LET total_g[idx] = 0
LET bruto[idx] = 0
LET neto[idx] = 0
LET comision[idx] = 0
LET costo_v[idx] = 0
LET beneficio_b[idx] = 0
LET salario[idx] = 0
END FOR
DECLARE busca12 CURSOR FOR
SELECT MIN(fecha_inicio), MAX(fecha_corte), mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
GROUP BY mes
ORDER BY mes
FOREACH busca12 INTO fech1,fech2
END FOREACH
# BUSCA E IMPRIME LAS VENTAS BRUTAS
DISPLAY "BUSCANDO VENTAS BRUTAS" AT 17,19
PRINT COLUMN 9, "Ventas Brutas";
LET l = 40
DECLARE busca13 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY 1
FOREACH busca13 INTO fech1,fech2,m_mes
SELECT SUM(a.sub_total*b.tasa) INTO x.bruto
FROM vetb00002 a,cgtb00084 b
WHERE (a.factura=a.factura AND
a.cod_cia=a.cod_cia AND
a.ventas = b.ventas AND
a.sec_vend = x.sec_vend AND
a.fecha_factura between fech1 AND fech2 AND
a.status_t IS NULL AND
a.sec_cliente = a.sec_cliente) AND
a.tipo_cliente = b.tipo_cliente AND
b.mes = m_mes AND b.ano = YEAR(a.fecha_factura)
IF x.bruto IS NULL THEN
LET x.bruto = 0
END IF
LET bruto[m_mes] = x.bruto
LET t_bruto = t_bruto + bruto[m_mes]
PRINT COLUMN l,x.bruto USING "##,###,###";
LET l = l + 14
END FOREACH
PRINT COLUMN l, t_bruto USING "##,###,###";
DISPLAY " " AT 17,19
DISPLAY "BUSCANDO VENTAS BRUTAS DEL ANO ANTERIOR" AT 17,19
# Busca Ventas Brutas Del Ano Anterior
SELECT MIN(fecha_inicio) INTO fecha1
FROM prdtable
WHERE ano = p_ano -1
SELECT fecha_corte INTO fecha2
FROM prdtable
WHERE ano = p_ano -1 and
mes = p_mes
SELECT SUM(a.sub_total*b.tasa) INTO tt_bruto
FROM vetb00002 a,cgtb00084 b
WHERE (a.factura=a.factura AND
a.cod_cia=a.cod_cia AND
a.ventas = b.ventas AND
a.sec_vend = x.sec_vend AND
a.fecha_factura between fecha1 AND fecha2 AND
a.status_t IS NULL AND
a.sec_cliente = a.sec_cliente) AND
a.tipo_cliente = a.tipo_cliente AND
b.mes = m_mes AND b.ano = YEAR(a.fecha_factura)
PRINT COLUMN l+14, tt_bruto USING "##,###,###"
#-----------------------------------------------------------------------
# BUSCA E IMPRIME EL DESCUENTO
DISPLAY " " AT 17,19
DISPLAY "BUSCANDO DESCUENTO" AT 17,19
PRINT COLUMN 9, "MENOS:Descuentos S/Ventas";
LET l = 40
DECLARE busca14 CURSOR FOR
SELECT MIN(fecha_inicio), MAX(fecha_corte), mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
GROUP BY mes
ORDER BY mes
FOREACH busca14 INTO fech1,fech2,m_mes
--FOR idx = 1 TO p_mes
SELECT SUM(a.monto_desc*b.tasa) INTO x.descuento
FROM vetb00002 a,cgtb00084 b
WHERE (a.factura=a.factura AND
a.cod_cia=a.cod_cia AND
a.ventas = b.ventas AND
a.sec_vend = x.sec_vend AND
a.fecha_factura between fech1 AND fech2 AND
a.status_t IS NULL AND
a.sec_cliente = a.sec_cliente) AND
a.tipo_cliente = b.tipo_cliente AND
b.mes = m_mes AND b.ano = YEAR(a.fecha_factura)
IF x.descuento IS NULL THEN
LET x.descuento = 0
END IF
LET descuento[m_mes] = x.descuento
LET t_descuento = t_descuento + descuento[m_mes]
PRINT COLUMN l,x.descuento USING "##,###,###";
LET l = l + 14
--END FOR
END FOREACH
PRINT COLUMN l, t_descuento USING "##,###,###";
SELECT SUM(a.monto_desc*b.tasa) INTO tt_descuento
FROM vetb00002 a,cgtb00084 b
WHERE (a.factura=a.factura AND
a.cod_cia=a.cod_cia AND
a.ventas = b.ventas AND
a.sec_vend = x.sec_vend AND
a.fecha_factura between fecha1 AND fecha2 AND
a.status_t IS NULL AND
a.sec_cliente = a.sec_cliente) AND
a.tipo_cliente = b.tipo_cliente AND
b.mes = m_mes AND b.ano = YEAR(a.fecha_factura)
PRINT COLUMN l+14, tt_descuento USING "##,###,###"
#---------------------------------------------------------------------------
# BUSCA E IMPRIME LAS VENTAS NETAS
SKIP 1 LINE
PRINT COLUMN 9, "Ventas Netas";
LET l = 40
DECLARE busca15 CURSOR FOR
SELECT MIN(fecha_inicio), MAX(fecha_corte), mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
GROUP BY mes
ORDER BY mes
FOREACH busca15 INTO fech1,fech2,m_mes
--FOR idx = 1 TO p_mes
LET x.neto = bruto[m_mes] - descuento[m_mes]
LET neto[m_mes] = x.neto
LET t_neto = t_neto + neto[m_mes]
PRINT COLUMN l,x.neto USING "##,###,###";
LET l = l + 14
--END FOR
END FOREACH
LET tt_neto = tt_bruto - tt_descuento
PRINT COLUMN l, t_neto USING "##,###,###",
COLUMN l+14, tt_neto USING "##,###,###"
#---------------------------------------------------------------------------
# BUSCA EL COSTO DE VENTA
DISPLAY "BUSCANDO COSTO DE VENTA" AT 17,19
PRINT COLUMN 9, "MENOS:Costo De Venta";
LET l = 40
DECLARE busca16 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY 1
FOREACH busca16 INTO fech1,fech2,m_mes
--FOR idx = 1 TO p_mes
LET t_costo = 0
DECLARE busca_cos CURSOR FOR
SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,
SUM(b.cantidad)
FROM vetb00002 a,vetb00003 b
WHERE
(a.factura = b.factura AND
a.cod_cia = a.cod_cia AND
a.sec_vend = x.sec_vend AND
a.fecha_factura BETWEEN fech1 AND fech2 AND
a.status_t IS NULL and
a.sec_cliente = a.sec_cliente)
GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
ORDER BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
FOREACH busca_cos INTO cost_vta.*
LET x.costo_venta = 0
IF cost_vta.cod_n = 3 THEN
SELECT a.costo_lq INTO x.costo_venta
FROM cttb00036 a,prdtable b
WHERE (a.fecha_lq BETWEEN b.fecha_inicio AND b.fecha_corte AND
a.ventas = "1" AND
a.cod_n = cost_vta.cod_n AND
a.cod_grupo = cost_vta.cod_grupo AND
a.cod_tipo = cost_vta.cod_tipo AND
a.cod_sec = cost_vta.cod_sec) AND
b.mes = m_mes AND b.ano = p_ano
ELSE
SELECT a.labor+a.material+a.gastos INTO x.costo_venta
FROM iptb00004 a
WHERE (a.mes_fin = '12') AND a.ano = p_ano AND
a.ventas = "1" AND
a.cod_n = cost_vta.cod_n AND
a.cod_grupo = cost_vta.cod_grupo AND
a.cod_tipo = cost_vta.cod_tipo AND
a.cod_sec = cost_vta.cod_sec AND
a.status_t IS NULL
END IF
IF x.costo_venta IS NULL THEN
LET x.costo_venta = 0
END IF
{
PRINT cost_vta.cod_n using "&"," ",cost_vta.cod_grupo using "&"," ",
cost_vta.cod_tipo using "&&"," ",cost_vta.cod_sec using "&&&"," ",
cost_vta.cantidad using "##,###,###"," ",x.costo_venta using "###.###"
}
LET t_costo = t_costo + (cost_vta.cantidad*x.costo_venta)
END FOREACH
LET costo_v[m_mes]= t_costo
LET t_costo_v = t_costo_v + costo_v[m_mes]
PRINT COLUMN l, t_costo USING "##,###,###";
LET l = l + 14
--END FOR
END FOREACH
PRINT COLUMN l, t_costo_v USING "##,###,###";
DISPLAY " " AT 17,19
DISPLAY "BUSCANDO EL COSTO DE VENTAS DEL ANO ANTERIOR " AT 17,19
# BUSCA EL COSTO DE VENTAS DEL ANO ANTERIOR
DECLARE busca17 CURSOR FOR
SELECT MIN(fecha_inicio), MAX(fecha_corte), mes
FROM prdtable
WHERE ano = p_ano and fecha_corte <= fecha_c
GROUP BY mes
ORDER BY 1
FOREACH busca17 INTO fech1,fech2,m_mes
--FOR idx = 1 TO p_mes
DECLARE busca_acos CURSOR FOR
SELECT b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,
SUM(b.cantidad)
FROM vetb00002 a,vetb00003 b,prdtable c
WHERE
(a.factura = b.factura AND
a.cod_cia = a.cod_cia AND
a.ventas = "1" AND
a.sec_vend = x.sec_vend AND
a.fecha_factura BETWEEN c.fecha_inicio AND c.fecha_corte AND
a.status_t IS NULL and
a.sec_cliente = a.sec_cliente) and
c.mes = m_mes and c.ano = p_ano - 1
GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec
LET t_costo = 0
FOREACH busca_acos INTO cost_vta.*
LET x.costo_venta = 0
IF cost_vta.cod_n = 3 THEN
SELECT a.costo_lq INTO x.costo_venta
FROM cttb00036 a,prdtable b
WHERE (a.fecha_lq BETWEEN b.fecha_inicio AND b.fecha_corte AND
a.ventas = "1" AND
a.cod_n = cost_vta.cod_n AND
a.cod_grupo = cost_vta.cod_grupo AND
a.cod_tipo = cost_vta.cod_tipo AND
a.cod_sec = cost_vta.cod_sec) AND
b.mes = m_mes AND b.ano = p_ano - 1
ELSE
SELECT AVG(a.labor+a.material+a.gastos) INTO x.costo_venta
FROM iptb00004 a
WHERE a.mes_fin = '12' AND a.ano = p_ano -1 AND
a.ventas = "1" AND
a.cod_n = cost_vta.cod_n AND
a.cod_grupo = cost_vta.cod_grupo AND
a.cod_tipo = cost_vta.cod_tipo AND
a.cod_sec = cost_vta.cod_sec AND
a.status_t IS NULL
END IF
IF x.costo_venta IS NULL THEN
LET x.costo_venta = 0
END IF
LET t_costo = t_costo + (cost_vta.cantidad*x.costo_venta)
END FOREACH
LET tt_costo_v = tt_costo_v + t_costo
--END FOR
END FOREACH
PRINT COLUMN l+13, tt_costo_v USING "###,###,###"
DISPLAY " " AT 17,19
#----------------------------------------------------------------------
# BENEFICIO BRUTO
SKIP 1 LINE
PRINT COLUMN 9, "Beneficio Bruto";
LET l = 40
DECLARE busca18 CURSOR FOR
SELECT MIN(fecha_inicio), MAX(fecha_corte), mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
GROUP BY mes
ORDER BY 1
FOREACH busca18 INTO fech1,fech2,m_mes
--FOR idx = 1 TO p_mes
LET beneficio_b[m_mes] = neto[m_mes] - costo_v[m_mes]
LET t_beneficio_b = t_beneficio_b + beneficio_b[m_mes]
PRINT COLUMN l, beneficio_b[m_mes] USING "##,###,###";
LET l = l + 14
--END FOR
END FOREACH
LET tt_beneficio_b = tt_neto - tt_costo_v
PRINT COLUMN l, t_beneficio_b USING "##,###,###",
COLUMN l+14, tt_beneficio_b USING "##,###,###"
#----------------------------------------------------------------------
# IMPRIME EL PORCENTAJE VENTAS NETAS
PRINT COLUMN 9, "% S/Ventas Netas";
LET l = 40
DECLARE busca19 CURSOR FOR
SELECT MIN(fecha_inicio), MAX(fecha_corte), mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
GROUP BY mes
ORDER BY 1
FOREACH busca19 INTO fech1,fech2,m_mes
--FOR idx = 1 TO p_mes
LET porc_v = 0
IF neto[m_mes] != 0 THEN
LET porc_v = (beneficio_b[m_mes]/neto[m_mes]) * 100
END IF
PRINT COLUMN l, porc_v USING "##,###,###";
LET l = l + 14
--END FOR
END FOREACH
IF tt_neto != 0 THEN
PRINT COLUMN l+14, (tt_beneficio_b/tt_neto) * 100 USING "##,###,###"
END IF
#----------------------------------------------------------------------
# GASTOS DIRECTOS
# BUSQUEDA DEL SALARIO DEL VENDEDOR
DISPLAY "BUSCANDO SALARIO NORMAL" AT 17,19
SKIP 1 LINE
PRINT COLUMN 5, "GASTOS DIRECTOS"
SKIP 1 LINE
PRINT COLUMN 9, "Salario Normal";
LET l = 40
DECLARE busca20 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY 1
FOREACH busca20 INTO fech1,fech2,m_mes
--FOR idx = 1 TO p_mes
SELECT SUM(a.valor) INTO x.salario
FROM notb00008 a
WHERE a.num_emp = x.sec_vend AND
a.cod_mov in(1,5) AND
a.fecha between fech1 AND fech2
IF x.salario IS NULL THEN
LET x.salario = 0
END IF
LET total_g[m_mes] = total_g[m_mes] + x.salario
LET t_total_g = t_total_g + total_g[m_mes]
LET salario[m_mes] = x.salario
LET t_salario = t_salario + x.salario
PRINT COLUMN l, x.salario USING "##,###,###";
LET l = l + 14
--END FOR
IF STATUS = NOTFOUND THEN
EXIT FOREACH
END IF
END FOREACH
# Busca el Salario del Ano Anterior
SELECT SUM(a.valor) INTO tt_salario
FROM notb00008 a ,prdtable b
WHERE b.mes <= m_mes AND
b.ano = p_ano -1 AND
(a.num_emp = x.sec_vend AND
a.cod_mov in(1,5) AND
a.fecha BETWEEN b.fecha_inicio AND b.fecha_corte)
IF tt_salario IS NULL THEN
LET tt_salario = 0
END IF
LET tt_total_g = tt_total_g + tt_salario
PRINT COLUMN l,t_salario USING "##,###,###",
COLUMN l+14, tt_salario USING "##,###,###"
#-----------------------------------------------------------------------
# BUSCA LA COMISION PAGADA EN EL MES PARA EL VENDEDOR
DISPLAY "BUSCANDO COMISIONES S/VENTAS" AT 17,19
PRINT COLUMN 9, "Comisiones S/Ventas";
LET l = 40
DECLARE busca21 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY 1
FOREACH busca21 INTO fech1,fech2,m_mes
SELECT SUM(a.valor) INTO x.comision
FROM notb00008 a
WHERE a.num_emp = x.sec_vend AND
a.cod_mov = 40 AND
a.fecha BETWEEN fech1 AND fech2
IF x.comision IS NULL THEN
LET x.comision = 0
END IF
LET total_g[m_mes] = total_g[m_mes] + x.comision
LET t_total_g = t_total_g + total_g[m_mes]
LET comision[m_mes] = x.comision
LET t_comision = t_comision + x.comision
PRINT COLUMN l, x.comision USING "##,###,###";
LET l = l + 14
END FOREACH
SELECT SUM(a.valor) INTO tt_comision
FROM notb00016 a ,prdtable b
WHERE b.mes <= p_mes AND
b.ano = p_ano - 1 AND
(a.num_emp = x.sec_vend AND
a.cod_mov = 40 AND
a.fecha BETWEEN b.fecha_inicio AND b.fecha_corte)
IF tt_comision IS NULL THEN
LET tt_comision = 0
END IF
LET tt_total_g = tt_total_g + tt_comision
PRINT COLUMN l,t_comision USING "##,###,###",
COLUMN l+14, tt_comision USING "##,###,###"
#-----------------------------------------------------------------------
# BUSCA EL INCENTIVO SOBRE VENTAS PAGADA EN EL MES PARA EL VENDEDOR
DISPLAY "BUSCANDO INCENTIVO S/VENTAS" AT 17,19
PRINT COLUMN 9, "Incentivos Varios";
LET l = 40
DECLARE busca22 CURSOR FOR
SELECT MIN(fecha_inicio), MAX(fecha_corte), mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
GROUP BY mes
ORDER BY mes
FOREACH busca22 INTO fech1,fech2,m_mes
SELECT SUM(a.valor) INTO incentivo
FROM notb00008 a
WHERE a.num_emp = x.sec_vend AND
a.cod_mov = 37 AND
a.fecha between fech1 AND fech2
IF incentivo IS NULL THEN
LET incentivo = 0
END IF
LET total_g[m_mes] = total_g[m_mes] + incentivo
LET t_total_g = t_total_g + total_g[m_mes]
LET t_incentivo = t_incentivo + incentivo
PRINT COLUMN l, incentivo USING "##,###,###";
LET l = l + 14
END FOREACH
# Busca la fecha de ingreso del empleado
SELECT a.fech_efec INTO fecha_ingreso
FROM adtb00003 a
WHERE a.num_emp = x.sec_vend
SELECT SUM(a.valor) INTO tt_incentivo
FROM notb00016 a ,prdtable b
WHERE b.mes <= p_mes AND
b.ano = p_ano - 1 AND
(a.num_emp = x.sec_vend AND
a.cod_mov = 37 AND
a.fecha BETWEEN b.fecha_inicio AND b.fecha_corte)
IF tt_incentivo IS NULL THEN
LET tt_incentivo = 0
END IF
LET tt_total_g = tt_total_g + tt_incentivo
PRINT COLUMN l,t_incentivo USING "##,###,###",
COLUMN l+14, tt_incentivo USING "##,###,###"
#-----------------------------------------------------------------------
# REGALIA, BONIFICACION
PRINT COLUMN 9, "Regalia, Bonifi.";
LET l = 40
DECLARE busca23 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY 1
FOREACH busca23 INTO fech1,fech2,m_mes
LET regalia = (salario[m_mes] + comision[m_mes]) / 12
IF (fecha2 - fecha_ingreso)/365 > 3 THEN
LET bonificacion = (((salario[m_mes] + comision[m_mes]) / 23.83) * 60)/12
ELSE
LET bonificacion = (((salario[m_mes] + comision[m_mes]) / 23.83) * 48)/12
END IF
IF bonificacion IS NULL THEN
LET bonificacion = 0
END IF
IF regalia IS NULL THEN
LET regalia = 0
END IF
LET total_g[m_mes] = total_g[m_mes] + bonificacion + regalia
LET t_total_g = t_total_g + total_g[m_mes]
LET t_regalia = t_regalia + regalia + bonificacion
PRINT COLUMN l, regalia+bonificacion USING "##,###,###";
LET l = l + 14
END FOREACH
# BUSCA BONIFICACION DEL ANO ANTERIOR
SELECT a.valor INTO bonificacion
FROM notb00008 a
WHERE
a.num_emp = x.sec_vend AND
a.cod_mov = 33 AND
YEAR(a.fecha) = YEAR(TODAY) - 1
IF bonificacion IS NULL THEN
LET bonificacion = 0
END IF
# BUSCA REGALIA DEL ANO ANTERIOR
SELECT a.valor INTO tt_regalia
FROM notb00008 a,notb00010 b
WHERE b.mes = 12 AND
b.ano = p_ano - 1 AND
(a.num_emp = x.sec_vend AND
a.cod_mov = 32 AND
a.num_nomi = b.num_nomi) AND
b.tipo_emp = x.tipo_emp
IF tt_regalia IS NULL THEN
LET tt_regalia = 0
END IF
LET tt_total_g = tt_total_g + tt_regalia + bonificacion
PRINT COLUMN l, t_regalia USING "##,###,###",
COLUMN l+14, bonificacion + tt_regalia USING "##,###,###"
#-----------------------------------------------------------------------
# ASIGNACION DE VEHICULOS, DEPRECIACION, MANTENIMIENTO, VIAJES Y DIETAS
#PRINT COLUMN 9, "Asignacion Vehiculo"
#PRINT COLUMN 9, "Depreciacion Vehiculo"
#PRINT COLUMN 9, "Mantenimiento Vehiculo"
#PRINT COLUMN 9, "Viajes y Dietas"
LET t_gastos = 0
LET l=40
SELECT a.descripcion INTO descripcion_cta FROM cgtb00001 a WHERE a.cuenta_no = '7112'
PRINT COLUMN 9, descripcion_cta;
DECLARE busca_gastos CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY fecha_inicio
FOREACH busca_gastos INTO fech1,fech2,m_mes
SELECT SUM(debito-credito) INTO gastos FROM cgtb00004 a
WHERE (a.cuenta_no = '7112') AND a.cod_sec = x.sec_vend AND
a.cod_aux = '01' and
a.fecha BETWEEN fech1 AND fech2 AND
a.status_t IS NULL
IF gastos IS NULL THEN
LET gastos = 0
END IF
LET tt_total_g = tt_total_g + gastos
LET t_gastos = t_gastos + gastos
PRINT COLUMN l,gastos USING "##,###,###";
LET total_g[m_mes]=total_g[m_mes]+ gastos
END FOREACH
PRINT COLUMN l+14, t_gastos USING "##,###,###"
LET t_gastos = 0
LET l = 40
SELECT a.descripcion INTO descripcion_cta FROM cgtb00001 a WHERE a.cuenta_no = '7117'
PRINT COLUMN 9, descripcion_cta;
DECLARE busca_gastos1 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY fecha_inicio
FOREACH busca_gastos1 INTO fech1,fech2,m_mes
SELECT SUM(debito-credito) INTO gastos FROM cgtb00004 a
WHERE (a.cuenta_no = '7117') AND a.cod_sec = x.sec_vend AND
a.cod_aux ='01' and
a.fecha BETWEEN fech1 AND fech2 AND
a.status_t IS null
IF gastos IS NULL THEN
LET gastos = 0
END IF
LET tt_total_g = tt_total_g + gastos
LET t_gastos = t_gastos + gastos
PRINT COLUMN l,gastos USING "##,###,###";
LET total_g[m_mes]=total_g[m_mes]+ gastos
LET t_gastos=t_gastos+gastos
END FOREACH
PRINT COLUMN l+14, t_gastos USING "##,###,###"
LET l = 40
SELECT a.descripcion INTO descripcion_cta FROM cgtb00001 a WHERE a.cuenta_no = '7204'
PRINT COLUMN 9, descripcion_cta;
DECLARE busca_gastos2 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY fecha_inicio
FOREACH busca_gastos2 INTO fech1,fech2,m_mes
SELECT SUM(debito-credito) INTO gastos FROM cgtb00004 a
WHERE (a.cuenta_no = '7204') AND a.cod_sec = x.sec_vend AND
a.cod_aux = '01' AND
a.fecha BETWEEN fech1 AND fech2 AND
a.status_t IS null
IF gastos IS NULL THEN
LET gastos = 0
END IF
LET tt_total_g = tt_total_g + gastos
LET t_gastos = t_gastos + gastos
PRINT COLUMN l,gastos USING "##,###,###";
LET total_g[m_mes]=total_g[m_mes]+ gastos
END FOREACH
PRINT COLUMN l+14, t_gastos USING "##,###,###"
LET l = 40
LET t_gastos=0
SELECT a.descripcion INTO descripcion_cta FROM cgtb00001 a WHERE a.cuenta_no = '7205'
PRINT COLUMN 9, descripcion_cta;
DECLARE busca_gastos3 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY fecha_inicio
FOREACH busca_gastos3 INTO fech1,fech2,m_mes
SELECT SUM(debito-credito) INTO gastos FROM cgtb00004 a
WHERE (a.cuenta_no = '7205') AND a.cod_sec = x.sec_vend AND
a.cod_aux = '01' AND
a.fecha BETWEEN fech1 AND fech2 AND
a.status_t IS null
IF gastos IS NULL THEN
LET gastos = 0
END IF
LET tt_total_g = tt_total_g + gastos
LET t_gastos = t_gastos + gastos
PRINT COLUMN l,gastos USING "##,###,###";
LET total_g[m_mes]=total_g[m_mes]+ gastos
END FOREACH
PRINT COLUMN l+14, t_gastos USING "##,###,###"
LET l = 40
SELECT a.descripcion INTO descripcion_cta FROM cgtb00001 a WHERE a.cuenta_no = '7206'
PRINT COLUMN 9, descripcion_cta;
DECLARE busca_gastos4 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY fecha_inicio
FOREACH busca_gastos2 INTO fech1,fech2,m_mes
SELECT SUM(debito-credito) INTO gastos FROM cgtb00004 a
WHERE (a.cuenta_no = '7206') AND a.cod_sec = x.sec_vend AND
a.cod_aux = '01' AND
a.fecha BETWEEN fech1 AND fech2 AND
a.status_t IS null
IF gastos IS NULL THEN
LET gastos = 0
END IF
LET tt_total_g = tt_total_g + gastos
LET t_gastos = t_gastos + gastos
PRINT COLUMN l,gastos USING "##,###,###";
LET total_g[m_mes]=total_g[m_mes]+ gastos
END FOREACH
PRINT COLUMN l+14, t_gastos USING "##,###,###"
LET l = 40
LET t_gastos=0
SELECT a.descripcion INTO descripcion_cta FROM cgtb00001 a WHERE a.cuenta_no = '7336'
PRINT COLUMN 9, descripcion_cta;
DECLARE busca_gastos5 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY fecha_inicio
FOREACH busca_gastos5 INTO fech1,fech2,m_mes
SELECT SUM(debito-credito) INTO gastos FROM cgtb00004 a
WHERE (a.cuenta_no = '7336') AND a.cod_sec = x.sec_vend AND
a.cod_aux = '01' AND
a.fecha BETWEEN fech1 AND fech2 AND
a.status_t IS null
IF gastos IS NULL THEN
LET gastos = 0
END IF
LET tt_total_g = tt_total_g + gastos
LET t_gastos = t_gastos + gastos
PRINT COLUMN l,gastos USING "##,###,###";
LET total_g[m_mes]=total_g[m_mes]+ gastos
END FOREACH
PRINT COLUMN l+14, t_gastos USING "##,###,###"
#-----------------------------------------------------------------------
SKIP 1 LINE
PRINT COLUMN 9, "TOTAL GASTOS" ;
LET l = 40
DECLARE busca24 CURSOR FOR
SELECT fecha_inicio,fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY 1
FOREACH busca24 INTO fech1,fech2,m_mes
PRINT COLUMN l, total_g[m_mes] USING "##,###,###";
LET l = l + 14
END FOREACH
PRINT COLUMN l,t_total_g USING "##,###,###",
COLUMN l+14, tt_total_g USING "##,###,###"
PRINT COLUMN 9,"% S/VENTAS NETAS";
LET l = 40
DECLARE busca25 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY 1
FOREACH busca25 INTO fech1,fech2,m_mes
--FOR idx = 1 TO p_mes
IF neto[m_mes] != 0 THEN
PRINT COLUMN l, (total_g[m_mes]/neto[m_mes]) * 100 USING "##,###,###";
END IF
LET l = l + 14
--END FOR
END FOREACH
IF t_neto != 0 THEN
PRINT COLUMN l, (t_total_g/t_neto) * 100 USING "##,###,###",
COLUMN l+14, (tt_total_g/tt_neto) * 100 USING "##,###,###"
END IF
LET l = 40
PRINT COLUMN 9,"% S/VENTAS BRUTAS";
DECLARE busca26 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY 1
FOREACH busca26 INTO fech1,fech2,m_mes
-- FOR idx = 1 TO p_mes
IF bruto[m_mes] != 0 THEN
PRINT COLUMN l, (total_g[m_mes]/bruto[m_mes]) * 100 USING "##,###,###";
END IF
LET l = l + 14
--END FOR
END FOREACH
IF t_bruto != 0 THEN
PRINT COLUMN l,(t_total_g/t_bruto) * 100 USING "##,###,###",
COLUMN l+14, (tt_total_g/tt_bruto) * 100 USING "##,###,###"
END IF
PRINT
"----------------------------------------------------------------------------",
"---------------------------------------------------------------------------------------------------------------------------------------------"
PRINT COLUMN 9, "BENEFICIO NETO";
LET l = 40
DECLARE busca27 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY 1
FOREACH busca27 INTO fech1,fech2,m_mes
--FOR idx = 1 TO p_mes
LET t_beneficio_n = t_beneficio_n + (beneficio_b[m_mes]-total_g[m_mes])
PRINT COLUMN l, beneficio_b[m_mes] - total_g[m_mes] USING "##,###,###";
LET l = l + 14
--END FOR
END FOREACH
PRINT COLUMN l, t_beneficio_n USING "##,###,###",
COLUMN l+14, tt_beneficio_b - tt_total_g USING "##,###,###"
PRINT COLUMN 9,"% S/VENTAS NETAS";
LET l = 40
DECLARE busca28 CURSOR FOR
SELECT fecha_inicio, fecha_corte, mes
FROM prdtable
WHERE ano = p_ano AND fecha_corte <= fecha_c
ORDER BY 1
FOREACH busca28 INTO fech1,fech2,m_mes
--FOR idx = 1 TO p_mes
IF neto[m_mes] != 0 THEN
PRINT COLUMN l, ((beneficio_b[m_mes]-total_g[m_mes]) / neto[m_mes]) * 100
USING "##,###,###";
END IF
LET l = l + 14
--END FOR
END FOREACH
LET tt_beneficio_n = tt_beneficio_b - tt_total_g
IF t_neto != 0 THEN
PRINT COLUMN l, (t_beneficio_n / t_neto) * 100 USING "##,###,###",
COLUMN l+14, (tt_beneficio_n / t_neto) *100 USING "##,###,###"
END IF
PRINT
"----------------------------------------------------------------------------",
"---------------------------------------------------------------------------------------------------------------------------------------------"
AFTER GROUP OF x.sec_vend
SKIP TO TOP OF PAGE
END REPORT