UFN_CONSTITUENT_LASTYEARSRECURRINGGIFT

Returns recurring gifts for the constituent last year.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@SEQUENCE tinyint IN

Definition

Copy


create function dbo.UFN_CONSTITUENT_LASTYEARSRECURRINGGIFT
(
    @ID uniqueidentifier,
    @SEQUENCE tinyint
)
returns money
as
begin
    declare @RECURRINGGIFTAMOUNT money;
    declare @STARTDATE datetime;
    declare @ENDDATE datetime;
    declare @TODAY datetime;
    declare @CONSTITUENTIDS table (ID uniqueidentifier primary key);
    declare @RECURRINGGIFTS table (
        ID int identity(1,1) not null,
        AMOUNT money
    );

    set @TODAY = getdate();
    set @STARTDATE = dbo.UFN_DATE_LASTCALENDARYEAR_FIRSTDAY(@TODAY, 0);
    set @ENDDATE = dbo.UFN_DATE_LASTCALENDARYEAR_LASTDAY(@TODAY, 1);

    insert into @CONSTITUENTIDS(ID) values (@ID);

    if dbo.UFN_CONSTITUENT_ISHOUSEHOLD(@ID) = 1 begin
        insert into @CONSTITUENTIDS(ID) (
            select
                MEMBERID
            from
                dbo.GROUPMEMBER
            where
                (GROUPID = @ID)
            )
    end;

    with RECURRINGGIFT_CTE as
    (
        select distinct
            RECURRINGGIFT.AMOUNT,
            RECURRINGGIFT.ID,
            RECURRINGGIFT.DATE
        from
            dbo.REVENUESPLIT 
            inner join dbo.REVENUE as PAYMENT on REVENUESPLIT.REVENUEID = PAYMENT.ID
            inner join dbo.RECURRINGGIFTACTIVITY on RECURRINGGIFTACTIVITY.PAYMENTREVENUEID = REVENUESPLIT.ID
            inner join dbo.REVENUE as RECURRINGGIFT on RECURRINGGIFTACTIVITY.SOURCEREVENUEID = RECURRINGGIFT.ID
        where
            (PAYMENT.DATE >= @STARTDATE)
            and (PAYMENT.DATE <= @ENDDATE)
            and (REVENUESPLIT.APPLICATIONCODE = 3)
            and (PAYMENT.CONSTITUENTID in (
                select ID
                from @CONSTITUENTIDS
                )            
            )
    )
    insert into @RECURRINGGIFTS(AMOUNT)
        select
            AMOUNT
        from
            RECURRINGGIFT_CTE
        order by
            DATE,
            ID;

    select
        @RECURRINGGIFTAMOUNT = AMOUNT
    from
        @RECURRINGGIFTS
    where
        (ID = @SEQUENCE);

    return coalesce(@RECURRINGGIFTAMOUNT, 0);

end