USP_SPONSORSHIP_CLOSECOMMITMENT

Close a sponsorship commitment.

Parameters

Parameter Parameter Type Mode Description
@SPONSORSHIPID uniqueidentifier IN
@ENDDATE date IN
@ACTIONCODE tinyint IN
@SPONSORSHIPREASONID uniqueidentifier IN
@REASSIGNTOSPONSORSHIPID uniqueidentifier IN
@DECLINEDSPONSORSHIPID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN

Definition

Copy


CREATE procedure dbo.USP_SPONSORSHIP_CLOSECOMMITMENT (
  @SPONSORSHIPID uniqueidentifier,
  @ENDDATE date,
  @ACTIONCODE tinyint,
  @SPONSORSHIPREASONID uniqueidentifier = null,
  @REASSIGNTOSPONSORSHIPID uniqueidentifier = null,
  @DECLINEDSPONSORSHIPID uniqueidentifier = null,
  @CHANGEAGENTID uniqueidentifier = null
)
as
begin
  set nocount on;

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

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


  -- get information off the sponsorship

  declare @COMMITMENTID uniqueidentifier
  declare @CONSTITUENTID uniqueidentifier
  declare @STATUSCODE tinyint

  select @COMMITMENTID = SPONSORSHIPCOMMITMENTID,
         @CONSTITUENTID = CONSTITUENTID,
       @STATUSCODE = STATUSCODE
  from dbo.SPONSORSHIP
  where ID = @SPONSORSHIPID;

  begin try
    -- Inactivate the sponsorship and return the opportunity to available if appropriate.

    declare @UPDATEAVAILABILITY bit
    set @UPDATEAVAILABILITY = case when @ACTIONCODE = 5 then 0 else 1 end
    -- if the sponsorship is pending, null out the enddate

    set @ENDDATE = case when @STATUSCODE = 0 then null else  @ENDDATE end

    exec dbo.USP_SPONSORSHIP_INACTIVATE
      @SPONSORSHIPID,
      @ENDDATE,
      @UPDATEAVAILABILITY,
      @CHANGEAGENTID

    --------------------------------------------------------------

    -- Terminate the recurring gift    

    declare @REVENUEID uniqueidentifier;
    declare @REVENUECONSTITUENTID uniqueidentifier;
    declare @RGSTATUSCODE tinyint;
    declare @RGSTATUSCHANGETYPECODE tinyint;

    select @REVENUEID = REVENUESPLIT.REVENUEID,
           @REVENUECONSTITUENTID = REVENUE.CONSTITUENTID,
           @RGSTATUSCODE = case SPONSORSHIPREASON.REASONTYPECODE when 7 then 2 else 3 end,
           @RGSTATUSCHANGETYPECODE = case SPONSORSHIPREASON.REASONTYPECODE when 6 then 9 when 7 then 13 when 9 then 12 when 11 then 10 end
    from dbo.SPONSORSHIP
    inner join dbo.REVENUESPLIT on REVENUESPLIT.ID = SPONSORSHIP.REVENUESPLITID
    inner join dbo.REVENUE on REVENUE.ID = REVENUESPLIT.REVENUEID
    left join dbo.SPONSORSHIPREASON on SPONSORSHIPREASON.ID = @SPONSORSHIPREASONID
    where SPONSORSHIP.ID = @SPONSORSHIPID;

    if @REVENUEID is not null
    begin
      exec dbo.USP_RECURRINGGIFT_EDITSTATUS
        @ID = @REVENUEID,
        @STATUSCODE = @RGSTATUSCODE,
        @CHANGEAGENTID = @CHANGEAGENTID,
        @STATUSCHANGETYPECODE = @RGSTATUSCHANGETYPECODE;

      update dbo.REVENUESCHEDULE set ENDDATE=@ENDDATE where ID=@REVENUEID
    end

   --terminate the active recurring additional gift if any if action is not reassign

   if @ACTIONCODE <> 5 
   begin
     set @REVENUEID = NULL;

     select @REVENUEID = REVENUEID
     from dbo.SPONSORSHIPRECURRINGADDITIONALGIFT
     where SPONSORSHIPID = @SPONSORSHIPID
     and STATUSCODE = 0;

     if @REVENUEID is not null
     begin
      exec dbo.USP_RECURRINGGIFT_EDITSTATUS
        @ID = @REVENUEID,
        @STATUSCODE = @RGSTATUSCODE,
        @CHANGEAGENTID = @CHANGEAGENTID,
        @STATUSCHANGETYPECODE = @RGSTATUSCHANGETYPECODE;

      update dbo.REVENUESCHEDULE set ENDDATE=@ENDDATE where ID=@REVENUEID
     end
   end
    --------------------------------------------------------------

    -- Inactivate the sponsorship constituency if no more active sponsorships.

    if isnull(@REVENUECONSTITUENTID,@CONSTITUENTID) = @CONSTITUENTID
      exec dbo.USP_SPONSOR_CHECKANDMAKEINACTIVE @CONSTITUENTID, @ENDDATE, 0, @CHANGEAGENTID, @CURRENTDATE
    else
    begin
      exec dbo.USP_SPONSOR_CHECKANDMAKEINACTIVE @CONSTITUENTID, @ENDDATE, 1, @CHANGEAGENTID, @CURRENTDATE
      exec dbo.USP_SPONSOR_CHECKANDMAKEINACTIVE @REVENUECONSTITUENTID, @ENDDATE, 2, @CHANGEAGENTID, @CURRENTDATE
    end

    --------------------------------------------------------------

    -- Insert the inactivation transaction row.

    insert into dbo.SPONSORSHIPTRANSACTION
    (
      ID,
      SPONSORSHIPCOMMITMENTID,
      TRANSACTIONSEQUENCE,
      ACTIONCODE,
      SPONSORSHIPREASONID,
      CONTEXTSPONSORSHIPID,
      TARGETSPONSORSHIPID,
      DECLINEDSPONSORSHIPID,
      TRANSACTIONDATE,
      ADDEDBYID,
      CHANGEDBYID,
      DATEADDED,
      DATECHANGED
    )
    values
    (
      newid(),
      @COMMITMENTID,
      (select max(TRANSACTIONSEQUENCE)+1 from dbo.SPONSORSHIPTRANSACTION where SPONSORSHIPCOMMITMENTID = @COMMITMENTID),
      @ACTIONCODE,
      @SPONSORSHIPREASONID,
      @SPONSORSHIPID,
      @REASSIGNTOSPONSORSHIPID,
      @DECLINEDSPONSORSHIPID,
      @CURRENTDATE,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
    )    


  end try
  begin catch
    exec dbo.USP_RAISE_ERROR;
    return 1;
  end catch

  return 0
end