USP_SPONSORSHIPOPPORTUNITY_MARKINELIGIBLE

Mark a sponsorship opportunity ineligible, possibly transferring sponsors to other opportunities.

Parameters

Parameter Parameter Type Mode Description
@SPONSORSHIPOPPORTUNITYID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@TRANSFERTYPE tinyint IN
@MATCHRULE tinyint IN
@TOSPONSORSHIPOPPORTUNITYID uniqueidentifier IN
@SPONSORSHIPREASONID uniqueidentifier IN
@SUCCESSTABLE nvarchar(128) IN
@EXCEPTIONTABLE nvarchar(128) IN
@SUCCESSCOUNT int INOUT
@EXCEPTIONCOUNT int INOUT

Definition

Copy


CREATE procedure dbo.USP_SPONSORSHIPOPPORTUNITY_MARKINELIGIBLE
(
    @SPONSORSHIPOPPORTUNITYID uniqueidentifier,
    @CHANGEAGENTID uniqueidentifier = null,
    @TRANSFERTYPE tinyint = 0,        -- 0=Full, 1=Pending

    @MATCHRULE tinyint = 0,            -- 0=Standard, 1=Nearest location

    @TOSPONSORSHIPOPPORTUNITYID uniqueidentifier = null,
    @SPONSORSHIPREASONID uniqueidentifier = null,
    @SUCCESSTABLE nvarchar(128),
    @EXCEPTIONTABLE nvarchar(128),
    @SUCCESSCOUNT int = 0 output,
    @EXCEPTIONCOUNT int = 0 output
)
as begin
    set nocount on;

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate()

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

    --Get settings for TRANSFERTYPE AND MATCHRULE

    declare @SPONSORSHIPOPPORTUNITYTYPECODE tinyint
    -- Child or Project

    select 
        @SPONSORSHIPOPPORTUNITYTYPECODE = G.SPONSORSHIPOPPORTUNITYTYPECODE
  from
      SPONSORSHIPOPPORTUNITY S
      inner join SPONSORSHIPOPPORTUNITYGROUP G on G.ID = S.SPONSORSHIPOPPORTUNITYGROUPID
  where
      S.ID = @SPONSORSHIPOPPORTUNITYID
    -- Get Settings    

    SELECT top 1
        @TRANSFERTYPE = case @SPONSORSHIPOPPORTUNITYTYPECODE when 1 then INELIGIBLETRANSFERRULE
                                                             when 2 then PROJECTCLOSETRANSFERRULE
                                        end,
      @MATCHRULE = case @SPONSORSHIPOPPORTUNITYTYPECODE when 1 then INELIGIBLEMATCHINGCODE
                                                                                                            when 2 then PROJECTCLOSEMATCHINGCODE
                                      end
    from    SPONSORSHIPINFO
    order by DATEADDED

    declare @DOTRANSFERS bit
    select @DOTRANSFERS = TRANSFERSPONSORSFORINELIGIBLECHILD
    from dbo.SPONSORSHIPREASON
    where ID = @SPONSORSHIPREASONID;

    set @SUCCESSCOUNT = 0
    set @EXCEPTIONCOUNT = 0

    begin try
        -- Mark the opportunity as ineligible.

        update dbo.SPONSORSHIPOPPORTUNITY
        set ELIGIBILITYCODE = 2,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE,
            SPONSORSHIPREASONID = @SPONSORSHIPREASONID
        where ID = @SPONSORSHIPOPPORTUNITYID;

          -- Update the project's end date to today when marking as closed.

        update 
            dbo.SPONSORSHIPOPPORTUNITYPROJECT
        set
            ENDDATE = @CURRENTDATE,
            CHANGEDBYID = @CHANGEAGENTID,
            DATECHANGED = @CURRENTDATE
        where
            ID = @SPONSORSHIPOPPORTUNITYID

        -- Delete possible pending reasons

        delete from dbo.SPONSORSHIPOPPORTUNITYREASON
        where SPONSORSHIPOPPORTUNITYID = @SPONSORSHIPOPPORTUNITYID

        -- Do transfers if appropriate.

        if @DOTRANSFERS = 1
        begin
            create table #TRANSFERS (
                FROMSPONSORSHIPID uniqueidentifier,
                NEWSPONSORSHIPPROGRAMID uniqueidentifier,
                NEWSPONSORSHIPLOCATIONID uniqueidentifier,
                NEWSPONSORSHIPOPPORTUNITYID uniqueidentifier,
                NEWCHILDGENDERCODE tinyint,
                NEWSPONSORSHIPOPPORTUNITYAGERANGEID uniqueidentifier,
                NEWISHIVPOSITIVECODE tinyint,
                NEWHASCONDITIONCODE tinyint,
                NEWISORPHANEDCODE tinyint,
                NEWSPROPPPROJECTCATEGORYCODEID uniqueidentifier);

            insert into #TRANSFERS (FROMSPONSORSHIPID, NEWSPONSORSHIPOPPORTUNITYID)
            select
                SPONSORSHIP.ID,
                @TOSPONSORSHIPOPPORTUNITYID
            from dbo.SPONSORSHIP
            inner join dbo.SPONSORSHIPOPPORTUNITY on SPONSORSHIPOPPORTUNITY.ID = SPONSORSHIP.SPONSORSHIPOPPORTUNITYID
            left outer join dbo.SPONSORSHIPTRANSACTION INITIATETRANSFERTRANSACTION on INITIATETRANSFERTRANSACTION.CONTEXTSPONSORSHIPID = SPONSORSHIP.ID and INITIATETRANSFERTRANSACTION.ACTIONCODE = 6
            left outer join dbo.SPONSORSHIP PENDINGSPONSORSHIP on PENDINGSPONSORSHIP.ID = INITIATETRANSFERTRANSACTION.TARGETSPONSORSHIPID and PENDINGSPONSORSHIP.STATUSCODE = 0
            where SPONSORSHIPOPPORTUNITY.ID = @SPONSORSHIPOPPORTUNITYID
            and SPONSORSHIP.STATUSCODE in(0,1)
            and PENDINGSPONSORSHIP.ID is null;

            declare @SPONSORPREFERENCEOPTION tinyint;
      declare @MAINTAINLOCKONTARGETOPPORTUNITY bit;
            if @TOSPONSORSHIPOPPORTUNITYID is null
      begin
                set @SPONSORPREFERENCEOPTION = 1;
        set @MAINTAINLOCKONTARGETOPPORTUNITY = 0;
      end
            else
      begin
                set @SPONSORPREFERENCEOPTION = 2
        set @MAINTAINLOCKONTARGETOPPORTUNITY = 1;
      end

            exec dbo.USP_SPONSORSHIP_BULKTRANSFER
                @SUCCESSTABLE,
                @EXCEPTIONTABLE,
                @TRANSFERTYPE,
                @MATCHRULE,
                @SPONSORSHIPREASONID,
                0,
                null,
                1,
                @CHANGEAGENTID,
                @SUCCESSCOUNT output,
                @EXCEPTIONCOUNT output,
                @SPONSORPREFERENCEOPTION,
        @MAINTAINLOCKONTARGETOPPORTUNITY

            drop table #TRANSFERS;

      if @TOSPONSORSHIPOPPORTUNITYID is not null
        exec dbo.USP_SPONSORSHIPOPPORTUNITY_UNLOCK @TOSPONSORSHIPOPPORTUNITYID, @SUCCESSCOUNT, @CHANGEAGENTID
        end

    exec dbo.USP_SPONSORSHIPOPPORTUNITY_UNLOCK @SPONSORSHIPOPPORTUNITYID, 0, @CHANGEAGENTID
    end try
    begin catch
      exec dbo.USP_RAISE_ERROR;
      return 1;
    end catch

    return 0;
end