UFN_DESIGNATION_PLANNEDGIFTREVENUEBYAPPEALINCURRENCY
Returns the planned gift revenue for a given designation filtered by appeal information in a given currency.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@CURRENCYID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_DESIGNATION_PLANNEDGIFTREVENUEBYAPPEALINCURRENCY
(
@STARTDATE datetime,
@ENDDATE datetime,
@CURRENCYID uniqueidentifier
)
returns @REVENUEINFO table
(
APPEALID uniqueidentifier NOT NULL,
DESID uniqueidentifier NOT NULL,
DESNAME nvarchar(500) NOT NULL,
DESTOTALPLANNEDGIFT money NOT NULL,
DESPLANNEDGIFTPAID money NOT NULL,
DESPLANNEDGIFTWRITTENOFF money NOT NULL
)
as
begin
select
@STARTDATE = dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE),
@ENDDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE);
declare @ORGANIZATIONCURRENCY uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @CURRENCYCODE tinyint;
declare @DECIMALDIGITS tinyint;
declare @ROUNDINGTYPECODE tinyint;
if @CURRENCYID is null
set @CURRENCYCODE = 0; -- Use the appeal's base currency
else if @CURRENCYID = @ORGANIZATIONCURRENCY
set @CURRENCYCODE = 1; -- Use the organization currency
else
set @CURRENCYCODE = 3; -- Use the currency specified
if @CURRENCYCODE = 3
select
@DECIMALDIGITS = DECIMALDIGITS,
@ROUNDINGTYPECODE = ROUNDINGTYPECODE
from
dbo.UFN_CURRENCY_GETPROPERTIES(@CURRENCYID)
insert into @REVENUEINFO
select
APPEALREVENUE.APPEALID APPEALID,
DESIGNATION.ID DESID,
DESIGNATION.NAME DESNAME,
coalesce(sum(APPEALREVENUE.REVENUEAMOUNTINCURRENCY),0) DESTOTALNEWCOMMITMENT,
(
select
coalesce(sum(PAYAPPEALREVENUESPLIT.REVENUESPLITAMOUNTINCURRENCY), 0)
from dbo.UFN_APPEALREVENUESPLIT_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCY, @DECIMALDIGITS, @ROUNDINGTYPECODE, @CURRENCYCODE) PAYAPPEALREVENUESPLIT
where PAYAPPEALREVENUESPLIT.REVENUESPLITID in (
select IP.PAYMENTID
from dbo.INSTALLMENTPAYMENT IP
inner join dbo.FINANCIALTRANSACTION PLEDGEREV on IP.PLEDGEID = PLEDGEREV.ID
inner join dbo.REVENUE_EXT on PLEDGEREV.ID = REVENUE_EXT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM PLEDGEREVSPL on PLEDGEREV.ID = PLEDGEREVSPL.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on PLEDGEREVSPL.ID = REVENUESPLIT_EXT.ID
where
(PLEDGEREV.DATE >= @STARTDATE or @STARTDATE is null) and
(PLEDGEREV.DATE <= @ENDDATE or @ENDDATE is null) and
(REVENUESPLIT_EXT.APPLICATIONCODE = 6) and
(REVENUE_EXT.APPEALID=APPEALREVENUE.APPEALID and REVENUESPLIT_EXT.DESIGNATIONID=DESIGNATION.ID)
and PLEDGEREV.DELETEDON is null
)
and
(PAYAPPEALREVENUESPLIT.APPEALID=APPEALREVENUE.APPEALID and PAYAPPEALREVENUESPLIT.DESIGNATIONID=DESIGNATION.ID) and
(PAYAPPEALREVENUESPLIT.DATE >= @STARTDATE or @STARTDATE is null) and
(PAYAPPEALREVENUESPLIT.DATE <= @ENDDATE or @ENDDATE is null)
) DESPLANNEDGIFTPAID,
(
select
coalesce(sum(APPEALREVENUEWRITEOFFSPLIT.WRITEOFFSPLITAMOUNTINCURRENCY),0)
from dbo.UFN_APPEALREVENUESPLIT_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCY, @DECIMALDIGITS, @ROUNDINGTYPECODE, @CURRENCYCODE) APPEALREVENUEWRITEOFFSPLIT
where
(APPEALREVENUEWRITEOFFSPLIT.DATE >= @STARTDATE or @STARTDATE is null) and
(APPEALREVENUEWRITEOFFSPLIT.DATE <= @ENDDATE or @ENDDATE is null) and
(APPEALREVENUEWRITEOFFSPLIT.APPEALID=APPEALREVENUE.APPEALID and APPEALREVENUEWRITEOFFSPLIT.DESIGNATIONID=DESIGNATION.ID) and
(APPEALREVENUEWRITEOFFSPLIT.TRANSACTIONTYPECODE = 4)
) DESPLANNEDGIFTWRITTENOFF
from
dbo.UFN_APPEALREVENUE_GETAMOUNTSINCURRENCY_BULK(@CURRENCYID, @ORGANIZATIONCURRENCY, @DECIMALDIGITS, @ROUNDINGTYPECODE, @CURRENCYCODE) APPEALREVENUE
inner join dbo.FINANCIALTRANSACTIONLINEITEM on APPEALREVENUE.REVENUEID=FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.DESIGNATION on DESIGNATION.ID=REVENUESPLIT_EXT.DESIGNATIONID
where
(APPEALREVENUE.APPEALID is not null) and
(APPEALREVENUE.TRANSACTIONTYPECODE = 4) and
((APPEALREVENUE.DATE >= @STARTDATE) or @STARTDATE is null) and
((APPEALREVENUE.DATE <= @ENDDATE)or @ENDDATE is null)
group by APPEALREVENUE.APPEALID, DESIGNATION.ID, DESIGNATION.NAME;
return;
end