USP_REPORT_SPONSORSHIPRESERVEEXCEPTION

Parameters

Parameter Parameter Type Mode Description
@ID nvarchar(36) IN

Definition

Copy

create procedure dbo.USP_REPORT_SPONSORSHIPRESERVEEXCEPTION
(
    @ID nvarchar(36)
)
with execute as owner
as
    set nocount on;

    declare @TABLENAME nvarchar(128)
    declare @SQL nvarchar(4000);

    select @TABLENAME = BUSINESSPROCESSOUTPUT.TABLENAME 
    from dbo.BUSINESSPROCESSSTATUS 
    inner join dbo.BUSINESSPROCESSOUTPUT on BUSINESSPROCESSSTATUS.ID = BUSINESSPROCESSOUTPUT.BUSINESSPROCESSSTATUSID
    where BUSINESSPROCESSSTATUS.ID = @ID
    and BUSINESSPROCESSOUTPUT.TABLEKEY = 'Exception';

    if @TABLENAME is null or OBJECT_ID(@TABLENAME) is null
        raiserror('Business process exception table could not be found.  The process might not have completed successfully. ',13,1)

    begin try
        set @SQL = 'select ''http://www.blackbaud.com?SPOPPORTUNITYID='' + CONVERT(nvarchar(36),SPO.ID) SPOPPORTUNITYID,
               dbo.UFN_SPONSORSHIPOPPORTUNITY_TRANSLATIONFUNCTION(SPO.ID) SPOPPORTUNITY, 
         SPO.LOOKUPID SPOPPORTUNITYLOOKUPID,
               case EXCEPTIONTAB.ERRORMESSAGE
               when ''BBERR_OPPORTUNITYNOTAVAILABLE'' then N''Opportunity is not available for reserve action.''                 
               end ERRORMESSAGE
        from dbo.' + @TABLENAME + ' EXCEPTIONTAB 
        inner join dbo.SPONSORSHIPOPPORTUNITY SPO on SPO.ID = EXCEPTIONTAB.SPOPPORTUNITYID
    union
    select '''' SPOPPORTUNITYID,
       '''' SPOPPORTUNITY,  
     '''' SPOPPORTUNITYLOOKUPID,
       ''* The maximum reservation number exceeded the available number of opportunities'' ERRORMESSAGE
       from dbo.BUSINESSPROCESSSTATUS BPS
       inner join dbo.SPONSORSHIPOPPORTUNITYRESERVEPROCESS SPR on SPR.ID = BPS.BUSINESSPROCESSPARAMETERSETID
       where BPS.ID = ''' + convert(nvarchar(100),@ID) + ''' and NUMBEROFEXCEPTIONS + NUMBERPROCESSED <= SPR.MAXKEYNUMBER     
       order by ERRORMESSAGE desc';  

        exec sp_executesql @SQL;
    end try
    begin catch
        exec dbo.USP_RAISE_ERROR;
        return 1;
    end catch

return 0;