USP_SPONSORSHIP_CREATETRANSFER
Create a new sponsorship as part of a transfer.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | |
@FROMSPONSORSHIPID | uniqueidentifier | IN | |
@ACTIONCODE | tinyint | IN | |
@SPONSORSHIPREASONID | uniqueidentifier | IN | |
@TRANSFERDATE | date | IN | |
@MATCHRULE | tinyint | IN | |
@SPONSORSHIPOPPORTUNITYID | uniqueidentifier | INOUT | |
@SPONSORSHIPPROGRAMID | uniqueidentifier | IN | |
@SPONSORSHIPLOCATIONID | uniqueidentifier | IN | |
@GENDERCODE | int | IN | |
@SPROPPAGERANGEID | uniqueidentifier | IN | |
@ISHIVPOSITIVECODE | int | IN | |
@HASCONDITIONCODE | int | IN | |
@ISORPHANEDCODE | int | IN | |
@SPROPPPROJECTCATEGORYCODEID | uniqueidentifier | IN | |
@ISSOLESPONSORSHIP | bit | IN | |
@DECLINEDSPONSORSHIPID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@REVENUESPLITID | uniqueidentifier | INOUT | |
@PLANNEDENDDATE | date | IN | |
@EXPIRATIONREASONID | uniqueidentifier | IN | |
@UNLOCKTARGETOPPORTUNITY | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_SPONSORSHIP_CREATETRANSFER (
@ID uniqueidentifier = null output,
@FROMSPONSORSHIPID uniqueidentifier = null,
@ACTIONCODE tinyint = 1,
@SPONSORSHIPREASONID uniqueidentifier = null,
@TRANSFERDATE date = null,
@MATCHRULE tinyint = 0,
@SPONSORSHIPOPPORTUNITYID uniqueidentifier = null output,
@SPONSORSHIPPROGRAMID uniqueidentifier = null,
@SPONSORSHIPLOCATIONID uniqueidentifier = null,
@GENDERCODE int = 0,
@SPROPPAGERANGEID uniqueidentifier = null,
@ISHIVPOSITIVECODE int = 0,
@HASCONDITIONCODE int = 0,
@ISORPHANEDCODE int = 0,
@SPROPPPROJECTCATEGORYCODEID uniqueidentifier = null,
@ISSOLESPONSORSHIP bit = 0,
@DECLINEDSPONSORSHIPID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@REVENUESPLITID uniqueidentifier = null output,
@PLANNEDENDDATE date = null,
@EXPIRATIONREASONID uniqueidentifier = null,
@UNLOCKTARGETOPPORTUNITY bit = 1
)
as
begin
set nocount on;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
if @TRANSFERDATE is null
set @TRANSFERDATE = @CURRENTDATE
if @ID is null
set @ID = newid();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CONSTITUENTID uniqueidentifier
declare @FROMOPPORTUNITYID uniqueidentifier
declare @ORIGINALLOCATIONID uniqueidentifier
declare @REVENUECONSTITUENTID uniqueidentifier
declare @OLDISAFFILIATE bit, @NEWISAFFILIATE bit
select @CONSTITUENTID = SPONSORSHIP.CONSTITUENTID,
@REVENUESPLITID = SPONSORSHIP.REVENUESPLITID,
@FROMOPPORTUNITYID = SPONSORSHIP.SPONSORSHIPOPPORTUNITYID,
@ORIGINALLOCATIONID = SPONSORSHIPOPPORTUNITY.SPONSORSHIPLOCATIONID,
@REVENUECONSTITUENTID = REVENUE.CONSTITUENTID,
@TRANSFERDATE = case when STARTDATE < @TRANSFERDATE then @TRANSFERDATE else STARTDATE end,
@OLDISAFFILIATE = case when SPONSORSHIP.REVENUESPLITID is null then 1 else 0 end
from dbo.SPONSORSHIP
inner join dbo.SPONSORSHIPOPPORTUNITY on SPONSORSHIPOPPORTUNITY.ID = SPONSORSHIP.SPONSORSHIPOPPORTUNITYID
left join dbo.REVENUESPLIT on REVENUESPLIT.ID = SPONSORSHIP.REVENUESPLITID
left join dbo.REVENUE on REVENUE.ID = REVENUESPLIT.REVENUEID
where SPONSORSHIP.ID = @FROMSPONSORSHIPID
set @NEWISAFFILIATE = 0;
select @NEWISAFFILIATE = 1
from dbo.SPONSORSHIPAFFILIATEPROGRAM
where ID = @SPONSORSHIPPROGRAMID;
if @OLDISAFFILIATE = 1 and @NEWISAFFILIATE = 0
begin
raiserror('BBERR_AFFILIATETONONAFFILIATE',13,1);
return 1
end
else if @OLDISAFFILIATE = 0 and @NEWISAFFILIATE = 1
begin
raiserror('BBERR_NONAFFILIATETOAFFILIATE',13,1);
return 1
end
begin try
--------------------------------------------------------------
-- Acquire opportunity
--------------------------------------------------------------
if @SPONSORSHIPOPPORTUNITYID is null
exec dbo.USP_SPONSORSHIP_ACQUIREOPPORTUNITY
@SPONSORSHIPOPPORTUNITYID output,
@CHANGEAGENTID,
@MATCHRULE,
@CONSTITUENTID,
@SPONSORSHIPPROGRAMID,
@SPONSORSHIPLOCATIONID,
@GENDERCODE,
@SPROPPAGERANGEID,
@ISHIVPOSITIVECODE,
@HASCONDITIONCODE,
@ISORPHANEDCODE,
@SPROPPPROJECTCATEGORYCODEID,
@ISSOLESPONSORSHIP,
@FROMOPPORTUNITYID,
@ORIGINALLOCATIONID,
@REVENUECONSTITUENTID
---- Determine if opportunity is suitable for sole sponsorship (WI#195022)
declare @SOLESPONSORSHIPEXCEPTION bit = 0;
declare @OPPORTUNITYGROUPIDFORSOLE uniqueidentifier;
declare @OPPORTUNITYLOCATIONIDFORSOLE uniqueidentifier;
select @OPPORTUNITYGROUPIDFORSOLE = SPONSORSHIPOPPORTUNITYGROUPID,
@OPPORTUNITYLOCATIONIDFORSOLE = SPONSORSHIPLOCATIONID
from dbo.SPONSORSHIPOPPORTUNITY where ID = @SPONSORSHIPOPPORTUNITYID
set @SOLESPONSORSHIPEXCEPTION = case when (@ISSOLESPONSORSHIP = 1 and dbo.UFN_SPONSORSHIP_OFFERSOLESPONSORSHIP(@OPPORTUNITYGROUPIDFORSOLE, @OPPORTUNITYLOCATIONIDFORSOLE) = 0) then 1 else 0 end;
if @SOLESPONSORSHIPEXCEPTION = 1
begin
raiserror('BBERR_SOLESPONSORSHIPTONONSOLE',13,1)
end
--------------------------------------------------------------
-- SPONSORSHIP
--------------------------------------------------------------
declare @COMMITMENTID uniqueidentifier
select @COMMITMENTID = SPONSORSHIPCOMMITMENTID
from dbo.SPONSORSHIP
where ID = @FROMSPONSORSHIPID;
if @ACTIONCODE <> 6
update dbo.SPONSORSHIP
set ISMOSTRECENTFORCOMMITMENT = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE
where ID = @FROMSPONSORSHIPID;
insert into dbo.SPONSORSHIP
(
ID,
SPONSORSHIPCOMMITMENTID,
CONSTITUENTID,
SPONSORSHIPPROGRAMID,
SPONSORSHIPOPPORTUNITYID,
STATUSCODE,
STARTDATE,
SPONSORSHIPLOCATIONID,
CHILDGENDERCODE,
SPONSORSHIPOPPORTUNITYAGERANGEID,
ISHIVPOSITIVECODE,
HASCONDITIONCODE,
ISORPHANEDCODE,
SPROPPPROJECTCATEGORYCODEID,
ISSOLESPONSORSHIP,
REVENUESPLITID,
PLANNEDENDDATE,
EXPIRATIONREASONID,
ISMOSTRECENTFORCOMMITMENT,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
@ID,
@COMMITMENTID,
@CONSTITUENTID,
@SPONSORSHIPPROGRAMID,
@SPONSORSHIPOPPORTUNITYID,
case @ACTIONCODE when 6 then 0 else 1 end,
case @ACTIONCODE when 6 then null else @TRANSFERDATE end,
@SPONSORSHIPLOCATIONID,
@GENDERCODE,
@SPROPPAGERANGEID,
@ISHIVPOSITIVECODE,
@HASCONDITIONCODE,
@ISORPHANEDCODE,
@SPROPPPROJECTCATEGORYCODEID,
@ISSOLESPONSORSHIP,
@REVENUESPLITID,
@PLANNEDENDDATE,
@EXPIRATIONREASONID,
case @ACTIONCODE when 6 then 0 else 1 end,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
)
--------------------------------------------------------------
-- SPONSORSHIPTRANSACTION
--------------------------------------------------------------
insert into dbo.SPONSORSHIPTRANSACTION
(
ID,
SPONSORSHIPCOMMITMENTID,
TRANSACTIONSEQUENCE,
ACTIONCODE,
SPONSORSHIPREASONID,
CONTEXTSPONSORSHIPID,
DECLINEDSPONSORSHIPID,
TARGETSPONSORSHIPID,
TRANSACTIONDATE,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values
(
newid(),
@COMMITMENTID,
(select max(TRANSACTIONSEQUENCE)+1 from dbo.SPONSORSHIPTRANSACTION where SPONSORSHIPCOMMITMENTID = @COMMITMENTID),
@ACTIONCODE,
@SPONSORSHIPREASONID,
@FROMSPONSORSHIPID,
@DECLINEDSPONSORSHIPID,
@ID,
@TRANSFERDATE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CURRENTDATE,
@CURRENTDATE
)
--------------------------------------------------------------
-- Update and unlock opportunity.
--------------------------------------------------------------
exec dbo.USP_SPONSORSHIPOPPORTUNITY_SPONSORSHIPADDED
@SPONSORSHIPOPPORTUNITYID,
@ISSOLESPONSORSHIP,
@CHANGEAGENTID,
@CURRENTDATE,
@UNLOCKTARGETOPPORTUNITY
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0
end