CREATE PROCEDURE CARTERA_PROVEEDORES_PROC
(
EMPRESA VARCHAR(100),
SUCURSAL VARCHAR(100),
MODELO VARCHAR(15),
NO_RANGOS INTEGER,
PFECHA TIMESTAMP,
PVENDEDOR VARCHAR(100),
PZONA VARCHAR(100),
PCUENTA VARCHAR(100),
PTERCERO VARCHAR(100),
PSUC_TERCERO VARCHAR(100),
PSUC_VENDEDOR VARCHAR(100)
)
RETURNS
(
ID_AUXILIAR VARCHAR(12),
ID_EMPRESA VARCHAR(2),
ID_SUCURSAL VARCHAR(2),
ID_TIPO VARCHAR(3),
NUMERO INTEGER,
CUOTA INTEGER,
ID_TERCERO INTEGER,
ID_SUCURSAL_TERCERO INTEGER,
NOMBRE_TERC VARCHAR(250),
TELEFONO_TERC VARCHAR(30),
SALDO DOUBLE PRECISION,
FECHA_DOC TIMESTAMP,
VENCIMIENTO TIMESTAMP,
ID_VENDEDOR INTEGER,
NOMBRE_VEND VARCHAR(250),
DESCRIPCION VARCHAR(255),
DIAS DOUBLE PRECISION,
RANGO1 DOUBLE PRECISION,
RANGO2 DOUBLE PRECISION,
RANGO3 DOUBLE PRECISION,
RANGO4 DOUBLE PRECISION,
RANGO5 DOUBLE PRECISION,
RANGO6 DOUBLE PRECISION,
RANGO7 DOUBLE PRECISION,
)
AS
declare variable ID_MODELO varchar(15);
declare variable ID_RANGO integer;
declare variable ID_DESCRIPCION_RANGO varchar(10);
declare variable DESCRIPCION_RANGO varchar(50);
declare variable DESDE integer;
declare variable HASTA integer;
declare variable TIPO_RANGO varchar(10);
declare variable NUMERO_RANGOS integer;
declare variable TITULO varchar(50);
declare variable Sql_INS VARCHAR(1024);
begin
FOR SELECT RANGO_REP_TERCERO_DET.ID_MODELO,
RANGO_REP_TERCERO_DET.ID_RANGO,
RANGO_REP_TERCERO_DET.ID_DESCRIPCION_RANGO,
RANGO_REP_TERCERO_DET.DESCRIPCION_RANGO,
RANGO_REP_TERCERO_DET.DESDE,
RANGO_REP_TERCERO_DET.HASTA,
RANGO_REP_TERCERO_DET.TIPO_RANGO,
RANGO_REP_TERCERO.NUMERO_RANGOS,
RANGO_REP_TERCERO.DESCRIPCION AS TITULO
from RANGO_REP_TERCERO_DET,RANGO_REP_TERCERO
where RANGO_REP_TERCERO_DET.ID_MODELO=RANGO_REP_TERCERO.ID_MODELO AND RANGO_REP_TERCERO.ID_MODELO=:modelo
INTO :ID_MODELO, :Id_rango, :ID_DESCRIPCION_RANGO,ESCRIPCION_RANGO,ESDE,:HASTA,:TIPO_RANGO, :NUMERO_RANGOS,:TITULO
DO
BEGIN
SALDO=0; RANGO1=0; RANGO2=0; RANGO3=0; RANGO4=0; RANGO5=0; RANGO6=0; RANGO7=0;
SQL_INS= 'SELECT SUM(e.DEBITO-e.CREDITO) AS SALDO, e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, e.numero_cruce, E.CUOTA_CRUCE, ';
SQL_INS=SQL_INS ||' d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR FROM CUENTAS_POR_TERCERO e , cuentas_por_tercero d ';
SQL_INS=SQL_INS ||' where e.ID_EMPRESA_CRUCE=d.ID_EMPRESA and e.ID_SUCURSAL_CRUCE=d.ID_SUCURSAL AND E.CUOTA_CRUCE=D.CUOTA ';
SQL_INS=SQL_INS ||' and e.ID_TIPO_DOC_CRUCE= d.id_tipo_doc and e.numero_cruce=d.numero ' ||:EMPRESA ||:SUCURSAL;
SQL_INS=SQL_INS ||' and ( "'||fecha || '" - d.vencimiento)>= ' ||:desde || ' and ( "'||fecha || '" - d.vencimiento)<= ' ||:hasta;
SQL_INS=SQL_INS || tercero || :PVENDEDOR || :PSUC_VENDEDOR;
SQL_INS=SQL_INS || suc_tercero ||cuenta;
SQL_INS=SQL_INS ||' GROUP BY e.ID_AUXILIAR,e.ID_EMPRESA_CRUCE, e.ID_SUCURSAL_CRUCE,e.ID_TIPO_DOC_CRUCE, ';
SQL_INS=SQL_INS ||' e.numero_cruce, E.CUOTA_CRUCE , d.fecha, d.vencimiento,e.id_tercero,e.ID_SUCURSAL_TERCERO, E.ID_VENDEDOR ';
SQL_INS=SQL_INS ||' having SUM(e.DEBITO-e.CREDITO)<>0 ';
FOR EXECUTE STATEMENT SQL_INS
into :saldo,:id_auxiliar,:id_empresa,:id_sucursal,:id_tipo,:numero,:cuota,:fecha_DOC,:vencimiento,:id_ter cero,:id_sucursal_tercero, :ID_VENDEDOR
DO
BEGIN
dias = fecha - :vencimiento;
if (:ID_DESCRIPCION_RANGO='RANGO1') then
begin
rango1=:saldo;
end
else if (:ID_DESCRIPCION_RANGO='RANGO2') then
begin
rango2=:saldo;
end
else if (:ID_DESCRIPCION_RANGO='RANGO3') then
begin
rango3=:saldo;
end
else if (:ID_DESCRIPCION_RANGO='RANGO4') then
begin
rango4=:saldo;
end
else if (:ID_DESCRIPCION_RANGO='RANGO5') then
begin
rango5=:saldo;
end
else if (:ID_DESCRIPCION_RANGO='RANGO6') then
begin
rango6=:saldo;
end
else if (:ID_DESCRIPCION_RANGO='RANGO7') then
begin
rango7=:saldo;
end
suspend;
SALDO=0; RANGO1=0; RANGO2=0; RANGO3=0; RANGO4=0; RANGO5=0; RANGO6=0; RANGO7=0;
END
end
end