UFN_CAMPAIGN_GETTOTALPLEDGERECOGNITIONINCURRENCY
Returns total pledge recognition expected for a campaign converting amounts to the specified currency.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@HIERARCHYPATH | hierarchyid | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@RECOGNITIONTYPEID | uniqueidentifier | IN | |
@CURRENCYID | uniqueidentifier | IN | |
@ORGANIZATIONCURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_CAMPAIGN_GETTOTALPLEDGERECOGNITIONINCURRENCY (
@HIERARCHYPATH hierarchyid,
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@RECOGNITIONTYPEID uniqueidentifier,
@CURRENCYID uniqueidentifier = null,
@ORGANIZATIONCURRENCYID uniqueidentifier= null
) returns table as
return
select
case when @CURRENCYID = @ORGANIZATIONCURRENCYID then
coalesce(sum(DATA.ORGANIZATIONAMOUNT),0)
when @CURRENCYID = DATA.BASECURRENCYID then
coalesce(sum(DATA.AMOUNT),0)
else
coalesce(sum(DATA.AMOUNTINCURRENCY), 0)
end as TOTALRECEIVED
from (
select distinct
coalesce(PLEDGERECOGNITION.ID, PAYMENTRECOGNITION.ID) ID,
case when PLEDGERECOGNITION.ID is not null then
PLEDGERECOGNITION.ORGANIZATIONAMOUNT
else
PAYMENTRECOGNITION.ORGANIZATIONAMOUNT
end as ORGANIZATIONAMOUNT,
case when PLEDGERECOGNITION.ID is not null then
PLEDGERECOGNITION.BASECURRENCYID
else
PAYMENTRECOGNITION.BASECURRENCYID
end as BASECURRENCYID,
case when PLEDGERECOGNITION.ID is not null then
PLEDGERECOGNITION.AMOUNT
else
PAYMENTRECOGNITION.AMOUNT
end as AMOUNT,
case when PLEDGERECOGNITION.ID is not null then
dbo.UFN_REVENUERECOGNITION_GETAMOUNTINCURRENCY(PLEDGERECOGNITION.ID, @CURRENCYID)
else
PAYMENTRECOGNITION.AMOUNTINCURRENCY
end as AMOUNTINCURRENCY
from
dbo.REVENUESPLIT PLEDGESPLIT
inner join (
select
distinct REVENUESPLITCAMPAIGN.REVENUESPLITID
from
dbo.REVENUESPLITCAMPAIGN
inner join
dbo.CAMPAIGN on REVENUESPLITCAMPAIGN.CAMPAIGNID = CAMPAIGN.ID
where
CAMPAIGN.HIERARCHYPATH.IsDescendantOf(@HIERARCHYPATH) = 1
) as CAMPAIGNREVENUESPLIT on PLEDGESPLIT.ID = CAMPAIGNREVENUESPLIT.REVENUESPLITID
left join
dbo.REVENUERECOGNITION PLEDGERECOGNITION on PLEDGERECOGNITION.REVENUESPLITID = PLEDGESPLIT.ID
left outer join
dbo.REVENUE PLEDGE on PLEDGESPLIT.REVENUEID = PLEDGE.ID
left join (
select
INSTALLMENTSPLITPAYMENT.PLEDGEID as PLEDGEID,
INSTALLMENTSPLITPAYMENT.PAYMENTID as PAYMENTID,
INSTALLMENTSPLIT.DESIGNATIONID as DESIGNATIONID
from dbo.INSTALLMENTSPLITPAYMENT
inner join dbo.INSTALLMENTSPLIT on INSTALLMENTSPLIT.ID = INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID
) INSTALLMENTS on INSTALLMENTS.PLEDGEID = PLEDGE.ID and INSTALLMENTS.DESIGNATIONID = PLEDGESPLIT.DESIGNATIONID
left join
dbo.REVENUESPLIT PAYMENTSPLIT on PAYMENTSPLIT.ID = INSTALLMENTS.PAYMENTID
outer apply
dbo.UFN_RECOGNITIONCREDIT_GETRECOGNITIONS_3(1, @RECOGNITIONTYPEID, @CURRENCYID, PAYMENTSPLIT.ID, null, null) PAYMENTRECOGNITION
where
(@STARTDATE <= coalesce(PLEDGERECOGNITION.EFFECTIVEDATE,PAYMENTRECOGNITION.EFFECTIVEDATE) or @STARTDATE is null)
and
(coalesce(PLEDGERECOGNITION.EFFECTIVEDATE,PAYMENTRECOGNITION.EFFECTIVEDATE) <= @ENDDATE or @ENDDATE is null)
and
PLEDGE.TRANSACTIONTYPECODE in (1,3,4,6)
and
(coalesce(PLEDGERECOGNITION.REVENUERECOGNITIONTYPECODEID, PAYMENTRECOGNITION.REVENUERECOGNITIONTYPECODEID) = @RECOGNITIONTYPEID or @RECOGNITIONTYPEID is null)
) as DATA
group by DATA.BASECURRENCYID