USP_SPONSORSHIP_TERMINATE_PROCESS

Logic for sponsorship terminate BP

Parameters

Parameter Parameter Type Mode Description
@SPONSORSHIPID uniqueidentifier IN
@SPONSORSHIPREASONID uniqueidentifier IN
@SUCCESSCOUNT int INOUT
@EXCEPTIONCOUNT int INOUT
@OUTPUTTABLE nvarchar(128) IN

Definition

Copy


CREATE procedure dbo.USP_SPONSORSHIP_TERMINATE_PROCESS
(
    @SPONSORSHIPID uniqueidentifier,
    @SPONSORSHIPREASONID uniqueidentifier = null,
    @SUCCESSCOUNT int = 0 output,
    @EXCEPTIONCOUNT int = 0 output,
  @OUTPUTTABLE nvarchar(128)
)
as
begin
    set nocount on

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

    declare @ENDDATE date;
    set @ENDDATE = @CURRENTDATE;

  declare @STATUSCODE tinyint;
  declare @ACTIONCODE tinyint;
  declare @RELATEDSPONSORSHIPID uniqueidentifier;
  declare @CONTEXTSPONSORSHIPID uniqueidentifier;
  declare @DECLINEDSPONSORSHIPID uniqueidentifier;

    declare @LOGOUTPUTSQL nvarchar(200);
    declare @LOGOUTPUTPARAMS nvarchar(75);


    set @LOGOUTPUTSQL = N'insert into dbo.' + @OUTPUTTABLE + N' (TERMINATESPONSORSHIPID, ERRORMESSAGE) ' +
                           N'values (@TERMINATESPONSORSHIPID,@ERRORMESSAGE)'
    set @LOGOUTPUTPARAMS = N'@TERMINATESPONSORSHIPID uniqueidentifier,' +
                              N'@ERRORMESSAGE nvarchar(255)'

    select @STATUSCODE= SPONSORSHIP.STATUSCODE,
        @RELATEDSPONSORSHIPID = LASTTRANSACTION.TARGETSPONSORSHIPID, 
    @CONTEXTSPONSORSHIPID = LASTTRANSACTION.CONTEXTSPONSORSHIPID,
    @DECLINEDSPONSORSHIPID = LASTTRANSACTION.DECLINEDSPONSORSHIPID,
        @ACTIONCODE = LASTTRANSACTION.ACTIONCODE
    from dbo.SPONSORSHIP  
    inner join dbo.SPONSORSHIPTRANSACTION LASTTRANSACTION on LASTTRANSACTION.SPONSORSHIPCOMMITMENTID = SPONSORSHIP.SPONSORSHIPCOMMITMENTID and LASTTRANSACTION.TRANSACTIONSEQUENCE = (select max(TRANSACTIONSEQUENCE) from dbo.SPONSORSHIPTRANSACTION MAXSEQUENCE where MAXSEQUENCE.SPONSORSHIPCOMMITMENTID = SPONSORSHIP.SPONSORSHIPCOMMITMENTID and SPONSORSHIP.ID in(MAXSEQUENCE.CONTEXTSPONSORSHIPID,MAXSEQUENCE.TARGETSPONSORSHIPID,MAXSEQUENCE.DECLINEDSPONSORSHIPID) and MAXSEQUENCE.ACTIONCODE <> 9)
    where SPONSORSHIP.ID = @SPONSORSHIPID

    set @SUCCESSCOUNT = 0    
    set @EXCEPTIONCOUNT = 0

    begin try

  save transaction TERMINATE
    begin
       if @STATUSCODE = 1
          if @ACTIONCODE = 6
          begin
          -- cancel pending transfer.

              exec dbo.USP_SPONSORSHIP_CANCELTRANSFER
              @SPONSORSHIPID,
        @RELATEDSPONSORSHIPID,
              @SPONSORSHIPREASONID,
              null
        3
           end
          else
          begin
              -- Close the commitment.

              exec dbo.USP_SPONSORSHIP_CLOSECOMMITMENT
              @SPONSORSHIPID,
              @ENDDATE,
              3,
              @SPONSORSHIPREASONID
          end    
        else if @STATUSCODE = 0
              raiserror('BBERR_PENDINGSPONSORSHIPTERMINATE',13,1)
          else if @STATUSCODE = 2
              raiserror('BBERR_INACTIVESPONSORSHIPTERMINATE',13,1)          
    end

        -- log the successful transfer

      exec sp_executesql @LOGOUTPUTSQL,
                         @LOGOUTPUTPARAMS,
               @SPONSORSHIPID,
               'SUCCESS' 

      set @SUCCESSCOUNT = @SUCCESSCOUNT + 1
    end try
    begin catch
    rollback transaction TERMINATE

      declare @MSG nvarchar(255)
      set @MSG = ERROR_MESSAGE()

      exec sp_executesql @LOGOUTPUTSQL,
                         @LOGOUTPUTPARAMS,
                         @SPONSORSHIPID,
                         @MSG

      set @EXCEPTIONCOUNT = @EXCEPTIONCOUNT + 1
    end catch

    return 0

end