USP_SPONSOR_REBUILDSPONSORSHIPCONSTITUENCIES
Rebuild the sponsorship constituencies for the specified constituent.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@SPONSORTYPECODE | smallint | IN | |
@CHANGEAGENTID | uniqueidentifier | IN |
Definition
Copy
create procedure dbo.USP_SPONSOR_REBUILDSPONSORSHIPCONSTITUENCIES (
@CONSTITUENTID uniqueidentifier,
@SPONSORTYPECODE smallint = -1, -- -1 means do all types
@CHANGEAGENTID uniqueidentifier = null
)
as
begin
declare @CONTEXTCACHE varbinary(128);
set @CONTEXTCACHE = CONTEXT_INFO();
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
-- cache current context
if @CHANGEAGENTID is not null
set CONTEXT_INFO @CHANGEAGENTID
-- remove sponsordaterange records from both constituents
delete from dbo.SPONSORDATERANGE
where CONSTITUENTID = @CONSTITUENTID
and (@SPONSORTYPECODE = -1 or SPONSORTYPECODE = @SPONSORTYPECODE);
-- restore cached context
if not @CONTEXTCACHE is null
set CONTEXT_INFO @CONTEXTCACHE
-- recreate target constituent's constituencies
declare @SDRID uniqueidentifier;
declare @CURRENTSPONSORTYPECODE tinyint, @PRIORSPONSORTYPECODE tinyint;
declare @DATEFROM date, @DATETO date, @PRIORDATEFROM date, @PRIORDATETO date;
declare SDR_CURSOR cursor local fast_forward for
select SPONSORTYPECODE, STARTDATE, ENDDATE
from dbo.V_QUERY_FINANCIALSPONSORSHIPDATERANGE
where CONSTITUENTID = @CONSTITUENTID
and (@SPONSORTYPECODE = -1 or SPONSORTYPECODE = @SPONSORTYPECODE)
order by SPONSORTYPECODE, STARTDATE;
open SDR_CURSOR;
fetch next from SDR_CURSOR into @CURRENTSPONSORTYPECODE, @DATEFROM, @DATETO;
while (@@FETCH_STATUS = 0)
begin
if @SDRID is null or -- first iteration
@CURRENTSPONSORTYPECODE <> @PRIORSPONSORTYPECODE or -- new sponsortypecode
@DATEFROM > @PRIORDATETO -- new range
begin
set @SDRID = newid();
insert into dbo.SPONSORDATERANGE
(
ID,
CONSTITUENTID,
SPONSORTYPECODE,
DATEFROM,
DATETO,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@SDRID,
@CONSTITUENTID,
@CURRENTSPONSORTYPECODE,
@DATEFROM,
@DATETO,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
)
set @PRIORSPONSORTYPECODE = @CURRENTSPONSORTYPECODE;
set @PRIORDATETO = @DATETO;
end
else
begin
if @PRIORDATETO is not null and
(@DATETO is null or @DATETO > @PRIORDATETO)
begin
update dbo.SPONSORDATERANGE
set DATETO = @DATETO
where ID = @SDRID;
set @PRIORDATETO = @DATETO;
end
end
fetch next from SDR_CURSOR into @CURRENTSPONSORTYPECODE, @DATEFROM, @DATETO;
end
close SDR_CURSOR;
deallocate SDR_CURSOR;
end