UFN_REVENUE_SHOULDUPDATEGIFTFEE
Determines whether gift fees should be updated for the given payment.
Return
Return Type |
---|
tinyint |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@CONSTITUENTID | uniqueidentifier | IN | |
@PAYMENTMETHOD | tinyint | IN | |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@BASEEXCHANGERATEID | uniqueidentifier | IN | |
@ORGANIZATIONEXCHANGERATEID | uniqueidentifier | IN | |
@REVENUESTREAMS | xml | IN | |
@RECEIPTAMOUNT | money | IN | |
@TRANSACTIONAMOUNT | money | IN |
Definition
Copy
CREATE function dbo.UFN_REVENUE_SHOULDUPDATEGIFTFEE
(
@REVENUEID uniqueidentifier,
@CONSTITUENTID uniqueidentifier,
@PAYMENTMETHOD tinyint,
@TRANSACTIONCURRENCYID uniqueidentifier,
@BASECURRENCYID uniqueidentifier,
@BASEEXCHANGERATEID uniqueidentifier,
@ORGANIZATIONEXCHANGERATEID uniqueidentifier,
@REVENUESTREAMS xml,
@RECEIPTAMOUNT money,
@TRANSACTIONAMOUNT money
)
returns tinyint --0=No change, 1=Update existing, 2=Add new, 3=Remove existing
with execute as caller
as begin
--If there is no default override code, never prompt
if not exists (select 1 from dbo.GIFTFEEOVERRIDEREASONCODE where ISPAYMENTEDITDEFAULT=1 and ACTIVE=1)
return 0;
declare @SPLITS table
(
ID uniqueidentifier,
APPLICATIONCODE tinyint,
TRANSACTIONAMOUNT money,
DESIGNATIONID uniqueidentifier
)
insert into @SPLITS (ID, APPLICATIONCODE, TRANSACTIONAMOUNT, DESIGNATIONID)
select
T.c.value('(ID)[1]','uniqueidentifier') as ID,
T.c.value('(APPLICATIONCODE)[1]','tinyint') as APPLICATIONCODE,
T.c.value('(APPLIED)[1]','money') as AMOUNT,
T.c.value('(DESIGNATIONID)[1]','uniqueidentifier') as DESIGNATIONID
from
@REVENUESTREAMS.nodes('REVENUESTREAMS/ITEM') T(c)
declare @REVENUESPLITS table
(
ID uniqueidentifier,
TRANSACTIONAMOUNT money,
APPLICATIONCODE int,
DESIGNATIONLEVELID uniqueidentifier
);
insert into @REVENUESPLITS
select
REVENUESPLITSTABLE.ID,
REVENUESPLITSTABLE.TRANSACTIONAMOUNT AS TRANSACTIONAMOUNT,
case REVENUESPLITSTABLE.APPLICATIONCODE when 100 then 7 else REVENUESPLITSTABLE.APPLICATIONCODE end,
coalesce(DESIGNATION.DESIGNATIONLEVEL5ID, DESIGNATION.DESIGNATIONLEVEL4ID, DESIGNATION.DESIGNATIONLEVEL3ID, DESIGNATION.DESIGNATIONLEVEL2ID, DESIGNATION.DESIGNATIONLEVEL2ID, DESIGNATION.DESIGNATIONLEVEL1ID) AS DESIGNATIONLEVELID
from @SPLITS AS REVENUESPLITSTABLE
left outer join dbo.DESIGNATION on REVENUESPLITSTABLE.DESIGNATIONID = DESIGNATION.ID
declare @REVENUESPLITSXML xml;
set @REVENUESPLITSXML = (select * from @REVENUESPLITS order by ID
for xml raw('ITEM'),type,elements,root('SPLITS'),BINARY BASE64);
declare @GIFTFEES table
(ID uniqueidentifier,
FEE money,
WAIVED bit,
SPLITRECEIPTAMOUNT money,
BASECURRENCYID uniqueidentifier,
ORGANIZATIONAMOUNT money,
ORGANIZATIONEXCHANGERATEID uniqueidentifier,
TRANSACTIONAMOUNT money,
TRANSACTIONCURRENCYID uniqueidentifier,
BASEEXCHANGERATEID uniqueidentifier);
insert into @GIFTFEES
select
ID,
FEE,
WAIVED,
SPLITRECEIPTAMOUNT,
BASECURRENCYID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID,
TRANSACTIONAMOUNT,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID
from UFN_REVENUE_GENERATEDEFAULTGIFTFEESWITHTRANSACTIONAMOUNT_3(@REVENUEID,
@CONSTITUENTID,
@PAYMENTMETHOD,
@TRANSACTIONAMOUNT,
@RECEIPTAMOUNT,
@BASECURRENCYID,
@TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID,
@REVENUESPLITSXML,
null) -- ORGANIZATIONAMOUNT
declare @GIFTFEECOUNTTEMP tinyint
declare @GIFTFEESUMTEMP money
--Compute the gift fee sum and number of records for addition/deletion/modification
select
@GIFTFEECOUNTTEMP = COUNT(*),
@GIFTFEESUMTEMP = SUM(FEE)
from @GIFTFEES;
declare @GIFTFEECOUNT tinyint
declare @GIFTFEESUM money
select
@GIFTFEECOUNT = COUNT(*),
@GIFTFEESUM = SUM(FEE)
from
dbo.REVENUESPLITGIFTFEE
inner join dbo.REVENUESPLIT on REVENUESPLITGIFTFEE.ID=REVENUESPLIT.ID
where
REVENUESPLIT.REVENUEID = @REVENUEID
and REVENUESPLITGIFTFEE.WAIVED <> 1
if @GIFTFEECOUNTTEMP > @GIFTFEECOUNT
return 2; --GIFT FEE ADDED
else if @GIFTFEECOUNTTEMP < @GIFTFEECOUNT
return 3; --GIFT FEE REMOVED
else
begin
if @GIFTFEESUMTEMP <> @GIFTFEESUM
return 1; --GIFT FEE UPDATED
end
return 0;
end