UFN_OPPORTUNITY_GETAMOUNTPAID_INCURRENCY
This function gets the amount of revenue that has been applied to an opportunity in the given currency.
Return
Return Type |
---|
money |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@OPPORTUNITYID | uniqueidentifier | IN | |
@CURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_OPPORTUNITY_GETAMOUNTPAID_INCURRENCY
(
@OPPORTUNITYID uniqueidentifier,
@CURRENCYID uniqueidentifier
)
returns money as
begin
declare @ASSOCIATEDGIFTS money;
declare @ASSOCIATEDPLEDGEPAYMENTS money;
declare @ASSOCIATEDEVENTREGISTRATIONPAYMENTS money;
select
@ASSOCIATEDGIFTS =
sum (
case
when @CURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID then FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT
else dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(FINANCIALTRANSACTIONLINEITEM.ID, @CURRENCYID)
end
)
from dbo.REVENUEOPPORTUNITY
inner join dbo.FINANCIALTRANSACTIONLINEITEM on REVENUEOPPORTUNITY.ID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
where
REVENUEOPPORTUNITY.OPPORTUNITYID = @OPPORTUNITYID and
FINANCIALTRANSACTION.DELETEDON is null and
FINANCIALTRANSACTION.TYPECODE = 0 and
REVENUESPLIT_EXT.APPLICATIONCODE in (0,6,7); -- gifts, planned gifts, and matching gift claims
set @ASSOCIATEDGIFTS = coalesce(@ASSOCIATEDGIFTS, 0);
select
@ASSOCIATEDPLEDGEPAYMENTS =
sum (
case
when @CURRENCYID = INSTALLMENTSPLITPAYMENT.APPLICATIONCURRENCYID then INSTALLMENTSPLITPAYMENT.AMOUNT
else dbo.UFN_INSTALLMENTSPLITPAYMENT_GETAMOUNTINCURRENCY(INSTALLMENTSPLITPAYMENT.ID, @CURRENCYID)
end
)
from (
select distinct
FINANCIALTRANSACTION.ID as REVENUEID,
FINANCIALTRANSACTION.DATEADDED
from dbo.REVENUEOPPORTUNITY
inner join dbo.FINANCIALTRANSACTIONLINEITEM on REVENUEOPPORTUNITY.ID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
where
REVENUEOPPORTUNITY.OPPORTUNITYID = @OPPORTUNITYID and
FINANCIALTRANSACTION.DELETEDON is null and
FINANCIALTRANSACTION.TYPECODE in (1, 6)
) as OPPORTUNITYPLEDGES
inner join dbo.INSTALLMENT on INSTALLMENT.REVENUEID = OPPORTUNITYPLEDGES.REVENUEID
inner join INSTALLMENTSPLIT on INSTALLMENTSPLIT.INSTALLMENTID = INSTALLMENT.ID
inner join INSTALLMENTSPLITPAYMENT on INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID;
set @ASSOCIATEDPLEDGEPAYMENTS = coalesce(@ASSOCIATEDPLEDGEPAYMENTS, 0);
select
@ASSOCIATEDEVENTREGISTRATIONPAYMENTS =
sum (
case
when @CURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID then FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT
else dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(FINANCIALTRANSACTIONLINEITEM.ID, @CURRENCYID)
end
)
from dbo.EVENTREGISTRATIONOPPORTUNITY
inner join dbo.EVENTREGISTRANTPAYMENT on EVENTREGISTRATIONOPPORTUNITY.ID = EVENTREGISTRANTPAYMENT.REGISTRANTID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on EVENTREGISTRANTPAYMENT.PAYMENTID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
where
EVENTREGISTRATIONOPPORTUNITY.OPPORTUNITYID = @OPPORTUNITYID and
FINANCIALTRANSACTION.DELETEDON is null and
FINANCIALTRANSACTION.TYPECODE = 0;
set @ASSOCIATEDEVENTREGISTRATIONPAYMENTS = coalesce(@ASSOCIATEDEVENTREGISTRATIONPAYMENTS, 0);
return @ASSOCIATEDGIFTS + @ASSOCIATEDPLEDGEPAYMENTS + @ASSOCIATEDEVENTREGISTRATIONPAYMENTS;
end