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

1033 lines
38 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : CCPRRP043
OBJETIVO : Resumen cobros
REALIZADO POR : JUAN F. SOTO
FECHA : Diciembre 26, 2011.
-------------------------------------------------------------------------------
}
GLOBALS "ccprgb000.4gl"
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_companias.* FROM companias a
CALL ccprrp043()
END MAIN
FUNCTION ccprrp043()
DEFINE comision_c RECORD
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
porc_cobros DECIMAL(8,4),
grupo LIKE iptb00002.cod_n
END RECORD,
recibo_ant INTEGER
DEFINE vendedor RECORD
tipo_cliente SMALLINT,
sec_cliente INT,
cod_cia SMALLINT,
sec_vend SMALLINT,
fecha_factura DATE,
factura INTEGER,
cond_pago SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad LIKE vetb00003.cantidad,
precio LIKE vetb00003.precio,
monto_desc LIKE vetb00003.bonificacion,
grupo LIKE iptb00002.cod_n,
porc_desc LIKE vetb00003.cantidad_2,
valor_cobrado LIKE cctb00001.valor,
ventas LIKE vetb00002.ventas,
numero_recibo INTEGER,
codigo CHAR(7),
porc_ventas LIKE cctb00008.porc_ventas,
bruto DECIMAL(12,2),
valor_devuelto DECIMAL(12,2),
neto LIKE vetb00002.neto,
comision DECIMAL(12,2),
monto_desc_d DECIMAL(12,2),
dias SMALLINT,
fcobrado DECIMAL(12,2),
pfecha_factura LIKE vetb00002.fecha_factura
END RECORD
DEFINE porciento RECORD
sec_vend SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
porc_ventas DECIMAL(10,4)
END RECORD,
valor_factura,valor_rec,valor_real DECIMAL(12,2),
satisfecho,hice_ant CHAR(1)
OPEN FORM ccfmrp043 FROM "ccfmrp043"
DISPLAY FORM ccfmrp043
INPUT BY NAME p_ano,p_mes
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 p_mes
IF p_mes IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD p_mes
END IF
SELECT a.fecha_inicio,a.fecha_corte INTO rango.fecha_ini,rango.fecha_fin
FROM prdtable a
WHERE a.ano = p_ano AND
a.mes = p_mes
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
CONSTRUCT criterio ON d.cod_emp_sec
FROM cod_emp_Sec
# Chequo de la cancelacion del programa con la variable global int_flag
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
#--------------------------------------------------------------------
# Borra la tabla temporal para el resumen de los empleados
# Prepara al sistema operativo para recibir el reporte
START REPORT reporte43 TO "dumb"
# Buscando las informaciones del reporte
select a.TipoCobro,a.ocupacion,a.primerNombre,a.PrimerApellido,SUM(a.valorrd),SUM(a.valor)
from vwcobros a where a.ano = 2011
group by a.TipoCobro,a.ocupacion,a.primerNombre,a.PrimerApellido
LET selec =
"SELECT .tipo_cliente,a.sec_cliente,a.cod_cia,d.cod_emp_sec,a.fecha_factura,a.factura,a.cond_pago, ",
" c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.precio, ",
" c.bonificacion,b.cod_n,c.cantidad_2,'0',a.ventas,d.num_doc ",
"FROM vetb00002 a,vetb00003 c,iptb00002 b,cctb00001 d ",
"WHERE a.cod_cia = c.cod_cia AND d.fecha_orig between ? and ? and ",
" a.tipo_cliente = d.tipo_cliente AND ",
" a.sec_cliente = d.sec_cliente AND ",
" d.aplica_a = a.factura AND ",
" a.factura=c.factura AND a.status_t is null AND a.ventas = ? AND ",
" d.status_t IS NULL AND ",
" d.tipo_doc IN ('PG') AND ",
" c.cod_n = b.cod_n AND ",
" c.cod_grupo = b.cod_grupo AND ",
" c.cod_tipo = b.cod_tipo AND ",
" c.cod_sec = b.cod_sec AND ",
" c.cantidad > 0 AND ",
criterio clipped,
" ORDER BY 4,6,9,10,11"
DISPLAY "Buscando Facturas... Espere Por Favor" AT 19,14
PREPARE b_vende FROM selec19
DECLARE c_vende CURSOR FOR b_vende
OPEN c_vende USING fecha1,fecha2,ventas
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere >>" AT 19,14
ATTRIBUTE (REVERSE)
# Loop para darle salida al Query hasta que la variable global status = 100
FOR idx = 1 TO 20
LET resumen[idx].vendedor = NULL
LET resumen[idx].monto_cobrado = 0
LET resumen[idx].comision = 0
END FOR
LET idx = 1
LET total_cobrado = 0
LET total_gerente = 0
LET valor_rec = 0
LET recibo_ant =0
LET codigo_ant = " "
LET salir = "N"
WHILE salir != "S"
FETCH c_vende INTO vendedor.*
IF status = notfound THEN
LET salir = "N"
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF vendedor.cod_n IS NULL OR vendedor.cod_n = 0 THEN
CONTINUE WHILE
END IF
IF recibo_ant != vendedor.factura THEN
IF vendedor.valor_cobrado < 0 THEN
LET vendedor.valor_cobrado = vendedor.valor_cobrado * -1
END IF
LET satisfecho = "N"
LET recibo_ant = vendedor.factura
LET valor_real = 0
LET valor_rec = 0
IF vendedor.ventas = "1" THEN
IF vendedor.tipo_cliente <> 19 THEN
SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc) / 1.16
INTO vendedor.pfecha_factura,valor_rec
FROM cctb00001 a
WHERE a.aplica_a = vendedor.factura AND
a.tipo_doc = "PG" AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND
a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend and
a.tipo_cliente <> 19
ELSE
LET valor_rec_otros = 0
SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc)
INTO vendedor.pfecha_factura,valor_rec
FROM cctb00001 a
WHERE a.aplica_a = vendedor.factura AND
a.tipo_doc = "PG" AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND
a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend
END IF
ELSE
IF vendedor.ventas = "2" THEN
SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc)
INTO vendedor.pfecha_factura,valor_rec
FROM cctb00001 a
WHERE a.aplica_a = vendedor.factura AND
a.tipo_doc = "PG" AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND
a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend
ELSE
IF vendedor.ventas = "3" THEN
IF vendedor.tipo_cliente <> 18 THEN
SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc) / 1.16
INTO vendedor.pfecha_factura,valor_rec
FROM cctb00001 a
WHERE a.aplica_a = vendedor.factura AND
a.tipo_doc = "PG" AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND
a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend
ELSE
LET valor_rec_otros = 0
SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc)
INTO vendedor.pfecha_factura,valor_rec
FROM cctb00001 a
WHERE a.aplica_a = vendedor.factura AND
a.tipo_doc = "PG" AND a.fecha_orig BETWEEN fecha1 AND fecha2 AND
a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend
END IF
END IF
END IF
END IF
LET valor_rec = valor_rec * -1
LET vendedor.valor_cobrado = valor_rec
LET valor_Factura = 0
SELECT a.sub_total INTO valor_factura
FROM vetb00002 a
WHERE a.factura = vendedor.factura AND
a.cod_cia = vendedor.cod_cia AND
a.ventas = ventas
END IF
IF vendedor.precio IS NULL THEN
LET vendedor.precio = 0
END IF
IF vendedor.cantidad IS NULL THEN
LET vendedor.cantidad = 0
END IF
LET vendedor.codigo = vendedor.cod_n using "&",
vendedor.cod_grupo using "&",
vendedor.cod_tipo using "&&",
vendedor.cod_sec using "&&&"
# CALCULO VENCIMIENTO DE LA FACTURA
LET vendedor.dias = vendedor.pfecha_factura - vendedor.fecha_factura
# BUSCO LA COMISION POR VENTA
LET vendedor.porc_ventas = 0
SELECT AVG(a.porc_ventas) INTO vendedor.porc_ventas
FROM cctb00008 a
WHERE (a.cod_n = vendedor.cod_n AND
a.cod_grupo = vendedor.cod_grupo AND
a.cod_tipo = vendedor.cod_tipo AND
a.cod_sec = vendedor.cod_sec) AND
a.status_t IS NULL
IF vendedor.porc_ventas IS NULL THEN
LET vendedor.porc_ventas = 0
END IF
# CALCULO COMISION ALTAGRACIA, M. ALEJANDRA, RODOLFO , DIMAS
CASE
WHEN vendedor.sec_vend = 5
LET vendedor.porc_ventas = (vendedor.porc_ventas /2)
EXIT CASE
END CASE
# CALCULO BRUTO DE LA FACTURA
LET vendedor.bruto = vendedor.cantidad * vendedor.precio
# CALCULO COMISION
IF vendedor.monto_desc IS NULL THEN
LET vendedor.monto_desc = 0
END IF
IF total_gerente IS NULL THEN
LET total_gerente = 0
END IF
IF vendedor.porc_desc > 0 THEN
LET vendedor.neto = vendedor.bruto - vendedor.monto_desc
# LET vendedor.neto = vendedor.neto + vendedor.neto
ELSE
LET vendedor.monto_desc = 0
LET vendedor.neto = vendedor.bruto
END IF
IF vendedor.neto > 0 THEN
LET vendedor.fcobrado = vendedor.valor_cobrado / vendedor.neto
END IF
IF vendedor.fcobrado IS NULL THEN
LET vendedor.fcobrado = 0
END IF
SELECT UNIQUE a.num_emp
FROM notb00017 a
WHERE a.num_emp = vendedor.sec_vend
IF STATUS != NOTFOUND THEN
IF vendedor.dias < 91 THEN
LET total_cobrado = total_cobrado + vendedor.valor_cobrado
LET vendedor.comision = vendedor.neto * (vendedor.porc_ventas/100)
{ MODIFICADO EL 9/3/2005 SOLICITADO POR LIC. CARMEN IF vendedor.sec_vend !=44 AND vendedor.sec_vend != 145 AND
vendedor.sec_vend != 5 AND vendedor.sec_vend != 38 AND
vendedor.sec_vend != 338 THEN
}
IF vendedor.sec_vend = 49 or vendedor.sec_vend = 368 or vendedor.sec_vend = 43 or vendedor.sec_vend = 53
or vendedor.sec_vend = 54 or vendedor.sec_vend = 76 THEN
LET total_gerente = total_gerente + vendedor.valor_cobrado
#INSERT INTO comision values (vendedor.sec_vend,vendedor.valor_cobrado)
END IF
ELSE
LET vendedor.fcobrado = 0
LET vendedor.comision = 0
END IF
OUTPUT TO REPORT reporte43 (vendedor.*)
END IF
END WHILE
IF ventas = 1 THEN
LET selec19 =
"SELECT UNIQUE d.tipo_cliente,d.sec_cliente, d.cod_cia,d.cod_emp_sec,a.fecha_oc,a.num_oc,'1', ",
" c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.precio, ",
" '0',b.cod_n,'0','0','1',d.num_doc ",
"FROM prtb00012 a,prtb00013 c,iptb00002 b,cctb00001 d ",
"WHERE d.fecha_orig between ? and ? and ",
" d.num_cheque = a.num_oc AND ",
" a.num_oc=c.num_oc AND a.status_t is null AND ",
" d.num_doc = d.aplica_a AND ",
" a.tipo_cliente IN(15,12,19) AND ",
" d.status_t IS NULL AND ",
" d.tipo_doc IN ('AV') AND ",
" c.cod_n = b.cod_n AND ",
" c.cod_grupo = b.cod_grupo AND ",
" c.cod_tipo = b.cod_tipo AND ",
" c.cod_sec = b.cod_sec AND ",
" c.cantidad > 0 ",
" ORDER BY 4,6,9,10,11"
ELSE
IF ventas = 2 THEN
LET selec19 =
"SELECT UNIQUE d.tipo_cliente,d.sec_cliente,d.cod_cia,d.cod_emp_sec,a.fecha_oc,a.num_oc,'1', ",
" c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.precio, ",
" '0',b.cod_n,'0','0','1',d.num_doc ",
"FROM prtb00012 a,prtb00013 c,iptb00002 b,cctb00001 d ",
"WHERE d.fecha_orig between ? and ? and ",
" d.num_cheque = a.num_oc AND ",
" a.num_oc=c.num_oc AND a.status_t is null AND ",
" d.num_doc = d.aplica_a AND ",
" a.tipo_cliente IN(17) AND ",
" d.status_t IS NULL AND ",
" d.tipo_doc IN ('AV') AND ",
" c.cod_n = b.cod_n AND ",
" c.cod_grupo = b.cod_grupo AND ",
" c.cod_tipo = b.cod_tipo AND ",
" c.cod_sec = b.cod_sec AND ",
" c.cantidad > 0 ",
" ORDER BY 4,6,9,10,11"
END IF
IF ventas = 3 THEN
LET selec19 =
"SELECT UNIQUE d.tipo_cliente,d.sec_cliente,d.cod_cia,d.cod_emp_sec,a.fecha_oc,a.num_oc,'1', ",
" c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.precio, ",
" '0',b.cod_n,'0','0','1',d.num_doc ",
"FROM prtb00012 a,prtb00013 c,iptb00002 b,cctb00001 d ",
"WHERE d.fecha_orig between ? and ? and ",
" d.num_cheque = a.num_oc AND ",
" a.num_oc=c.num_oc AND a.status_t is null AND ",
" d.num_doc = d.aplica_a AND ",
" a.tipo_cliente in(14,16,18) AND ",
" d.status_t IS NULL AND ",
" d.tipo_doc IN ('AV') AND ",
" c.cod_n = b.cod_n AND ",
" c.cod_grupo = b.cod_grupo AND ",
" c.cod_tipo = b.cod_tipo AND ",
" c.cod_sec = b.cod_sec AND ",
" c.cantidad > 0 ",
" ORDER BY 4,6,9,10,11"
END IF
END IF
DISPLAY "Buscando Avances... Espere Por Favor" AT 19,14
PREPARE b_vende1 FROM selec19
DECLARE c_vende1 CURSOR FOR b_vende1
OPEN c_vende1 USING fecha1,fecha2
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose2 ... Por Favor Espere >>" AT 19,14
ATTRIBUTE (REVERSE)
LET valor_rec = 0
LET recibo_ant =0
LET codigo_ant = " "
LET salir = "N"
# LET idx = 1
WHILE salir != "S"
FETCH c_vende1 INTO vendedor.*
IF status = notfound THEN
LET salir = "N"
EXIT WHILE
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF vendedor.cod_n IS NULL OR vendedor.cod_n = 0 THEN
CONTINUE WHILE
END IF
IF vendedor.precio IS NULL THEN
LET vendedor.precio = 0
END IF
IF vendedor.cantidad IS NULL THEN
LET vendedor.cantidad = 0
END IF
LET vendedor.codigo = vendedor.cod_n using "&",
vendedor.cod_grupo using "&",
vendedor.cod_tipo using "&&",
vendedor.cod_sec using "&&&"
IF recibo_ant != vendedor.factura THEN
IF vendedor.valor_cobrado < 0 THEN
LET vendedor.valor_cobrado = vendedor.valor_cobrado * -1
END IF
LET satisfecho = "N"
LET recibo_ant = vendedor.factura
LET valor_real = 0
LET valor_rec = 0
IF vendedor.tipo_cliente < 18 THEN
SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc) / 1.16
INTO vendedor.pfecha_factura,valor_rec
FROM cctb00001 a
WHERE a.num_cheque = vendedor.factura AND
a.fecha_orig BETWEEN fecha1 AND fecha2 AND
a.tipo_doc = "AV" AND a.valor > 0 AND
a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend
ELSE
SELECT MAX(a.fecha_orig),SUM(a.valor+a.monto_desc)
INTO vendedor.pfecha_factura,valor_rec
FROM cctb00001 a
WHERE a.num_cheque = vendedor.factura AND
a.fecha_orig BETWEEN fecha1 AND fecha2 AND
a.tipo_doc = "AV" AND a.valor > 0 AND
a.status_t IS NULL AND a.cod_emp_sec = vendedor.sec_vend
END IF
LET vendedor.valor_cobrado = valor_rec
LET valor_Factura = 0
SELECT SUM(a.cantidad*a.precio) INTO valor_factura
FROM prtb00013 a
WHERE a.num_oc = vendedor.factura
END IF
IF vendedor.precio IS NULL THEN
LET vendedor.precio = 0
END IF
IF vendedor.cantidad IS NULL THEN
LET vendedor.cantidad = 0
END IF
LET vendedor.codigo = vendedor.cod_n using "&",
vendedor.cod_grupo using "&",
vendedor.cod_tipo using "&&",
vendedor.cod_sec using "&&&"
# CALCULO VENCIMIENTO DE LA FACTURA
LET vendedor.dias = vendedor.pfecha_factura - vendedor.fecha_factura
# BUSCO LA COMISION POR VENTA
LET vendedor.porc_ventas = 0
SELECT AVG(a.porc_ventas) INTO vendedor.porc_ventas
FROM cctb00008 a
WHERE (a.cod_n = vendedor.cod_n AND
a.cod_grupo = vendedor.cod_grupo AND
a.cod_tipo = vendedor.cod_tipo AND
a.cod_sec = vendedor.cod_sec) AND
a.status_t IS NULL
IF vendedor.porc_ventas IS NULL THEN
LET vendedor.porc_ventas = 0
END IF
# CALCULO COMISION ALTAGRACIA, M. ALEJANDRA, RODOLFO, DIMAS
CASE
WHEN vendedor.sec_vend = 5
LET vendedor.porc_ventas = (vendedor.porc_ventas /2)
EXIT CASE
END CASE
# CALCULO BRUTO DE LA FACTURA
LET vendedor.bruto = vendedor.cantidad * vendedor.precio
# CALCULO COMISION
IF vendedor.monto_desc IS NULL THEN
LET vendedor.monto_desc = 0
END IF
LET vendedor.neto = valor_factura
IF vendedor.porc_desc > 0 THEN
LET vendedor.neto = vendedor.bruto - vendedor.monto_desc
# LET vendedor.neto = vendedor.neto + vendedor.neto
ELSE
LET vendedor.monto_desc = 0
LET vendedor.neto = vendedor.bruto
END IF
# IF vendedor.dias < 91 THEN
IF vendedor.neto > 0 THEN
LET vendedor.fcobrado = vendedor.valor_cobrado / vendedor.neto
END IF
LET vendedor.comision = vendedor.neto * (vendedor.porc_ventas/100)
{
IF vendedor.sec_vend != 144 AND vendedor.sec_vend != 145 AND
vendedor.sec_vend != 5 AND vendedor.sec_vend != 33 AND
vendedor.sec_vend != 38 AND vendedor.sec_vend != 338 THEN
}
IF vendedor.sec_vend = 49 or vendedor.sec_vend = 368 or vendedor.sec_vend = 43 or vendedor.sec_vend = 53
or vendedor.sec_vend = 54 or vendedor.sec_vend = 76 THEN
LET total_gerente = total_gerente + vendedor.valor_cobrado
# INTO comision values (vendedor.sec_vend,vendedor.valor_cobrado)
END IF
# ELSE
# LET vendedor.fcobrado = 0
# LET vendedor.comision = 0
# END IF
SELECT UNIQUE a.num_emp
FROM notb00017 a
WHERE a.num_emp = vendedor.sec_vend
IF STATUS != NOTFOUND THEN
OUTPUT TO REPORT reporte43 (vendedor.*)
END IF
END WHILE
FINISH REPORT reporte43
IF pflag = "N" THEN
RUN "type c:\\ventas > %USPRINT% "
ELSE
RUN "pantalla c:\\ventas"
END IF
#---------------------------------------------------------------------
CLEAR SCREEN
END FUNCTION
# Rutina de reporte
REPORT reporte43(x)
# Variable que toma el valor de la funcion que llamo a esta rutina
DEFINE x RECORD
tipo_cliente SMALLINT,
sec_cliente INT,
cod_cia SMALLINT,
sec_vend SMALLINT,
fecha_factura DATE,
factura INTEGER,
cond_pago SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad LIKE vetb00003.cantidad,
precio LIKE vetb00003.precio,
monto_desc LIKE vetb00003.bonificacion,
grupo LIKE iptb00002.cod_n,
porc_desc LIKE vetb00003.cantidad_2,
valor_cobrado LIKE cctb00001.valor,
ventas LIKE vetb00002.ventas,
numero_recibo INTEGER,
codigo CHAR(7),
porc_ventas LIKE cctb00008.porc_ventas,
bruto DECIMAL(12,2),
valor_devuelto DECIMAL(12,2),
neto LIKE vetb00002.neto,
comision DECIMAL(12,2),
monto_desc_d DECIMAL(12,2),
dias SMALLINT,
fcobrado DECIMAL(12,2),
pfecha_factura LIKE vetb00002.fecha_factura
END RECORD,
descrip_item CHAR(30)
DEFINE nombre_mes CHAR(10)
DEFINE porc_ventas DECIMAL(10,4),
descuento_x,cantidad_x,t_comision_v,t_cantidad_n,cantidad_n,
tmonto_dev,gt_comision_v, gt_valor_n,gt_comision_ventas DECIMAL(12,2),
valor_dev DECIMAL(12,2),
nombre_g LIKE iptb00020.producto,
total_bruto,total_neto,tvcomision,ttvcomision,total_subgerente,total_empleado,
total_empleado1 DECIMAL(12,2)
#------------------------------------------------------------------
# Estas variables son constantes en todos los reportes de RAYOVAC
# para no estar definiendolas en cada momento.
# Estas variables son los caracteres ASCII para ser interpretados por
# el printer.
DEFINE valor_devuelto DECIMAL(12,2)
DEFINE dias1,dias2,j,k INTEGER
DEFINE cambio CHAR(1)
DEFINE vcantidad_dev,tt_comision,t_comision_ventas DECIMAL(12,2),
total_aparte,total_aparte1,valor_d,t_valor_n,descuento,und_netas,gt_cantidad_n DECIMAL(12,2),
tund_desc,und_desc INTEGER,
p_iptb20 RECORD LIKE iptb00020.*
DEFINE hora CHAR(5),
comp_on,doce,comp_off,negrillas_on,negrillas_off CHAR(2),
lj SMALLINT
OUTPUT
TOP MARGIN 0
LEFT MARGIN 5
BOTTOM MARGIN 4
#ORDER BY x.sec_vend
#------------------------------------------------------------------------
FORMAT
PAGE HEADER
# Asignaciones de los valores ASCII para la impresion
LET hora = time
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 70
LET doce = ASCII 27, ASCII 77
# Funcion que busca los meses del ano
SELECT descrip INTO nombre_mes FROM mestable WHERE mes = p_mes
#--------------------------------------------------------------------------
LET lj = (137 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, doce,comp_on
PRINT COLUMN 1, "ccprrp043",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 112, "Pag. ",pageno using "###"
PRINT COLUMN 36, " Sistema de Cuentas por Cobrar",
COLUMN 110, today using "dd/mm/yyyy"
PRINT COLUMN 36, " COMISIONES POR COBROS",
COLUMN 115, hora
PRINT COLUMN 40, " "
IF ventas = 1 THEN
PRINT COLUMN 36, "Ventas Locales RD$"
END IF
IF ventas = 2 THEN
PRINT COLUMN 36, "Ventas INTERNACIONALES"
END IF
IF ventas = 3 THEN
PRINT COLUMN 36, "Ventas Locales US$"
END IF
PRINT COLUMN 1, "DESDE: ",fecha1 using "dd/mm/yyyy",
" HASTA: ",fecha2 using "dd/mm/yyyy"
PRINT negrillas_on,"PRODUCTOS LOCALES",negrillas_off
PRINT COLUMN 1, "---------------------------------------------------",
"--------------------------------------------------",
"-----------------------------------------------------------------"
PRINT COLUMN 47, "NUMERO",
COLUMN 55, "FECHA",
COLUMN 74, "FECHA",
COLUMN 66, "MONTO",
COLUMN 95, "MONTO",
COLUMN 120, "MONTO",
COLUMN 134, "VALOR",
COLUMN 147, "PORCIENTO",
COLUMN 158, "COMISION A",
2 SPACES, "DIAS"
PRINT COLUMN 2, "ARTICULOS",
COLUMN 47, "RECIBO",
COLUMN 55, "RECIBO",
COLUMN 64, "FACTURA",
COLUMN 74, "FACTURA",
COLUMN 86, "BRUTO",
COLUMN 95, "DESCUENTO",
COLUMN 120, "NETO",
COLUMN 134, "COBRADO",
COLUMN 147, "COMISION",
COLUMN 158, "COBRAR",
2 SPACES , "COBRADA"
PRINT COLUMN 1, "---------------------------------------------------",
"--------------------------------------------------",
"-----------------------------------------------------------------"
SKIP 1 LINE
BEFORE GROUP OF x.cod_cia
LET t_comision_ventas = 0
BEFORE GROUP OF x.sec_vend
LET t_valor_n = 0
LET t_cantidad_n = 0
LET t_comision_v = 0
LET t_comision_ventas = 0
LET tund_desc = 0
LET vcantidad_dev = 0
LET tmonto_dev = 0
LET tvcomision = 0
LET rvalor_cobrado = 0
LET resumen[idx].vendedor = NULL
# Impresion del nombre del vendedor
SELECT nom1_emp,apell1_emp INTO nombre_vend,apellido_vend
FROM adtb00003 WHERE num_emp = x.sec_vend
PRINT COLUMN 2,negrillas_on,x.sec_vend," ",
nombre_vend clipped," ",
apellido_vend clipped,negrillas_off
SKIP 1 LINE
ON EVERY ROW
IF t_comision_ventas IS NULL THEN
LET t_comision_ventas = 0
END IF
IF gt_comision_ventas IS NULL THEN
LET gt_comision_ventas = 0
END IF
LET t_comision_ventas = t_comision_ventas + x.comision
LET gt_comision_ventas = gt_comision_ventas + x.comision
SELECT a.descrip_esp INTO descrip_item
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, x.cod_n USING "&","-",x.cod_grupo using "&","-",
x.cod_tipo using "&&","-",x.cod_sec using "&&&",
" ",descrip_item,
COLUMN 45, x.numero_recibo USING "<<<<<<",
2 SPACES, x.pfecha_factura USING "dd/mm/yyyy",
COLUMN 64, "(",x.tipo_cliente USING "<<",") ",x.factura USING "<<<<<<",
COLUMN 76, x.fecha_factura USING "dd/mm/yyyy",
COLUMN 86, x.bruto USING "###,###.##",
COLUMN 96, x.monto_desc USING "###,###.##",
COLUMN 114, x.neto USING "##,###,###.##",
COLUMN 130,x.valor_cobrado USING "##,###,###.##",
COLUMN 145, x.porc_ventas USING "###.####",
COLUMN 155, x.comision USING "(((,(((.##)",
2 SPACES, x.dias USING "(((&)"
IF x.dias < 91 THEN
LET rvalor_cobrado = rvalor_cobrado + x.valor_cobrado
END IF
AFTER GROUP OF x.factura
SKIP 1 LINE
PRINT COLUMN 2, "----------------------------------------------------------------",
"----------------------------------------------------------------",
"--------------------------------------------"
PRINT COLUMN 30, "TOTAL FACTURA ",
COLUMN 83, GROUP SUM(x.cantidad*x.precio) USING "##,###,###.##",
COLUMN 91, GROUP SUM(x.monto_desc) USING "#,###,###.##",
COLUMN 113, GROUP SUM(x.neto) USING "###,###,###.##",
COLUMN 130, GROUP SUM(x.valor_cobrado) USING "###,###,###.##",
COLUMN 155, GROUP SUM(x.comision) * x.fcobrado USING "(((,###.##)"
IF GROUP SUM(x.neto) > 0 THEN
LET x.fcobrado = GROUP SUM(x.valor_cobrado) / GROUP SUM(x.neto)
END IF
PRINT COLUMN 135, "Porciento Cobrado: ", x.fcobrado * 100 USING "###.##%"
PRINT COLUMN 135, "Valor Comision : ", GROUP SUM(x.comision) * x.fcobrado USING "###,###.##"
IF ttvcomision IS NULL THEN
LET ttvcomision = 0
END IF
LET tvcomision = (GROUP SUM(x.comision) * x.fcobrado) + tvcomision
SKIP 1 LINE
AFTER GROUP OF x.sec_vend
PRINT negrillas_on
LET valor_d = 0
LET valor_dev = 0
LET x.valor_devuelto = 0
IF valor_dev IS NULL THEN
LET valor_dev = 0
LET x.valor_devuelto = 0
END IF
PRINT COLUMN 84,"--------------",
COLUMN 90, "-------------",
COLUMN 115, "-------------",
2 SPACES, "--------------",
COLUMN 152, "-------------"
PRINT COLUMN 30, "TOTAL VENDEDOR ",
COLUMN 83, GROUP SUM(x.cantidad*x.precio) USING "##,###,###.##",
COLUMN 91, GROUP SUM(x.monto_desc) USING "#,###,###.##",
COLUMN 113, GROUP SUM(x.neto) USING "###,###,###.##",
COLUMN 130, GROUP SUM(x.valor_cobrado) USING "###,###,###.##",
COLUMN 155, tvcomision USING "###,###.##"
LET ttvcomision = ttvcomision + tvcomision
{ PRINT COLUMN 30, "TOTAL COBRADO ANTES DE 91 DIAS ", total_cobrado USING "###,###,###.##",
COLUMN 75, "TOTAL COBRADO GERENTE ANTES 91 DIAS ", total_gerente USING "###,###,###.##"
}
# RESUMEN COMISIONES
LET resumen[idx].vendedor = nombre_vend
LET resumen[idx].monto_cobrado = rvalor_cobrado
LET resumen[idx].comision = tvcomision
LET idx = idx + 1
# COMISIONES PARA EL SUB-GERENTE
IF x.sec_vend = 38 or x.sec_vend = 44 THEN
IF total_subgerente IS NULL THEN
LET total_subgerente = 0
END IF
IF total_empleado IS NULL THEN
LET total_empleado = 0
END IF
IF total_empleado1 IS NULL THEN
LET total_empleado1 = 0
END IF
LET total_subgerente = total_subgerente + (tvcomision * .50) # 338 Altagracia
LET total_empleado = total_empleado + (tvcomision *.20) # Codigo 33 Rodolfo
LET total_empleado1 = total_empleado1 + (tvcomision *.30) # 38 Maria Alejandra
END IF
ON LAST ROW
PRINT COLUMN 2, "Total General ",
COLUMN 83, SUM(x.bruto) USING "###,###,###.##",
COLUMN 113, SUM(x.neto) USING "###,###,###.##",
COLUMN 130, SUM(x.valor_cobrado) USING "###,###,###.##",
COLUMN 155, ttvcomision USING "###,###.##"
# COMISION ADICIONAL PARA EL GERENTE
LET ttvcomision = 0
# Comisiones Adicionales, esta parte esta fija hasta que se modifique el programa
# Maestra de Vendedores que se encuentra en el mantenimiento de ventas
IF ventas = 1 OR ventas = 3 THEN
PRINT COLUMN 10, "|--------------------------------------------|"
PRINT COLUMN 10, "| RESUMEN COMISIONES |"
PRINT COLUMN 10, "|--------------------------------------------|"
PRINT COLUMN 11, "COBRADOR",
COLUMN 25, "MONTO COBRADO",
COLUMN 45, "COMISION"
PRINT COLUMN 10, "|--------------------------------------------|"
FOR idx = 1 TO 20
IF resumen[idx].vendedor IS NOT NULL THEN
PRINT COLUMN 10,"| ",resumen[idx].vendedor,
COLUMN 25, resumen[idx].monto_cobrado USING "###,###,###.##",
COLUMN 45, resumen[idx].comision USING "##,###.##",
COLUMN 55,"|"
END IF
END FOR
IF ventas = 3 THEN
PRINT COLUMN 10, "|--------------------------------------------|"
PRINT COLUMN 10, "| COMISIONES ADICIONALES |"
PRINT COLUMN 10, "|--------------------------------------------|"
PRINT COLUMN 11, "COBRADOR",
COLUMN 25, "MONTO COBRADO",
COLUMN 45, "COMISION"
PRINT COLUMN 10, "|--------------------------------------------|"
PRINT COLUMN 10, "| DIMAS .81% ",
COLUMN 25 , total_gerente USING "USD$##,###,###.##",
COLUMN 45, total_gerente * (.81/100) USING "USD$##,###.##",
COLUMN 55, "|"
END IF
IF ventas != 3 THEN
PRINT COLUMN 10, "|--------------------------------------------|"
SKIP 1 LINE
PRINT COLUMN 10, "|--------------------------------------------|"
PRINT COLUMN 10, "| COMISIONES ADICIONALES |"
PRINT COLUMN 10, "|--------------------------------------------|"
PRINT COLUMN 11, "COBRADOR",
COLUMN 25, "MONTO COBRADO",
COLUMN 45, "COMISION"
PRINT COLUMN 10, "|--------------------------------------------|"
LET total_aparte1 = 0
LET total_aparte = 0
SELECT SUM(a.valor*-1) INTO total_aparte FROM cctb00001 a
WHERE a.tipo_doc in ("PG") and a.fecha_orig between fecha1 AND fecha2 AND
a.tipo_cliente in (12,15) and a.status_t IS NULL
{ POR REQUERIMIENTOS DE DONA CARME ESTOY COLOCANDO ESTE QUERY EN COMENTARIO,
NO SE LE PAGA COMISION A ROSA POR AVANCES
SELECT SUM(a.valor) INTO total_aparte1 FROM cctb00001 a
WHERE a.tipo_doc in ("AV") and a.fecha_orig between fecha1 AND fecha2 AND
a.tipo_cliente in (12) and a.status_t IS NULL and a.valor > 0
}
LET total_cobrado = total_aparte + total_aparte1
PRINT COLUMN 10, "| ROSA .232%",
COLUMN 25, total_cobrado USING "##,###,###.##",
COLUMN 45, total_cobrado * (.232/100) USING "###,###.##",
COLUMN 55, "|"
PRINT COLUMN 10, "| DIMAS .81% ",
COLUMN 25 , total_gerente USING "##,###,###.##",
COLUMN 45, total_gerente * (.81/100) USING "##,###.##",
COLUMN 55, "|"
PRINT COLUMN 10, "| ALTAGRACIA 50% ",
COLUMN 45, total_subgerente USING "###,###.##",
COLUMN 55, "|"
PRINT COLUMN 10, "| KORA 30% ",
COLUMN 45, total_empleado1 USING "###,###.##",
COLUMN 55, "|"
PRINT COLUMN 10, "| RODOLFO 20% ",
COLUMN 45, total_empleado USING "###,###.##",
COLUMN 55, "|"
PRINT COLUMN 10, "|--------------------------------------------|"
END IF
ELSE
PRINT COLUMN 10, "|--------------------------------------------|"
PRINT COLUMN 10, "| COMISIONES ADICIONALES |"
PRINT COLUMN 10, "|--------------------------------------------|"
PRINT COLUMN 11, "COBRADOR",
COLUMN 25, "MONTO COBRADO",
COLUMN 45, "COMISION"
PRINT COLUMN 10, "|--------------------------------------------|"
PRINT COLUMN 10, "| DIMAS .81% ",
COLUMN 25 , total_gerente USING "USD$##,###,###.##",
COLUMN 45, total_gerente * (.81/100) USING "USD$##,###.##",
COLUMN 55, "|"
PRINT COLUMN 10, "| ROSA .232%",
COLUMN 25, total_cobrado USING "USD$##,###,###.##",
COLUMN 45, total_cobrado * (.232/100) USING "USD$###,###.##",
COLUMN 55, "|"
END IF
END REPORT
FUNCTION pantalla()
DEFINE fecha CHAR(8),
hora char(5)
LET fecha = today USING "dd/mm/yy"
LET hora = time
LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2
DISPLAY p_companias.nombre CLIPPED AT 4,lj ATTRIBUTE (REVERSE,blue)
DISPLAY fecha AT 4,70 ATTRIBUTE (blue)
DISPLAY "Sistema de Cuentas por Cobrar" AT 5,25
DISPLAY hora AT 6,73 ATTRIBUTE(blue)
CALL fgl_drawbox(5,79,3,1)
#CALL fgl_drawbox(1,79,22,1)
END FUNCTION