UFN_REVENUEDETAIL_GETDEFAULTRECOGNITIONS
Returns the default recognition credits for a constituent.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@GIVENANONYMOUSLY | bit | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@AMOUNT | money | IN | |
@DATE | datetime | IN | |
@SOURCERECURRINGGIFTREVENUESPLITID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_REVENUEDETAIL_GETDEFAULTRECOGNITIONS
(
@GIVENANONYMOUSLY bit,
@CONSTITUENTID uniqueidentifier,
@AMOUNT money,
@DATE datetime,
@SOURCERECURRINGGIFTREVENUESPLITID uniqueidentifier = null
)
returns @recognitions table
(
CONSTITUENTID uniqueidentifier,
REVENUERECOGNITIONTYPECODEID uniqueidentifier,
AMOUNT money
)
as
begin
declare @DEFAULTANONYMOUSRECOGNITION bit = 0;
if @GIVENANONYMOUSLY = 1
begin
--Select the value for default anonymous recognition setting
select @DEFAULTANONYMOUSRECOGNITION = DEFAULTANONYMOUSRECOGNITION
from dbo.RECOGNITIONDEFAULT
end
-- Return results if the gift wasn't given anonymous or recognition creation on default anonymous recognition setting is turned on
if @GIVENANONYMOUSLY = 0 or @DEFAULTANONYMOUSRECOGNITION = 1
begin
-- Recurring gift payments copy constituents from recurring gift recognitions
-- and calculate amounts by getting the ratio of the payment amount to the recurring gift amount
-- and then multiplying by the previous recognition amount for that constituent.
if @SOURCERECURRINGGIFTREVENUESPLITID is not null
begin
-- Calculate ratio if this is a recurring gift payment
-- Default ratio to 1 in case it isn't calculated
declare @RATIO decimal(20, 10)
select @RATIO = 1.0
-- TODO: convert this amount to the currency of ?
declare @RECURRINGGIFTAMOUNT money
select @RECURRINGGIFTAMOUNT = BASEAMOUNT from dbo.FINANCIALTRANSACTIONLINEITEM where ID = @SOURCERECURRINGGIFTREVENUESPLITID
-- If the recurring giftamount is 0, then the payment amount will be used since
-- @RATIO will remain 1.
if @RECURRINGGIFTAMOUNT <> 0
begin
-- Cast @AMOUNT to a decimal(20, 10) so @RATIO has its full precision.
select @RATIO = cast(@AMOUNT as decimal(20, 10)) / @RECURRINGGIFTAMOUNT
end
insert into @recognitions
(
CONSTITUENTID,
REVENUERECOGNITIONTYPECODEID,
AMOUNT
)
(
-- Create recognitions for constituents that were on the recurring gift recognitions.
select
CONSTITUENTID,
REVENUERECOGNITIONTYPECODEID,
AMOUNT * @RATIO
from dbo.REVENUERECOGNITION
where REVENUERECOGNITION.REVENUESPLITID = @SOURCERECURRINGGIFTREVENUESPLITID
)
end
else
begin
declare @DATEEARLIESTTIME datetime
set @DATEEARLIESTTIME = dbo.UFN_DATE_GETEARLIESTTIME(@DATE)
insert into @recognitions
(
CONSTITUENTID,
REVENUERECOGNITIONTYPECODEID,
AMOUNT
)
select
RECIPIENTCONSTITUENTID,
REVENUERECOGNITIONTYPECODEID,
(MATCHFACTOR * 0.01 * @AMOUNT)
from
dbo.UFN_CONSTITUENT_GETRECOGNITIONDEFAULTSBYSOURCE_2(@CONSTITUENTID, 1, 1,@DATEEARLIESTTIME )
where
(STARTDATE is null or STARTDATE <= @DATEEARLIESTTIME) and
(ENDDATE is null or ENDDATE >= @DATEEARLIESTTIME)
end
end
return
end