UFN_REVENUE_GETRECOGNITIONS_2

Returns all recognition credits for a given revenue detail record.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@REVENUESPLITID uniqueidentifier IN

Definition

Copy


CREATE function [dbo].[UFN_REVENUE_GETRECOGNITIONS_2]
(
@REVENUESPLITID uniqueidentifier
)
returns table
as
return 
(
with PLEDGENETAMOUNTCTE as
    (select FINANCIALTRANSACTIONLINEITEM.ID,
    FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT - 
        coalesce((select
        sum(INSTALLMENTSPLITWRITEOFF.AMOUNT) as AMOUNT
        from dbo.INSTALLMENTSPLIT
        inner join dbo.INSTALLMENTSPLITWRITEOFF on INSTALLMENTSPLITWRITEOFF.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID 
        where 
        INSTALLMENTSPLIT.PLEDGEID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID and
        INSTALLMENTSPLIT.DESIGNATIONID = REVENUESPLIT_EXT.DESIGNATIONID), 0) as NETAMOUNT
    from dbo.FINANCIALTRANSACTIONLINEITEM inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
    )

select REVENUERECOGNITION.[ID],
REVENUERECOGNITION.[CONSTITUENTID],
CONSTITUENT.NAME,
REVENUERECOGNITION.[AMOUNT],
-- If this is a recurring gift, just use the revenue date as the effective date.  If the actual

-- recognition effective date were used then the sorting could be off since the effective date isn't displayed

-- for that revenue type.

case when FINANCIALTRANSACTION.TYPECODE <> 2 then [EFFECTIVEDATE] else FINANCIALTRANSACTION.DATE end 'EFFECTIVEDATE',
[REVENUERECOGNITIONTYPECODEID],
REVENUERECOGNITIONTYPECODE.DESCRIPTION as RECOGNITIONTYPE,
case FINANCIALTRANSACTION.TYPECODE 
    when 1 then case 
        when REVENUERECOGNITION.AMOUNT > FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT or (select NETAMOUNT from PLEDGENETAMOUNTCTE where ID = FINANCIALTRANSACTIONLINEITEM.ID) = 0
            then dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGESPLITGROSSAMOUNT(FINANCIALTRANSACTIONLINEITEM.ID) - FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT + REVENUERECOGNITION.AMOUNT 
        -- Remove write-offs from the split amount since write-offs affect the gift aid amount for pledges

        else REVENUERECOGNITION.AMOUNT/(select NETAMOUNT from PLEDGENETAMOUNTCTE where ID = FINANCIALTRANSACTIONLINEITEM.ID) * (dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGESPLITGROSSAMOUNT(FINANCIALTRANSACTIONLINEITEM.ID) - FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT) + REVENUERECOGNITION.AMOUNT 
        end
    when 2 then case 
        when REVENUERECOGNITION.AMOUNT > FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT or FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT = 0
            then dbo.UFN_GIFTAIDREVENUESPLIT_GETSPLITTAXCLAIMAMOUNT(FINANCIALTRANSACTIONLINEITEM.ID, 1) + REVENUERECOGNITION.AMOUNT 
        -- No need to remove write-offs from split amount since write-offs don't affect the gift aid amount for recurring gifts

        else REVENUERECOGNITION.AMOUNT/FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT * dbo.UFN_GIFTAIDREVENUESPLIT_GETSPLITTAXCLAIMAMOUNT(FINANCIALTRANSACTIONLINEITEM.ID, 1) + REVENUERECOGNITION.AMOUNT
        end
    else REVENUERECOGNITION.AMOUNT 
    end as GROSSAMOUNT,
REVENUERECOGNITION.BASECURRENCYID,
REVENUERECOGNITION.ORGANIZATIONAMOUNT,
REVENUERECOGNITION.ORGANIZATIONEXCHANGERATEID
from 
dbo.REVENUERECOGNITION
inner join dbo.CONSTITUENT on CONSTITUENT.ID = REVENUERECOGNITION.CONSTITUENTID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on FINANCIALTRANSACTIONLINEITEM.ID = REVENUERECOGNITION.REVENUESPLITID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
left join dbo.REVENUERECOGNITIONTYPECODE on REVENUERECOGNITION.REVENUERECOGNITIONTYPECODEID = REVENUERECOGNITIONTYPECODE.ID
where 
REVENUERECOGNITION.REVENUESPLITID = @REVENUESPLITID
)