USP_SPONSORSHIP_COMPLETETRANSFER

Complete a pending sponsorship transfer.

Parameters

Parameter Parameter Type Mode Description
@TOSPONSORSHIPID uniqueidentifier IN
@FROMSPONSORSHIPID uniqueidentifier IN
@UPDATEAVAILABILITY bit IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_SPONSORSHIP_COMPLETETRANSFER (
    @TOSPONSORSHIPID uniqueidentifier,
    @FROMSPONSORSHIPID uniqueidentifier,
    @UPDATEAVAILABILITY bit = 1,
    @CHANGEAGENTID uniqueidentifier = null
)
as
begin
    set nocount on;

    declare @CURRENTDATE datetime;
    set @CURRENTDATE = getdate();

    declare @TRANSFERDATE date;
    set @TRANSFERDATE = @CURRENTDATE;

    select @TRANSFERDATE = case when STARTDATE < @TRANSFERDATE then @TRANSFERDATE else STARTDATE end
    from dbo.SPONSORSHIP
    where ID = @FROMSPONSORSHIPID;

    if @CHANGEAGENTID is null
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

    begin try
        -- inactivate the old sponsorship

        exec dbo.USP_SPONSORSHIP_INACTIVATE
            @FROMSPONSORSHIPID,
            @TRANSFERDATE,
            @UPDATEAVAILABILITY,
            @CHANGEAGENTID

        update dbo.SPONSORSHIP
        set ISMOSTRECENTFORCOMMITMENT = 0,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where ID = @FROMSPONSORSHIPID;

        -- activate the new sponsorship

        update dbo.SPONSORSHIP
        set STATUSCODE = 1,
            ISMOSTRECENTFORCOMMITMENT = 1,
            STARTDATE = @TRANSFERDATE,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where ID = @TOSPONSORSHIPID;

        -- update recurring gift to the new child's designation

        declare @REVENUESPLITID uniqueidentifier
        declare @TOSPONSORSHIPOPPORTUNITYID uniqueidentifier

        select @REVENUESPLITID = REVENUESPLITID,
               @TOSPONSORSHIPOPPORTUNITYID = SPONSORSHIPOPPORTUNITYID
        from dbo.SPONSORSHIP
        where ID = @TOSPONSORSHIPID;

        if @REVENUESPLITID is not null
            exec dbo.USP_SPONSORSHIP_UPDATEDESIGNATION
                @REVENUESPLITID,
                @TOSPONSORSHIPOPPORTUNITYID,
                @CHANGEAGENTID        

        -- record the complete transfer transaction

        insert into dbo.SPONSORSHIPTRANSACTION
        (
            ID,
            SPONSORSHIPCOMMITMENTID,
            TRANSACTIONSEQUENCE,
            ACTIONCODE,
            SPONSORSHIPREASONID,
            CONTEXTSPONSORSHIPID,
            TARGETSPONSORSHIPID,
            TRANSACTIONDATE,
            ADDEDBYID,
            CHANGEDBYID,
            DATEADDED,
            DATECHANGED
        )
        select
            newid(),
            SPONSORSHIPCOMMITMENTID,
            (select max(MAXTRAN.TRANSACTIONSEQUENCE)+1 from dbo.SPONSORSHIPTRANSACTION as MAXTRAN where MAXTRAN.SPONSORSHIPCOMMITMENTID = INITIALTRANSFER.SPONSORSHIPCOMMITMENTID),
            8,
            SPONSORSHIPREASONID,
            CONTEXTSPONSORSHIPID,
            TARGETSPONSORSHIPID,
            @TRANSFERDATE,
            @CHANGEAGENTID,
            @CHANGEAGENTID,
            @CURRENTDATE,
            @CURRENTDATE
        from dbo.SPONSORSHIPTRANSACTION as INITIALTRANSFER
        where CONTEXTSPONSORSHIPID = @FROMSPONSORSHIPID
        and TARGETSPONSORSHIPID = @TOSPONSORSHIPID
        and ACTIONCODE = 6;
    end try
    begin catch
      exec dbo.USP_RAISE_ERROR;
      return 1;
    end catch

    return 0
end