USP_GLOBALCHANGE_CHANGERELATIONSHIPMANAGER
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@IDSETREGISTERID | uniqueidentifier | IN | |
@CURRENTFUNDRAISERID | uniqueidentifier | IN | |
@NEWFUNDRAISERID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@ASOF | datetime | IN | |
@NUMBERADDED | int | INOUT | |
@NUMBEREDITED | int | INOUT | |
@NUMBERDELETED | int | INOUT | |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_GLOBALCHANGE_CHANGERELATIONSHIPMANAGER
(
@IDSETREGISTERID uniqueidentifier,
@CURRENTFUNDRAISERID uniqueidentifier,
@NEWFUNDRAISERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@ASOF as datetime = null,
@NUMBERADDED int = 0 output,
@NUMBEREDITED int = 0 output,
@NUMBERDELETED int = 0 output,
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount off;
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate();
set @NUMBERADDED = 0;
set @NUMBEREDITED = 0;
set @NUMBERDELETED = 0;
declare @BPID uniqueidentifier = '3269A1D1-31CB-4D28-945C-B7623A3EFCCA';
declare @BYPASSSECURITY bit;
declare @BYPASSSITESECURITY bit;
exec dbo.USP_SECURITY_APPUSER_BYPASSSECURITYFORBUSINESSPROCESS @CURRENTAPPUSERID, @BPID, @BYPASSSECURITY output, @BYPASSSITESECURITY output;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @SELECTION table (ID uniqueidentifier not null primary key);
insert into @SELECTION (ID)
select ID
from dbo.UFN_CONSTITUENT_GETRECORDSINSELECTION_FORBUSINESSPROCESS(@CURRENTAPPUSERID, @IDSETREGISTERID, @BPID, @BYPASSSECURITY, @BYPASSSITESECURITY);
begin try
declare @CONTEXTCACHE varbinary(128);
/* Cache current context information@ */
set @CONTEXTCACHE = CONTEXT_INFO();
/* Set CONTEXT_INFO to @CHANGEAGENTID */
set CONTEXT_INFO @CHANGEAGENTID;
if @NEWFUNDRAISERID is null
begin
/* delete records */
delete dbo.RELATIONSHIPMANAGER
from dbo.RELATIONSHIPMANAGER
left join dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITIDS_FORBUSINESSPROCESS(@CURRENTAPPUSERID, @BPID) as CONSTIT_RACS on RELATIONSHIPMANAGER.CONSTITUENTID = CONSTIT_RACS.ID
where RELATIONSHIPMANAGER.FUNDRAISERID = @CURRENTFUNDRAISERID
and (RELATIONSHIPMANAGER.CONSTITUENTID in (select ID from @SELECTION))
and (@BYPASSSECURITY = 1 or CONSTIT_RACS.ID is not null)
and (
@BYPASSSITESECURITY = 1
or exists (
select 1
from dbo.CONSTITUENT
left join dbo.CONSTITUENTSITE on CONSTITUENTSITE.CONSTITUENTID = CONSTITUENT.ID
where CONSTITUENT.ID = RELATIONSHIPMANAGER.CONSTITUENTID
and dbo.UFN_SECURITY_APPUSER_GRANTED_BUSINESSPROCESS_FORSITE(@CURRENTAPPUSERID, @BPID, CONSTITUENTSITE.SITEID) = 1
)
);
set @NUMBERDELETED = @@ROWCOUNT;
end
else
begin
/* delete records where both managers exist*/
delete dbo.RELATIONSHIPMANAGER
from dbo.RELATIONSHIPMANAGER
left join dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITIDS_FORBUSINESSPROCESS(@CURRENTAPPUSERID, @BPID) as CONSTIT_RACS on RELATIONSHIPMANAGER.CONSTITUENTID = CONSTIT_RACS.ID
where RELATIONSHIPMANAGER.FUNDRAISERID = @CURRENTFUNDRAISERID
and (@IDSETREGISTERID is null or
RELATIONSHIPMANAGER.CONSTITUENTID in (select ID from @SELECTION))
and exists(select top 1 ID from dbo.RELATIONSHIPMANAGER SUB
where SUB.FUNDRAISERID = @NEWFUNDRAISERID and
SUB.CONSTITUENTID = RELATIONSHIPMANAGER.CONSTITUENTID)
and (@BYPASSSECURITY = 1 or CONSTIT_RACS.ID is not null)
and (
@BYPASSSITESECURITY = 1
or exists (
select 1
from dbo.CONSTITUENT --JamesWill WI170986 2011-08-24 Make sure to check if null site is allowed for constituents with no entries in CONSTITUENTSITE
left join dbo.CONSTITUENTSITE on CONSTITUENTSITE.CONSTITUENTID = CONSTITUENT.ID
where CONSTITUENT.ID = RELATIONSHIPMANAGER.CONSTITUENTID
and dbo.UFN_SECURITY_APPUSER_GRANTED_BUSINESSPROCESS_FORSITE(@CURRENTAPPUSERID, @BPID, CONSTITUENTSITE.SITEID) = 1
)
);
set @NUMBERDELETED = @@ROWCOUNT;
update dbo.RELATIONSHIPMANAGER
set FUNDRAISERID = @NEWFUNDRAISERID
from dbo.RELATIONSHIPMANAGER
left join dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITIDS_FORBUSINESSPROCESS(@CURRENTAPPUSERID, @BPID) as CONSTIT_RACS on RELATIONSHIPMANAGER.CONSTITUENTID = CONSTIT_RACS.ID
where FUNDRAISERID = @CURRENTFUNDRAISERID
and (@IDSETREGISTERID is null
or CONSTITUENTID in (select ID from @SELECTION))
and (@BYPASSSECURITY = 1 or CONSTIT_RACS.ID is not null)
and (
@BYPASSSITESECURITY = 1
or exists (
select 1
from dbo.CONSTITUENT --JamesWill WI170986 2011-08-24 Make sure to check if null site is allowed for constituents with no entries in CONSTITUENTSITE
left join dbo.CONSTITUENTSITE on CONSTITUENTSITE.CONSTITUENTID = CONSTITUENT.ID
where CONSTITUENT.ID = RELATIONSHIPMANAGER.CONSTITUENTID
and dbo.UFN_SECURITY_APPUSER_GRANTED_BUSINESSPROCESS_FORSITE(@CURRENTAPPUSERID, @BPID, CONSTITUENTSITE.SITEID) = 1
)
);
set @NUMBEREDITED = @@ROWCOUNT;
end
/* Reset CONTEXT_INFO to previous value */
if not @contextCache is null
set CONTEXT_INFO @CONTEXTCACHE;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch