USP_DATAFORMTEMPLATE_VIEW_SPONSORSUMMARY

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@DATALOADED bit INOUT
@SPONSORSINCE datetime INOUT
@LASTSPONSORSHIP nvarchar(100) INOUT
@SPONSORSHIPCOUNT int INOUT
@SPONSORSHIPTOTALAMOUNT money INOUT
@DONOTTERMINATE bit INOUT
@PASTDUETOTAL money INOUT
@SHOWPASTDUE bit INOUT
@SPONSORTYPECODE tinyint INOUT
@UNIQUEOPPORTUNITIESFORGIFTDONOR bit INOUT
@ISFORMERSPONSOR bit INOUT
@BASECURRENCYID uniqueidentifier INOUT
@CURRENTAPPUSERID uniqueidentifier IN
@HASRECEIVEDFUNDS bit INOUT
@FINANCIALCOMMITMENTCOUNT int INOUT
@SINGLESPONSORSHIP bit INOUT

Definition

Copy

    CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_SPONSORSUMMARY (
        @ID uniqueidentifier,
        @DATALOADED bit = 0 output,
        @SPONSORSINCE datetime = null output,
        @LASTSPONSORSHIP nvarchar(100) = null output,
        @SPONSORSHIPCOUNT int = null output,
        @SPONSORSHIPTOTALAMOUNT money = null output,
        @DONOTTERMINATE bit = null output,
        @PASTDUETOTAL money = null output,
        @SHOWPASTDUE bit = null output,
        @SPONSORTYPECODE tinyint = null output,
        @UNIQUEOPPORTUNITIESFORGIFTDONOR bit = null output,
        @ISFORMERSPONSOR bit = null output,
        @BASECURRENCYID uniqueidentifier = null output,
        @CURRENTAPPUSERID uniqueidentifier = null,
        @HASRECEIVEDFUNDS bit = null output,
        @FINANCIALCOMMITMENTCOUNT int = null output,
        @SINGLESPONSORSHIP bit = null output
        )
    as
    set nocount on;
    set @DATALOADED = 0;

    declare @CURRENTDATE datetime;

    set @CURRENTDATE = getdate();

    declare @CURRENTDATEEARLIESTTIME date;

    set @CURRENTDATEEARLIESTTIME = @CURRENTDATE;

    declare @CONSTITUENTISSPONSOR bit = 0;
    declare @CONSTITUENTISFORMERSPONSOR bit = 0;

    exec dbo.USP_SPONSOR_GETINFORMATION @CONSTITUENTID = @ID,
        @ISSPONSOR = @CONSTITUENTISSPONSOR output,
        @ISFORMERSPONSOR = @CONSTITUENTISFORMERSPONSOR output;

    set @BASECURRENCYID = dbo.UFN_APPUSER_GETBASECURRENCY(@CURRENTAPPUSERID)

    select @DATALOADED = 1
    from dbo.CONSTITUENT
    where CONSTITUENT.ID = @ID
        and (
            @CONSTITUENTISSPONSOR = 1
            or @CONSTITUENTISFORMERSPONSOR = 1
            );

    --SPONSOR SINCE
    select @SPONSORSINCE = min(DATEFROM)
    from dbo.SPONSORDATERANGE
    where CONSTITUENTID = @ID

    --LAST SPONSORSHIP, SPONSORTYPECODE
    select top 1 @LASTSPONSORSHIP = case 
            when nullif(max(DATETO), CURRENT_TIMESTAMP) >= CURRENT_TIMESTAMP
                then 'Current'
            else max(DATETO)
            end,
        @SPONSORTYPECODE = case 
            when min(SPONSORTYPECODE) = max(SPONSORTYPECODE)
                then min(SPONSORTYPECODE)
            else 0
            end
    from dbo.SPONSORDATERANGE
    where CONSTITUENTID = @ID
    group by case 
            when DATEFROM <= @CURRENTDATEEARLIESTTIME
                then 0
            else 1
            end,
        case 
            when (
                    DATETO is null
                    or DATETO > @CURRENTDATEEARLIESTTIME
                    )
                then 0
            else 1
            end
    order by case 
            when DATEFROM <= @CURRENTDATEEARLIESTTIME
                then 0
            else 1
            end,
        case 
            when (
                    DATETO is null
                    or DATETO > @CURRENTDATEEARLIESTTIME
                    )
                then 0
            else 1
            end;

    --SPONSORSHIP COUNT
    set @SPONSORSHIPCOUNT = dbo.UFN_SPONSORSHIP_GETACTIVESPONSORSHIPSFORSPONSOR(@ID);
    --Financial Commitment Count
    set @FINANCIALCOMMITMENTCOUNT = dbo.UFN_SPONSORSHIP_GETACTIVEFINANCIALCOMMITMENTFORSPONSOR(@ID);

    --TOTAL AMOUNT OF ALL SPONSORSHIP payments
    select @SPONSORSHIPTOTALAMOUNT = isnull(sum(case REVENUESPLIT.TRANSACTIONCURRENCYID
                    when @BASECURRENCYID
                        then REVENUESPLIT.TRANSACTIONAMOUNT
                    else dbo.UFN_CURRENCY_CONVERT(REVENUESPLIT.TRANSACTIONAMOUNT, dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(REVENUESPLIT.TRANSACTIONCURRENCYID, @BASECURRENCYID, REVENUE.date, 1, null))
                    end), 0)
    from dbo.REVENUESPLIT
    inner join dbo.REVENUE
        on REVENUESPLIT.REVENUEID = REVENUE.ID
    where REVENUESPLIT.TYPECODE = 9
        and REVENUE.TRANSACTIONTYPECODE = 0
        and REVENUE.CONSTITUENTID = @ID;

    --TOTAL AMOUNT DUE
    create table #SPONSORSHIPREVENUE (
        ID uniqueidentifier,
        [DATE] datetime,
        TRANSACTIONCURRENCYID uniqueidentifier
        )

    insert into #SPONSORSHIPREVENUE (
        ID,
        [DATE],
        TRANSACTIONCURRENCYID
        )
    select REVENUE.ID,
        REVENUE.date,
        REVENUESPLIT.TRANSACTIONCURRENCYID
    from dbo.REVENUE
    inner join dbo.REVENUESPLIT
        on REVENUESPLIT.REVENUEID = REVENUE.ID
    inner join dbo.SPONSORSHIP
        on SPONSORSHIP.REVENUESPLITID = REVENUESPLIT.id
    where REVENUE.CONSTITUENTID = @ID
        and SPONSORSHIP.STATUSCODE = 1;

    select @PASTDUETOTAL = isnull(sum(case r.TRANSACTIONCURRENCYID
                    when @BASECURRENCYID
                        then PASTDUEAMOUNT.AMOUNT
                    else dbo.UFN_CURRENCY_CONVERT(PASTDUEAMOUNT.AMOUNT, dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(R.TRANSACTIONCURRENCYID, @BASECURRENCYID, R.date, 1, null))
                    end), 0)
    from #SPONSORSHIPREVENUE r
    inner join dbo.UFN_RECURRINGGIFT_GETPASTDUEAMOUNT_BULK_2(getdate(), 0) PASTDUEAMOUNT
        on r.ID = PASTDUEAMOUNT.ID;

    --CONSTITUENCIES
    select @ISFORMERSPONSOR = dbo.UFN_CONSTITUENT_ISFORMERSPONSOR(@ID)
    from dbo.CONSTITUENT as C
    where C.ID = @ID;

    -- sponsor termination code
    select @DONOTTERMINATE = DONOTTERMINATE,
        @UNIQUEOPPORTUNITIESFORGIFTDONOR = UNIQUEOPPORTUNITIESFORGIFTDONOR
    from dbo.SPONSOR S
    where S.ID = @ID;

    -- Show past due?
    --Always showing past due now that the payment handling rules replace the RECURRINGGIFTSETTING
    set @SHOWPASTDUE = 1
    set @HASRECEIVEDFUNDS = dbo.UFN_CONSTITUENT_HASRECEIVEDFUNDS(@ID)

    declare @RECORDSCOUNT int;

    select @RECORDSCOUNT = count(ID)
    from dbo.SPONSORSHIPCOMMITMENT
    where CONSTITUENTID = @ID;

    set @SINGLESPONSORSHIP = 0;

    if @RECORDSCOUNT = 1
        set @SINGLESPONSORSHIP = 1;

    return 0;