USP_CONSTITUENCYDATERANGE_REFRESHMAJORDONORCONSTITUENCY
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@CONSTITUENCYREFRESHPROCESSID | uniqueidentifier | IN | |
@RECORDCOUNT | int | INOUT |
Definition
Copy
CREATE procedure dbo.USP_CONSTITUENCYDATERANGE_REFRESHMAJORDONORCONSTITUENCY
(
@CONSTITUENTID uniqueidentifier = null,
@CONSTITUENCYREFRESHPROCESSID uniqueidentifier = null,
@RECORDCOUNT int = 0 output
)
as
begin
set nocount on;
set @RECORDCOUNT = 0;
declare @CURRENTDATE datetime = getdate();
declare @MAJORDONORCONSTITUENCYDEFINITIONID uniqueidentifier = '1A9BFE80-604D-4B5B-8065-E751DDF6EF39';
declare @MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT money;
declare @MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT money;
declare @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION bit;
select top 1
@MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT = MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT,
@MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT = MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT,
@MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION
from
dbo.CONSTITUENCYCRITERIASPOUSE
begin try
if @CONSTITUENTID is not null and @CONSTITUENCYREFRESHPROCESSID is not null
begin
raiserror('ERR_REFRESH_CONSTITUENTANDSELECTION : A constituency refresh cannot be run with both a specific constituent and a selection.', 13, 1);
end
if object_id('tempdb..#MAJORDONORCONSTITUENTS') is not null
begin
drop table #MAJORDONORCONSTITUENTS;
end
create table #MAJORDONORCONSTITUENTS
(
CONSTITUENTID uniqueidentifier
);
if @CONSTITUENCYREFRESHPROCESSID is null and @CONSTITUENTID is null
begin
if @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = 1
begin
insert into #MAJORDONORCONSTITUENTS
(
CONSTITUENTID
)
select distinct
REVENUEANDRECOGNITION.CONSTITUENTID
from (
select
REVENUE.CONSTITUENTID,
REVENUE.ORGAMOUNT as AMOUNT
from
dbo.FINANCIALTRANSACTION as REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock)
on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI with (nolock)
on FTLI.FINANCIALTRANSACTIONID = REVENUE.ID
where
REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors
REVENUE.DELETEDON is null and FTLI.DELETEDON is null and
FTLI.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
union all
select
REVENUERECOGNITION.CONSTITUENTID,
REVENUERECOGNITION.ORGANIZATIONAMOUNT as AMOUNT
from
dbo.FINANCIALTRANSACTION as REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock)
on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as REVENUESPLIT with (nolock)
on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT with (nolock)
on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
inner join dbo.REVENUERECOGNITION with (nolock)
on REVENUESPLIT.ID = REVENUERECOGNITION.REVENUESPLITID
where
REVENUERECOGNITION.CONSTITUENTID is not null and -- Altru allows revenue without donors
REVENUE.CONSTITUENTID <> REVENUERECOGNITION.CONSTITUENTID and
REVENUE.DELETEDON is null and
REVENUESPLIT.DELETEDON is null and
REVENUESPLIT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
union all
select
RECOGNITIONCREDIT.CONSTITUENTID,
RECOGNITIONCREDIT.ORGANIZATIONAMOUNT as AMOUNT
from
dbo.RECOGNITIONCREDIT with (nolock)
inner join dbo.DONORCHALLENGEENCUMBERED with (nolock)
on RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID = DONORCHALLENGEENCUMBERED.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI with (nolock)
on FTLI.ID = DONORCHALLENGEENCUMBERED.REVENUESPLITID
where
RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 1 and
FTLI.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
) as REVENUEANDRECOGNITION
group by
REVENUEANDRECOGNITION.CONSTITUENTID
having (
@MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT <> 0 and
max(REVENUEANDRECOGNITION.AMOUNT) >= @MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT
) or (
@MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT <> 0 and
sum(REVENUEANDRECOGNITION.AMOUNT) >= @MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT
)
end
else
begin
insert into #MAJORDONORCONSTITUENTS
(
CONSTITUENTID
)
select distinct
REVENUE.CONSTITUENTID
from
dbo.FINANCIALTRANSACTION as REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock)
on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI with (nolock)
on FTLI.FINANCIALTRANSACTIONID = REVENUE.ID
where
REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors
REVENUE.DELETEDON is null and
FTLI.DELETEDON is null and
FTLI.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
group by
REVENUE.CONSTITUENTID
having
(
@MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT <> 0 and
max(FTLI.ORGAMOUNT) >= @MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT
) or
(
@MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT <> 0 and
sum(FTLI.ORGAMOUNT) >= @MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT
)
end
delete dbo.CONSTITUENCYDATERANGE
from
dbo.CONSTITUENCYDATERANGE
left join #MAJORDONORCONSTITUENTS as MAJORDONORCONSTITUENTS
on MAJORDONORCONSTITUENTS.CONSTITUENTID = CONSTITUENCYDATERANGE.CONSTITUENTID
where
MAJORDONORCONSTITUENTS.CONSTITUENTID is null
and CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @MAJORDONORCONSTITUENCYDEFINITIONID;
set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;
end
else if @CONSTITUENCYREFRESHPROCESSID is null
begin
if @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = 1
begin
insert into #MAJORDONORCONSTITUENTS
(
CONSTITUENTID
)
select distinct
REVENUEANDRECOGNITION.CONSTITUENTID
from (
select
REVENUE.CONSTITUENTID,
REVENUE.ORGAMOUNT as AMOUNT
from
dbo.FINANCIALTRANSACTION as REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock)
on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI with (nolock)
on FTLI.FINANCIALTRANSACTIONID = REVENUE.ID
where
REVENUE.CONSTITUENTID = @CONSTITUENTID and
REVENUE.DELETEDON is null and FTLI.DELETEDON is null and
FTLI.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
union all
select
REVENUERECOGNITION.CONSTITUENTID,
REVENUERECOGNITION.ORGANIZATIONAMOUNT as AMOUNT
from
dbo.FINANCIALTRANSACTION as REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock)
on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as REVENUESPLIT with (nolock)
on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT with (nolock)
on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
inner join dbo.REVENUERECOGNITION with (nolock)
on REVENUESPLIT.ID = REVENUERECOGNITION.REVENUESPLITID
where
REVENUERECOGNITION.CONSTITUENTID = @CONSTITUENTID and
REVENUE.CONSTITUENTID <> REVENUERECOGNITION.CONSTITUENTID and
REVENUE.DELETEDON is null and
REVENUESPLIT.DELETEDON is null and
REVENUESPLIT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
union all
select
RECOGNITIONCREDIT.CONSTITUENTID,
RECOGNITIONCREDIT.ORGANIZATIONAMOUNT as AMOUNT
from
dbo.RECOGNITIONCREDIT with (nolock)
inner join dbo.DONORCHALLENGEENCUMBERED with (nolock)
on RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID = DONORCHALLENGEENCUMBERED.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI with (nolock)
on FTLI.ID = DONORCHALLENGEENCUMBERED.REVENUESPLITID
where
RECOGNITIONCREDIT.CONSTITUENTID = @CONSTITUENTID and
RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 1 and
FTLI.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
) as REVENUEANDRECOGNITION
group by
REVENUEANDRECOGNITION.CONSTITUENTID
having (
@MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT <> 0 and
max(REVENUEANDRECOGNITION.AMOUNT) >= @MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT
) or (
@MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT <> 0 and
sum(REVENUEANDRECOGNITION.AMOUNT) >= @MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT
)
end
else
begin
insert into #MAJORDONORCONSTITUENTS
(
CONSTITUENTID
)
select distinct
REVENUE.CONSTITUENTID
from
dbo.FINANCIALTRANSACTION as REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock)
on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI with (nolock)
on FTLI.FINANCIALTRANSACTIONID = REVENUE.ID
where
REVENUE.CONSTITUENTID = @CONSTITUENTID and
REVENUE.DELETEDON is null and
FTLI.DELETEDON is null and
FTLI.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
group by
REVENUE.CONSTITUENTID
having
(
@MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT <> 0 and
max(FTLI.ORGAMOUNT) >= @MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT
) or
(
@MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT <> 0 and
sum(FTLI.ORGAMOUNT) >= @MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT
)
end
delete dbo.CONSTITUENCYDATERANGE
from
dbo.CONSTITUENCYDATERANGE
left join #MAJORDONORCONSTITUENTS as MAJORDONORCONSTITUENTS
on MAJORDONORCONSTITUENTS.CONSTITUENTID = CONSTITUENCYDATERANGE.CONSTITUENTID
where
CONSTITUENCYDATERANGE.CONSTITUENTID = @CONSTITUENTID
and MAJORDONORCONSTITUENTS.CONSTITUENTID is null
and CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @MAJORDONORCONSTITUENCYDEFINITIONID;
set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;
end
else
begin
if @MAJORDONORCONSTITUENCYDEFCONSIDERRECOGNITION = 1
begin
insert into #MAJORDONORCONSTITUENTS
(
CONSTITUENTID
)
select distinct
REVENUEANDRECOGNITION.CONSTITUENTID
from (
select
REVENUE.CONSTITUENTID,
REVENUE.ORGAMOUNT as AMOUNT
from
dbo.FINANCIALTRANSACTION as REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock)
on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI with (nolock)
on FTLI.FINANCIALTRANSACTIONID = REVENUE.ID
where
REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors
REVENUE.DELETEDON is null and FTLI.DELETEDON is null and
FTLI.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
union all
select
REVENUERECOGNITION.CONSTITUENTID,
REVENUERECOGNITION.ORGANIZATIONAMOUNT as AMOUNT
from
dbo.FINANCIALTRANSACTION as REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock)
on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as REVENUESPLIT with (nolock)
on REVENUE.ID = REVENUESPLIT.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT with (nolock)
on REVENUESPLIT.ID = REVENUESPLIT_EXT.ID
inner join dbo.REVENUERECOGNITION with (nolock)
on REVENUESPLIT.ID = REVENUERECOGNITION.REVENUESPLITID
where
REVENUERECOGNITION.CONSTITUENTID is not null and -- Altru allows revenue without donors
REVENUE.CONSTITUENTID <> REVENUERECOGNITION.CONSTITUENTID and
REVENUE.DELETEDON is null and
REVENUESPLIT.DELETEDON is null and
REVENUESPLIT.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
union all
select
RECOGNITIONCREDIT.CONSTITUENTID,
RECOGNITIONCREDIT.ORGANIZATIONAMOUNT as AMOUNT
from
dbo.RECOGNITIONCREDIT with (nolock)
inner join dbo.DONORCHALLENGEENCUMBERED with (nolock)
on RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID = DONORCHALLENGEENCUMBERED.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI with (nolock)
on FTLI.ID = DONORCHALLENGEENCUMBERED.REVENUESPLITID
where
RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 1 and
FTLI.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
) as REVENUEANDRECOGNITION
inner join dbo.CONSTITUENCYREFRESHPROCESSSELECTIONRESULT CONSTITUENTS
on CONSTITUENTS.CONSTITUENTID = REVENUEANDRECOGNITION.CONSTITUENTID
and CONSTITUENTS.CONSTITUENCYREFRESHPROCESSID = @CONSTITUENCYREFRESHPROCESSID
group by
REVENUEANDRECOGNITION.CONSTITUENTID
having (
@MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT <> 0 and
max(REVENUEANDRECOGNITION.AMOUNT) >= @MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT
) or (
@MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT <> 0 and
sum(REVENUEANDRECOGNITION.AMOUNT) >= @MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT
)
end
else
begin
insert into #MAJORDONORCONSTITUENTS
(
CONSTITUENTID
)
select distinct
REVENUE.CONSTITUENTID
from
dbo.FINANCIALTRANSACTION as REVENUE with (nolock)
inner join dbo.REVENUE_EXT with (nolock)
on REVENUE.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM as FTLI with (nolock)
on FTLI.FINANCIALTRANSACTIONID = REVENUE.ID
inner join dbo.CONSTITUENCYREFRESHPROCESSSELECTIONRESULT CONSTITUENTS
on CONSTITUENTS.CONSTITUENTID = REVENUE.CONSTITUENTID
and CONSTITUENTS.CONSTITUENCYREFRESHPROCESSID = @CONSTITUENCYREFRESHPROCESSID
where
REVENUE.CONSTITUENTID is not null and -- Altru allows revenue without donors
REVENUE.DELETEDON is null and
FTLI.DELETEDON is null and
FTLI.ID in (select ID from dbo.UFN_REVENUEFILTER_DEFAULT())
group by
REVENUE.CONSTITUENTID
having
(
@MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT <> 0 and
max(FTLI.ORGAMOUNT) >= @MAJORDONORCONSTITUENCYDEFLARGESTGIFTAMOUNT
) or
(
@MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT <> 0 and
sum(FTLI.ORGAMOUNT) >= @MAJORDONORCONSTITUENCYDEFLIFETIMEAMOUNT
)
end
delete dbo.CONSTITUENCYDATERANGE
from
dbo.CONSTITUENCYDATERANGE
left join #MAJORDONORCONSTITUENTS as MAJORDONORCONSTITUENTS
on MAJORDONORCONSTITUENTS.CONSTITUENTID = CONSTITUENCYDATERANGE.CONSTITUENTID
inner join dbo.CONSTITUENCYREFRESHPROCESSSELECTIONRESULT CONSTITUENTS
on CONSTITUENTS.CONSTITUENTID = CONSTITUENCYDATERANGE.CONSTITUENTID
and CONSTITUENTS.CONSTITUENCYREFRESHPROCESSID = @CONSTITUENCYREFRESHPROCESSID
where
MAJORDONORCONSTITUENTS.CONSTITUENTID is null
and CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @MAJORDONORCONSTITUENCYDEFINITIONID;
set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;
end
insert into dbo.CONSTITUENCYDATERANGE
(
ID,
CONSTITUENTID,
CONSTITUENCYDEFINITIONID,
REFRESHDATE
)
select
newid(),
MAJORDONORCONSTITUENTS.CONSTITUENTID,
@MAJORDONORCONSTITUENCYDEFINITIONID,
@CURRENTDATE
from
#MAJORDONORCONSTITUENTS as MAJORDONORCONSTITUENTS
left join dbo.CONSTITUENCYDATERANGE
on CONSTITUENCYDATERANGE.CONSTITUENTID = MAJORDONORCONSTITUENTS.CONSTITUENTID
and CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @MAJORDONORCONSTITUENCYDEFINITIONID
where
CONSTITUENCYDATERANGE.ID is null;
set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;
update dbo.CONSTITUENCYDATERANGE
set
CONSTITUENCYDATERANGE.REFRESHDATE = @CURRENTDATE
from
dbo.CONSTITUENCYDATERANGE
inner join #MAJORDONORCONSTITUENTS as MAJORDONORCONSTITUENTS
on MAJORDONORCONSTITUENTS.CONSTITUENTID = CONSTITUENCYDATERANGE.CONSTITUENTID
where
CONSTITUENCYDATERANGE.CONSTITUENCYDEFINITIONID = @MAJORDONORCONSTITUENCYDEFINITIONID;
set @RECORDCOUNT = @RECORDCOUNT + @@ROWCOUNT;
drop table #MAJORDONORCONSTITUENTS;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end