930 lines
34 KiB
Plaintext
930 lines
34 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
PROGRAMA : CCPRRP035
|
|
OBJETIVO : Comisiones por Ventas Totalizado
|
|
PROGRAMADOR : Tadeo A. Ferreras
|
|
FECHA REALIZACION : Oct. 06, 1994
|
|
-------------------------------------------------------------------------------
|
|
}
|
|
GLOBALS "ccprgb000.4gl"
|
|
# Variables para controlar que el nombre del articulo y del vendedor
|
|
# se busque una sola vez
|
|
|
|
DEFINE resumen RECORD LIKE cctb00006.*
|
|
|
|
DEFINE fact_ant INTEGER
|
|
DEFINE p_datos RECORD
|
|
fecha_in DATE,
|
|
fecha_fin DATE
|
|
END RECORD
|
|
|
|
DEFINE porc_rep,porciento,p_itbi DECIMAL(8,2)
|
|
DEFINE p_neto,t_valor,valor_desc DECIMAL(12,2)
|
|
DEFINE fecha1,fecha2 DATE
|
|
DEFINE selec18,selec19 CHAR(1000)
|
|
DEFINE p_mes SMALLINT
|
|
DEFINE codigo,codigo_ant CHAR(7)
|
|
DEFINE vende,vende_ant CHAR(7)
|
|
DEFINE p_ano CHAR(4)
|
|
DEFINE porc_vv,porc_v,porc_c,comision_c,t_comision,tt_comision_d,
|
|
t_comision_d,t_neto,neto,tt_comision_c,t_comision_c,tt_neto,
|
|
ttt_comision_d, tt_cobrado,t_cobrado,cobrado,comision_d
|
|
DECIMAL(14,4)
|
|
|
|
# Variables para la captura de la informacion del reporte
|
|
|
|
DEFINE mes SMALLINT
|
|
DEFINE cod_cia SMALLINT
|
|
DEFINE salir,salir18,salir19,ventas CHAR(1)
|
|
DEFINE idx1,idx18,idx19 INTEGER
|
|
|
|
FUNCTION ccprrp035()
|
|
# Variables que toman los valores del query y a la vez estas mismas variables
|
|
# Asignan estos valores a otra que se imprimira posteriormente
|
|
DEFINE vendedor RECORD
|
|
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 INTEGER ,
|
|
precio DECIMAL(10,2),
|
|
porciento LIKE vetb00002.porc_desc,
|
|
codigo CHAR(7)
|
|
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
|
|
# Atrapa el error de run-time
|
|
|
|
# WHENEVER ERROR CONTINUE
|
|
# Especificaciones para el desplegue de errores y formulario.
|
|
# Reserva lineas para tales fines.
|
|
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21
|
|
# Desplegue del formulario de entrada de informacion
|
|
|
|
OPEN FORM ccfmrp035 FROM "ccfmrp035"
|
|
DISPLAY FORM ccfmrp035
|
|
#----------------------------------------------------------
|
|
|
|
CALL pantalla()
|
|
|
|
DISPLAY "ccprrp035" AT 4,3
|
|
DISPLAY "Comision Por Vendedor Totalizado" AT 6,24
|
|
|
|
## Tipo de papel necesari para imprimir el reporte
|
|
LET tipo_papel = 2
|
|
CALL msgrp000(tipo_papel)
|
|
|
|
# Entrada de datos para el reporte
|
|
|
|
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 fecha1,fecha2
|
|
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 BY NAME criterio ON a.cod_cia,a.sec_vend
|
|
|
|
#-------------------------------------------------------------------
|
|
# 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
|
|
|
|
DELETE FROM cctb00006
|
|
# Prepara al sistema operativo para recibir el reporte
|
|
|
|
START REPORT reporte35 TO "C:\\archivo"
|
|
# Buscando las informaciones del reporte
|
|
|
|
DISPLAY " " AT 19,14
|
|
|
|
LET selec19 =
|
|
"SELECT a.cod_cia,a.sec_vend,a.fecha_factura,a.factura,a.cond_pago, ",
|
|
" c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,c.cantidad,c.precio, ",
|
|
" a.porc_desc ",
|
|
"FROM vetb00002 a,vetb00003 c ",
|
|
"WHERE a.fecha_factura between ? and ? and ",
|
|
" a.ventas=1 and a.factura=c.factura AND a.status_t is null AND ",
|
|
criterio clipped," ORDER BY 1,2,6,7,8,9"
|
|
|
|
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
|
|
|
|
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
|
|
|
|
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.precio IS NULL THEN
|
|
LET vendedor.precio = 0
|
|
END IF
|
|
|
|
IF vendedor.cantidad IS NULL THEN
|
|
LET vendedor.cantidad = 0
|
|
END IF
|
|
# Busco la descripcion del articulo
|
|
LET vendedor.codigo = vendedor.cod_n using "&",vendedor.cod_grupo using "&",
|
|
vendedor.cod_tipo using "&&",vendedor.cod_sec using "&&&"
|
|
|
|
IF vendedor.sec_vend != 8888 THEN
|
|
OUTPUT TO REPORT reporte35 (vendedor.*)
|
|
END IF
|
|
END WHILE
|
|
|
|
# Aqui se le especifica al sistema operativo que el reporte ha terminado
|
|
# el sistema operativo hace el resto
|
|
|
|
FINISH REPORT reporte35
|
|
#---------------------------------------------------------------------
|
|
CLEAR SCREEN
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
|
# Rutina de reporte
|
|
|
|
REPORT reporte35(x)
|
|
# Variable que toma el valor de la funcion que llamo a esta rutina
|
|
|
|
DEFINE x RECORD
|
|
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 INTEGER ,
|
|
precio DECIMAL(10,2),
|
|
porciento LIKE vetb00002.porc_desc,
|
|
codigo CHAR(7)
|
|
END RECORD
|
|
# Esta variable toma el valor del nombre del mes para imprimirse
|
|
|
|
DEFINE nombre_vend CHAR(30),
|
|
apellido_vend CHAR(30)
|
|
DEFINE nombre_mes CHAR(10)
|
|
DEFINE porc_ventas DECIMAL(10,4)
|
|
#------------------------------------------------------------------
|
|
# 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 j,k INTEGER
|
|
DEFINE doble_on CHAR(3)
|
|
DEFINE doble_off CHAR(3)
|
|
DEFINE negrillas_on CHAR(3)
|
|
DEFINE negrillas_off CHAR(3)
|
|
DEFINE comp_on CHAR(3)
|
|
DEFINE comp_off CHAR(3)
|
|
DEFINE doce CHAR(3)
|
|
DEFINE normal CHAR(3)
|
|
#----------------------------------------------------------------------
|
|
# Esta variable es para asignarle la hora del dia e imprimir en HH:MM
|
|
|
|
DEFINE hora CHAR(5)
|
|
#-----------------------------------------------------------------------
|
|
# Con esta variable se hace un calculo porcentual
|
|
|
|
DEFINE porc DECIMAL(10,4)
|
|
#-----------------------------------------------------------------------
|
|
# Variables totales del reporte
|
|
DEFINE tt_unidades,t_unidades,vt_vend,total_vend,valor_pagar DECIMAL(12,2)
|
|
DEFINE t_total_vend,j_valor,j_unidades,valor_pagar1,v_valor,vv_valor,
|
|
t_cant_dev,cant_dev,tt_cant_dev,tt_total_vend,otro_desc,
|
|
descuentos,und_descuento,und_netas,ventas_netas,ttt_cant_dev ,
|
|
t_Desc,t_und_netas,tt_valor,tt_valor1,tt_und_netas,ttt_und_netas
|
|
DECIMAL(12,2),
|
|
precio_neto,precio_bruto,porciento,porc_dev DECIMAL(8,4),
|
|
f_ventas,f_adicional,f_cobros,f_ck,f_dev,f_neto DECIMAL (12,2)
|
|
|
|
# Definicion de salida del reporte, margenes.
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 4
|
|
#------------------------------------------------------------------------
|
|
|
|
#ORDER BY x.cod_cia,x.sec_vend,x.codigo
|
|
|
|
FORMAT
|
|
PAGE HEADER
|
|
# Asignaciones de los valores ASCII para la impresion
|
|
|
|
LET doble_on = ASCII 001
|
|
LET doble_off = ASCII 002
|
|
LET negrillas_on = ASCII 27, ASCII 69
|
|
LET negrillas_off = ASCII 27, ASCII 69
|
|
LET comp_on = ASCII 031
|
|
#LET comp_on = ASCII 27,ASCII 15
|
|
LET comp_off = ASCII 18
|
|
LET doce = ASCII 27, ASCII 77
|
|
LET normal = ASCII 15
|
|
LET hora = time
|
|
|
|
# Funcion que busca los meses del ano
|
|
SELECT descrip INTO nombre_mes FROM mestable WHERE mes = p_mes
|
|
#--------------------------------------------------------------------------
|
|
|
|
LET lj = (197 - LENGTH(p_companias.nombre CLIPPED))/2
|
|
PRINT COLUMN 1, comp_on
|
|
PRINT COLUMN 1, "ccprrp035",
|
|
COLUMN lj, p_companias.nombre CLIPPED,
|
|
COLUMN 190, "Pag. ",pageno using "###"
|
|
PRINT COLUMN 76, " Sistema de Cuentas por Cobrar",
|
|
COLUMN 190, today using "dd/mm/yy"
|
|
PRINT COLUMN 76, " Comision por Vendedor Totalizado",
|
|
COLUMN 193, hora
|
|
|
|
PRINT COLUMN 40, " "
|
|
|
|
PRINT COLUMN 1, "DESDE: ",fecha1 using "dd/mm/yy",
|
|
" HASTA: ",fecha2 using "dd/mm/yy"
|
|
|
|
PRINT COLUMN 1, "---------------------------------------------------",
|
|
"---------------------------------------------------",
|
|
"---------------------------------------------------",
|
|
"---------------------------------------------"
|
|
|
|
PRINT COLUMN 56, " VENTAS ",
|
|
COLUMN 98, "COBROS",
|
|
COLUMN 145, "DEVOLUCIONES"
|
|
|
|
PRINT COLUMN 2, "VENDEDOR",
|
|
COLUMN 46, "VALOR",
|
|
COLUMN 56, "UNIDADES",
|
|
COLUMN 68, "COM./VENTA",
|
|
COLUMN 81, "COMISION",
|
|
COLUMN 97, "COBRADO",
|
|
COLUMN 106, "COM./COBROS",
|
|
COLUMN 125, "ITBIS",
|
|
COLUMN 133, "COMISION",
|
|
COLUMN 144, "CKS DVTOS",
|
|
COLUMN 162, "CANTIDAD",
|
|
COLUMN 176, "COMISION",
|
|
COLUMN 194, "NETO"
|
|
|
|
PRINT COLUMN 1,
|
|
"---------------------------------------------------",
|
|
"---------------------------------------------------",
|
|
"---------------------------------------------------",
|
|
"---------------------------------------------"
|
|
|
|
SKIP 1 LINE
|
|
BEFORE GROUP OF x.cod_cia
|
|
IF x.cod_cia = 1 THEN
|
|
PRINT COLUMN 2, p_companias.nombre CLIPPED
|
|
END IF
|
|
IF x.cod_cia = 2 THEN
|
|
PRINT COLUMN 2, p_companias.nombre CLIPPED
|
|
END IF
|
|
|
|
LET j = x.cod_cia
|
|
LET k = 0
|
|
LET tt_valor = 0
|
|
LET tt_und_netas = 0
|
|
LET tt_unidades = 0
|
|
LET t_neto = 0
|
|
LET t_total_vend = 0
|
|
LET t_comision_c = 0
|
|
LET tt_comision_d = 0
|
|
LET tt_cant_dev = 0
|
|
LET t_cobrado = 0
|
|
|
|
|
|
BEFORE GROUP OF x.sec_vend
|
|
LET k = k + 1
|
|
LET t_desc = 0
|
|
LET t_unidades = 0
|
|
LET total_vend = 0
|
|
LET t_cant_dev = 0
|
|
LET t_comision_d = 0
|
|
LET t_und_netas = 0
|
|
{
|
|
# busca el promedio de descuento por vendedor para las pilas de carbon
|
|
IF x.cod_cia = "1" THEN
|
|
LET porciento = 1
|
|
SELECT avg(a.porc_desc) INTO porciento
|
|
FROM vetb00002 a,vetb00003 b
|
|
WHERE (a.sec_vend = x.sec_vend) AND
|
|
(a.factura = b.factura) AND
|
|
(a.fecha_factura BETWEEN fecha1 AND fecha2) AND
|
|
a.status_t IS NULL
|
|
|
|
IF porciento IS NULL THEN
|
|
LET porciento = 1
|
|
END IF
|
|
END IF
|
|
#-----------------------------------------------------------------------------
|
|
}
|
|
# Impresion del nombre del vendedor
|
|
SELECT nom1_emp,apell1_emp INTO nombre_vend,apellido_vend
|
|
FROM adtb00003 WHERE num_emp = x.sec_vend
|
|
|
|
LET porc_vv = 0
|
|
SELECT MAX(a.porc_ventas) INTO porc_vv FROM vetb00011 a
|
|
WHERE a.sec_vend = x.sec_vend
|
|
|
|
IF porc_vv IS NULL THEN
|
|
LET porc_vv = 0
|
|
END IF
|
|
|
|
PRINT COLUMN 2,x.sec_vend," ",nombre_vend clipped," ",
|
|
apellido_vend clipped;
|
|
|
|
|
|
BEFORE GROUP OF x.codigo
|
|
|
|
#SKIP 1 LINE
|
|
|
|
IF t_total_vend is null THEN
|
|
LET t_total_vend = 0
|
|
END IF
|
|
|
|
LET porc_ventas = 0
|
|
SELECT UNIQUE a.porc_ventas INTO porc_ventas FROM vetb00011 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 AND
|
|
a.sec_vend = x.sec_vend AND a.status_t IS NULL
|
|
|
|
IF porc_ventas IS NULL THEN
|
|
LET porc_ventas = 0
|
|
END IF
|
|
|
|
ON EVERY ROW
|
|
|
|
LET porc = porc_ventas
|
|
LET valor_pagar = 0
|
|
LET porciento = x.porciento /100
|
|
LET descuentos = (x.cantidad*x.precio) *
|
|
porciento
|
|
LET t_desc = t_desc + descuentos
|
|
IF x.cod_cia = 1 THEN
|
|
IF x.cantidad != 0 THEN
|
|
LET precio_bruto = x.cantidad*x.precio /
|
|
x.cantidad
|
|
END IF
|
|
LET precio_neto = precio_bruto - porciento
|
|
IF precio_neto != 0 THEN
|
|
LET und_descuento = descuentos / precio_neto
|
|
END IF
|
|
LET ventas_netas = (x.cantidad * x.precio) -
|
|
descuentos
|
|
LET und_netas = x.cantidad - und_descuento
|
|
LET valor_pagar = und_netas * porc_ventas
|
|
|
|
{ Este Vendedor Cobrara comision por monto vendido
|
|
Modificado Por: Juan F. Soto
|
|
Fecha : Febrero 14, 1996
|
|
IF x.sec_vend = 144 THEN
|
|
LET valor_pagar = ((x.cantidad * x.precio) - descuentos) *
|
|
porc_ventas
|
|
END IF
|
|
}
|
|
END IF
|
|
|
|
# Para el vendedor que factura en la compania que usualmente es al contado
|
|
# se le paga el porciento por valores brutos vendidos
|
|
|
|
#-----------------------------------------------------------------------------
|
|
|
|
# Esta es la acumulacion de lo que se le va ha pagar al vendedor
|
|
LET total_vend = valor_pagar + total_vend
|
|
LET t_und_netas = und_netas + t_und_netas
|
|
|
|
|
|
AFTER GROUP OF x.sec_vend
|
|
LET porc_c = 0
|
|
|
|
LET cant_dev = 0
|
|
LET comision_d = 0
|
|
|
|
IF x.cod_cia = 1 THEN
|
|
|
|
SELECT SUM(a.cantidad_2),SUM(a.cantidad_2*c.porc_ventas)
|
|
INTO t_cant_dev,t_comision_d
|
|
FROM iptb00006 a,vetb00028 b,OUTER vetb00011 c
|
|
WHERE a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND
|
|
a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec AND
|
|
a.status_t IS NULL AND a.cod_mov IN(12,13) AND a.cod_n = 3 AND
|
|
a.cod_sp_sec = b.sec_cliente AND a.fecha BETWEEN fecha1 and fecha2 AND
|
|
b.sec_vend = c.sec_vend AND b.sec_vend = x.sec_vend
|
|
|
|
SELECT MAX(a.porc_cobros) INTO porc_c FROM vetb00011 a
|
|
WHERE a.sec_vend = x.sec_vend AND a.cod_n = 3
|
|
ELSE
|
|
|
|
SELECT SUM(a.cantidad_2),SUM((a.cantidad_2*d.precio)*c.porc_ventas)
|
|
INTO t_cant_dev,t_comision_d
|
|
FROM iptb00006 a,vetb00028 b,OUTER vetb00011 c,vetb00025 d
|
|
WHERE a.cod_n = c.cod_n AND a.cod_grupo = c.cod_grupo AND
|
|
a.cod_tipo = c.cod_tipo AND a.cod_sec = c.cod_sec AND
|
|
a.cod_n = d.cod_n AND a.cod_grupo = d.cod_grupo AND
|
|
a.cod_tipo = d.cod_tipo AND a.cod_sec = d.cod_sec AND
|
|
a.status_t IS NULL AND a.cod_mov IN(12,13) AND a.cod_n > 3 AND
|
|
a.cod_sp_sec = b.sec_cliente AND d.sec_cliente IS NULL AND
|
|
b.sec_vend = c.sec_vend AND b.sec_vend = x.sec_vend AND
|
|
a.fecha BETWEEN fecha1 and fecha2
|
|
|
|
SELECT MAX(a.porc_ventas),MAX(a.porc_cobros) INTO porc_v,porc_c
|
|
FROM vetb00011 a WHERE a.sec_vend = x.sec_vend AND a.cod_n = 6
|
|
END IF
|
|
|
|
IF t_cant_dev IS NULL THEN
|
|
LET t_cant_dev = 0
|
|
END IF
|
|
IF t_comision_d IS NULL THEN
|
|
LET t_comision_d = 0
|
|
END IF
|
|
IF t_comision_d < 0 THEN
|
|
LET t_comision_d = t_comision_d * -1
|
|
END IF
|
|
|
|
IF porc_c IS NULL THEN
|
|
LET porc_c = 0
|
|
END IF
|
|
|
|
LET cobrado = 0
|
|
|
|
SELECT sum(a.valor*-1) INTO cobrado FROM CCTB00001 A,VETB00002 B
|
|
WHERE A.APLICA_A = B.FACTURA AND
|
|
A.FECHA_ORIG BETWEEN fecha1 AND fecha2 AND
|
|
A.TIPO_DOC = "PG" AND
|
|
A.COD_EMP_SEC = x.sec_vend AND b.fecha_factura > "010194" AND
|
|
A.STATUS_T IS NULL and b.cod_cia = x.cod_cia
|
|
IF t_cobrado IS NULL THEN
|
|
LET t_cobrado = 0
|
|
END IF
|
|
IF tt_cobrado IS NULL THEN
|
|
LET tt_cobrado = 0
|
|
END IF
|
|
IF t_comision_c IS NULL THEN
|
|
LET t_comision_c = 0
|
|
END IF
|
|
IF tt_comision_c IS NULL THEN
|
|
LET tt_comision_c = 0
|
|
END IF
|
|
IF tt_cant_dev IS NULL THEN
|
|
LET tt_cant_dev = 0
|
|
END IF
|
|
IF ttt_cant_dev IS NULL THEN
|
|
LET ttt_cant_dev = 0
|
|
END IF
|
|
IF tt_comision_d IS NULL THEN
|
|
LET tt_comision_d = 0
|
|
END IF
|
|
IF ttt_comision_d IS NULL THEN
|
|
LET ttt_comision_d = 0
|
|
END IF
|
|
IF tt_total_vend IS NULL THEN
|
|
LET tt_total_vend = 0
|
|
END IF
|
|
IF cobrado IS NULL THEN
|
|
LET cobrado = 0
|
|
END IF
|
|
IF porc_c IS NULL THEN
|
|
LET porc_c = 0
|
|
END IF
|
|
IF tt_neto IS NULL THEN
|
|
LET tt_neto = 0
|
|
END IF
|
|
LET comision_c = 0
|
|
LET comision_c = (cobrado/1.08) * porc_c
|
|
LET neto = total_vend + comision_c - t_comision_d
|
|
LET tt_valor = tt_valor + GROUP SUM(x.precio*x.cantidad) - t_Desc
|
|
LET tt_und_netas = tt_und_netas + t_und_netas
|
|
PRINT COLUMN 39, GROUP SUM(x.precio*x.cantidad)- t_desc
|
|
using "##,###,###.##",
|
|
COLUMN 55, t_und_netas using "##,###,###";
|
|
#COLUMN 55, GROUP SUM(x.cantidad)-t_cant_dev using "##,###,###";
|
|
|
|
IF x.cod_cia = 1 THEN
|
|
PRINT COLUMN 68, " ";
|
|
ELSE
|
|
LET total_vend = (GROUP SUM(x.precio*x.cantidad)- t_desc)*porc_v
|
|
PRINT COLUMN 68, porc_v using "#,###.####";
|
|
END IF
|
|
PRINT COLUMN 79, total_vend using "###,###.##",
|
|
COLUMN 93, cobrado using "##,###,###.##",
|
|
COLUMN 104, porc_c using "#,###.####",
|
|
COLUMN 121, cobrado - (cobrado/1.08) using "###,###.##",
|
|
COLUMN 132, comision_c using "###,###.##",
|
|
COLUMN 144, "__________",
|
|
COLUMN 157, t_cant_dev using "##,###,###.##",
|
|
COLUMN 174, t_comision_d using "###,###.##",
|
|
COLUMN 185, total_vend+comision_c-t_comision_d
|
|
using "###,###,###.##"
|
|
IF x.sec_vend = 338 or
|
|
x.sec_vend = 367 THEN
|
|
LET t_valor = 0
|
|
IF x.cod_cia = 1 THEN
|
|
CALL teprrp005(x.sec_vend)
|
|
END IF
|
|
ELSE
|
|
LET t_valor = 0
|
|
END IF
|
|
|
|
# Busca los cheques devueltos de cuentas por cobrar
|
|
SELECT SUM(a.valor) INTO valor_devuelto
|
|
FROM cctb00001 a,vetb00002 b
|
|
WHERE b.cod_cia = x.cod_cia and
|
|
(a.cod_emp_Sec = x.sec_vend and
|
|
a.fecha_orig between fecha1 and fecha2 and
|
|
a.tipo_doc = "ND" and
|
|
a.valor_cheque is not null) and
|
|
(a.aplica_a = b.factura) and
|
|
a.status_t is null
|
|
|
|
IF x.cod_cia = 1 THEN
|
|
SELECT unique a.porc_cobros INTO porc_dev
|
|
FROM vetb00011 a
|
|
WHERE a.sec_vend = x.sec_vend and
|
|
a.cod_n = 3 and status_t is null
|
|
ELSE
|
|
SELECT unique a.porc_cobros INTO porc_dev
|
|
FROM vetb00011 a
|
|
WHERE a.sec_vend = x.sec_vend and
|
|
a.cod_n in (6,9) and status_t is null
|
|
END IF
|
|
|
|
IF valor_devuelto is null THEN
|
|
LET valor_devuelto = 0
|
|
END IF
|
|
|
|
IF valor_devuelto != 0 THEN
|
|
LET valor_devuelto = valor_devuelto / 1.08
|
|
LET valor_devuelto = valor_devuelto * porc_dev
|
|
END IF
|
|
|
|
#----------------------------------------------------------------------------
|
|
{
|
|
INSERTA EN LA TABLA TEMPORAL CCTB00006 LOS REGISTROS PARA IMPRIMIR UN
|
|
RESUMEN POR VENDEDOR AL FINAL DEL REPORTE
|
|
}
|
|
INSERT INTO cctb00006 VALUES (x.sec_vend,nombre_vend,apellido_vend,total_vend,
|
|
t_valor,comision_c,valor_devuelto,t_comision_d,neto,
|
|
user,current)
|
|
{
|
|
LET arreglo[j,k].ck_devuelto = valor_devuelto
|
|
LET arreglo[j,k].comision_v = total_vend
|
|
LET arreglo[j,k].comision_c = comision_c
|
|
LET arreglo[j,k].comision_d = t_comision_d
|
|
}
|
|
# Acumulacion de los totales por compania
|
|
LET t_neto = t_neto + neto
|
|
LET t_cobrado = t_cobrado + cobrado
|
|
LET t_comision_c = t_comision_c + comision_c
|
|
LET t_total_vend = t_total_vend + total_vend
|
|
LET tt_cant_dev = tt_cant_dev + t_cant_dev
|
|
LET tt_comision_d = tt_comision_d + t_comision_d
|
|
|
|
LET tt_neto = tt_neto + neto
|
|
LET ttt_cant_dev = ttt_cant_dev + t_cant_dev
|
|
LET ttt_comision_d= ttt_comision_d + t_comision_d
|
|
LET tt_cobrado = tt_cobrado + cobrado
|
|
LET tt_comision_c= tt_comision_c + comision_c
|
|
LET tt_total_vend= tt_total_vend + total_vend
|
|
LET total_vend = 0
|
|
|
|
SKIP 1 LINE
|
|
|
|
AFTER GROUP OF x.cod_cia
|
|
PRINT COLUMN 1,
|
|
"---------------------------------------------------",
|
|
"---------------------------------------------------",
|
|
"---------------------------------------------------",
|
|
"---------------------------------------------"
|
|
|
|
PRINT COLUMN 2, "Total Cia. ",
|
|
COLUMN 39, tt_valor using "##,###,###.##",
|
|
COLUMN 55, tt_und_netas using "##,###,###",
|
|
COLUMN 79, t_total_vend using "###,###.##",
|
|
COLUMN 93, t_cobrado using "##,###,###.##",
|
|
COLUMN 121, t_cobrado - (t_cobrado/1.08) using "###,###.##",
|
|
COLUMN 132, t_comision_c using "###,###.##",
|
|
COLUMN 144, "__________",
|
|
COLUMN 157, tt_cant_dev using "##,###,###.##",
|
|
COLUMN 174, tt_comision_d using "###,###.##",
|
|
COLUMN 185, t_neto using "###,###,###.##"
|
|
PRINT COLUMN 1, "---------------------------------------------------",
|
|
"---------------------------------------------------",
|
|
"---------------------------------------------------",
|
|
"---------------------------------------------"
|
|
IF tt_valor1 IS NULL THEN
|
|
LET tt_valor1 = 0
|
|
END IF
|
|
IF ttt_und_netas IS NULL THEN
|
|
LET ttt_und_netas = 0
|
|
END IF
|
|
LET tt_valor1 = tt_valor1 + tt_valor
|
|
LET ttt_und_netas = ttt_und_netas + tt_und_netas
|
|
LET tt_valor = 0
|
|
SKIP 1 LINE
|
|
|
|
ON LAST ROW
|
|
PRINT COLUMN 2, "Total General ",
|
|
COLUMN 39, tt_valor1 using "##,###,###.##",
|
|
COLUMN 55, ttt_und_netas using "##,###,###",
|
|
COLUMN 79, tt_total_vend using "###,###.##",
|
|
COLUMN 93, tt_cobrado using "##,###,###.##",
|
|
COLUMN 119, tt_cobrado - (tt_cobrado/1.08) using "#,###,###.##",
|
|
COLUMN 132, tt_comision_c using "###,###.##",
|
|
COLUMN 144, "__________",
|
|
COLUMN 157, ttt_cant_dev using "##,###,###.##",
|
|
COLUMN 174, ttt_comision_d using "###,###.##",
|
|
COLUMN 185, tt_neto using "###,###,###.##"
|
|
|
|
PRINT COLUMN 1, "===================================================",
|
|
"===================================================",
|
|
"===================================================",
|
|
"============================================="
|
|
PRINT COLUMN 98, "Comision",
|
|
COLUMN 161, "Comision"
|
|
|
|
PRINT COLUMN 2, "Total Por Vendedor",
|
|
COLUMN 98, "Adicional",
|
|
COLUMN 155, "Cks. Devueltos"
|
|
|
|
PRINT COLUMN 2, "------------------",
|
|
COLUMN 98, "---------",
|
|
COLUMN 155, "---------------"
|
|
|
|
LET f_ventas = 0
|
|
LET f_adicional = 0
|
|
LET f_cobros = 0
|
|
LET f_ck = 0
|
|
LET f_dev = 0
|
|
LET f_neto = 0
|
|
DECLARE busca_r CURSOR FOR
|
|
SELECT a.sec_vend,a.nombre,a.apellido,SUM(a.comision_venta),
|
|
SUM(a.comision_adicional),SUM(a.comision_cobros),
|
|
SUM(a.comision_ck),SUM(a.comision_dev)
|
|
FROM cctb00006 a
|
|
GROUP BY 1,2,3
|
|
ORDER BY 1
|
|
|
|
FOREACH busca_r INTO resumen.*
|
|
PRINT COLUMN 1, resumen.sec_vend USING "&&&&"," ",
|
|
resumen.nombre,resumen.apellido CLIPPED,
|
|
COLUMN 79, resumen.comision_venta USING "##,###,###.##",
|
|
COLUMN 93, resumen.comision_adicional USING "##,###,###.##",
|
|
COLUMN 132, resumen.comision_cobros USING "###,###.##",
|
|
COLUMN 144, "__________",
|
|
COLUMN 157, resumen.comision_ck USING "##,###,###.##",
|
|
COLUMN 174, resumen.comision_dev USING "###,###.##",
|
|
COLUMN 185, resumen.comision_venta + resumen.comision_adicional +
|
|
resumen.comision_cobros - resumen.comision_dev -
|
|
resumen.comision_ck USING "((((,(((,(((.##)"
|
|
|
|
LET f_ventas = f_ventas + resumen.comision_venta
|
|
LET f_adicional = f_adicional + resumen.comision_adicional
|
|
LET f_cobros = f_cobros + resumen.comision_cobros
|
|
LET f_ck = f_ck + resumen.comision_ck
|
|
LET f_dev = f_dev + resumen.comision_dev
|
|
LET f_neto = f_neto + resumen.comision_venta +
|
|
resumen.comision_adicional + resumen.comision_cobros -
|
|
resumen.comision_dev - resumen.comision_ck
|
|
END FOREACH
|
|
|
|
PRINT COLUMN 79, "-------------",
|
|
COLUMN 93, "-------------",
|
|
COLUMN 132, "----------",
|
|
COLUMN 157, "-------------",
|
|
COLUMN 174, "----------",
|
|
COLUMN 185, "----------"
|
|
|
|
PRINT COLUMN 79, f_ventas USING "##,###,###.##",
|
|
COLUMN 93, f_adicional USING "##,###,###.##",
|
|
COLUMN 132, f_cobros USING "###,###.##",
|
|
COLUMN 157, f_ck USING "##,###,###.##",
|
|
COLUMN 174, f_dev USING "###,###.##",
|
|
COLUMN 185, f_neto USING "###,###.##"
|
|
|
|
PRINT comp_off
|
|
END REPORT
|
|
|
|
FUNCTION teprrp005(sec_vend)
|
|
DEFINE imprime CHAR(1)
|
|
DEFINE sec_vend,cod_cia SMALLINT
|
|
|
|
DEFINE vendedor RECORD
|
|
cod_vend SMALLINT,
|
|
sec_vend SMALLINT,
|
|
fecha_factura DATE,
|
|
factura INTEGER,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cantidad INTEGER ,
|
|
precio DECIMAL(10,2),
|
|
recibo INTEGER,
|
|
fecha DATE,
|
|
valor_c DECIMAL(12,2),
|
|
porc_venta DECIMAL(10,4),
|
|
descrip_esp CHAR(30),
|
|
nombre_vend CHAR(30),
|
|
apellido_vend CHAR(30) ,
|
|
vende CHAR(6),
|
|
codigo CHAR(7)
|
|
END RECORD
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
START REPORT reporte_5 TO "jh1"
|
|
|
|
DISPLAY "Buscando Liq. Comision... Espere Por Favor" AT 19,14
|
|
DECLARE c_vende1 CURSOR FOR
|
|
SELECT UNIQUE d.cod_emp,d.cod_emp_sec,a.fecha_factura,a.factura,
|
|
b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,b.cantidad,
|
|
b.cantidad * b.precio ,d.num_doc,d.fecha_orig,d.valor,
|
|
a.porc_desc,' ',' ',' ',' ',' ',a.porc_desc,a.porc_itbi,a.neto
|
|
FROM vetb00002 a,vetb00003 b ,cctb00005 c,cctb00001 d
|
|
WHERE d.fecha_orig between fecha1 and fecha2
|
|
and (a.fecha_factura > "010194") and (a.factura = b.factura) and
|
|
(a.cod_cia = 1) and a.status_t is null and
|
|
(b.cod_n = c.cod_n and b.cod_grupo = c.cod_grupo and
|
|
b.cod_tipo = c.cod_tipo and b.cod_sec = c.cod_sec) and
|
|
d.cod_emp_sec in (sec_vend) and d.tipo_doc = "PG" and
|
|
d.aplica_a = a.factura and d.status_t is null
|
|
|
|
FOREACH c_vende1 INTO vendedor.*,porciento,p_itbi,p_neto
|
|
DISPLAY "Vendedor: ",vendedor.sec_vend using "&&&&"," ",
|
|
vendedor.cod_n using "&","-",vendedor.cod_grupo using "&","-",
|
|
vendedor.cod_tipo using "&&","-",vendedor.cod_sec using "&&&"
|
|
AT 13,1
|
|
SELECT nom1_emp,apell1_emp
|
|
INTO vendedor.nombre_vend,vendedor.apellido_vend
|
|
FROM adtb00003 WHERE
|
|
num_emp = vendedor.sec_vend
|
|
|
|
LET vendedor.vende =
|
|
vendedor.sec_vend using "&&&&"
|
|
|
|
LET vendedor.codigo = vendedor.cod_n using "&",
|
|
vendedor.cod_grupo using "&",
|
|
vendedor.cod_tipo using "&&",
|
|
vendedor.cod_sec using "&&&"
|
|
|
|
LET valor_desc = vendedor.precio * (porciento/100)
|
|
|
|
LET vendedor.precio = vendedor.precio - valor_desc
|
|
|
|
LET vendedor.precio =
|
|
vendedor.precio + vendedor.precio * (p_itbi / 100)
|
|
|
|
LET porc_rep = (vendedor.precio / p_neto) * 100
|
|
|
|
OUTPUT TO REPORT reporte_5 (vendedor.*,porc_rep,p_neto)
|
|
|
|
END FOREACH
|
|
DISPLAY " " AT 19,14
|
|
|
|
FINISH REPORT reporte_5
|
|
RUN "type C:\\archivo > %USPRINT%" END FUNCTION
|
|
REPORT reporte_5(x,porc,p_neto1)
|
|
DEFINE x RECORD
|
|
cod_vend SMALLINT,
|
|
sec_vend SMALLINT,
|
|
fecha_factura DATE,
|
|
factura INTEGER,
|
|
cod_n SMALLINT,
|
|
cod_grupo SMALLINT,
|
|
cod_tipo SMALLINT,
|
|
cod_sec SMALLINT,
|
|
cantidad INTEGER ,
|
|
precio DECIMAL(10,2),
|
|
recibo INTEGER,
|
|
fecha DATE,
|
|
valor_c DECIMAL(12,2),
|
|
porc_venta DECIMAL(10,4),
|
|
descrip_esp CHAR(30),
|
|
nombre_vend CHAR(30),
|
|
apellido_vend CHAR(30) ,
|
|
vendedor CHAR(6) ,
|
|
codigo CHAR(7)
|
|
END RECORD
|
|
|
|
DEFINE nombre_mes CHAR(10)
|
|
DEFINE ii,total_clientes INTEGER
|
|
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 i SMALLINT
|
|
DEFINE porc DECIMAL(10,4)
|
|
DEFINE t_valor1,p_neto1,valor DECIMAL(12,2)
|
|
|
|
OUTPUT
|
|
TOP MARGIN 0
|
|
LEFT MARGIN 0
|
|
BOTTOM MARGIN 4
|
|
|
|
ORDER BY x.vendedor,x.factura,x.codigo,x.recibo
|
|
|
|
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
|
|
|
|
BEFORE GROUP OF x.vendedor
|
|
LET t_valor = 0
|
|
LET t_valor1 = 0
|
|
ON EVERY ROW
|
|
IF x.recibo is not null THEN
|
|
IF x.valor_c < 0 THEN
|
|
LET x.valor_c = x.valor_c * -1
|
|
END IF
|
|
IF x.precio < x.valor_c THEN
|
|
LET valor = x.valor_c * (porc / 100)
|
|
ELSE
|
|
LET valor = x.valor_c
|
|
END IF
|
|
LET t_valor = (valor * .01275) + t_valor
|
|
LET t_valor1 = valor + t_valor1
|
|
END IF
|
|
|
|
END REPORT
|