USP_REVENUE_PULLSOLICITORSFROMFUNDINGREQUEST_ONLYNEWSPLITS
Adds solicitors for new splits of a given revenue record based on the given funding request, the solicitor credit rules, and the splits from the form.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@SPLITS | xml | IN | |
@REVENUEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN |
Definition
Copy
CREATE procedure USP_REVENUE_PULLSOLICITORSFROMFUNDINGREQUEST_ONLYNEWSPLITS
(
@SPLITS xml,
@REVENUEID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@CURRENTDATE datetime
)
as begin
-- Call this after the new splits have been added to the database.
set nocount on;
--Multicurrency - Retrieve multicurrency info for conversions
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @BASECURRENCYID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
select
@BASECURRENCYID = BASECURRENCYID,
@ORGANIZATIONEXCHANGERATEID = ORGANIZATIONEXCHANGERATEID
from
dbo.REVENUE
where
ID = @REVENUEID
declare @FUNDINGREQUESTID uniqueidentifier;
declare @SPLITSTBL table
(
REVENUESPLITID uniqueidentifier
)
declare @ACTIVEREVENUESPLITSTBL table
(
REVENUESPLITID uniqueidentifier,
AMOUNT money
)
select
@FUNDINGREQUESTID = REVENUEFUNDINGREQUEST.FUNDINGREQUESTID
from dbo.REVENUEFUNDINGREQUEST
where REVENUEFUNDINGREQUEST.ID = @REVENUEID
insert into @SPLITSTBL
(REVENUESPLITID)
select
T.c.value('(ID)[1]','uniqueidentifier') as REVENUESPLITID
from
@SPLITS.nodes('/SPLITS/ITEM') T(c)
-- Get the splits that are on the record, including only those
-- that have credit rules active and were newly created (they have no ID in
-- the table from the XML).
insert into @ACTIVEREVENUESPLITSTBL
(REVENUESPLITID, AMOUNT)
select
REVENUESPLIT.ID,
REVENUESPLIT.AMOUNT
from
dbo.REVENUESPLIT
left join @SPLITSTBL as SPLITSTBL on SPLITSTBL.REVENUESPLITID = REVENUESPLIT.ID
where
(REVENUESPLIT.REVENUEID = @REVENUEID)
and
(dbo.UFN_SOLICITORCREDITRULES_ACTIVEFORREVENUESPLIT(REVENUESPLIT.ID) = 1)
and
((select count(ID) from dbo.REVENUESOLICITOR where REVENUESPLITID = REVENUESPLIT.ID) = 0)
insert into dbo.REVENUESOLICITOR
(
REVENUESPLITID,
CONSTITUENTID,
AMOUNT,
SEQUENCE,
DATEADDED,
DATECHANGED,
ADDEDBYID,
CHANGEDBYID,
BASECURRENCYID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID
)
select
ACTIVESPLITS.REVENUESPLITID,
SOLICITORS.ID,
(SOLICITORS.CREDITPERCENTAGE * ACTIVESPLITS.AMOUNT) / 100.0,
SOLICITORS.SEQUENCE,
@CURRENTDATE,
@CURRENTDATE,
@CHANGEAGENTID,
@CHANGEAGENTID,
@BASECURRENCYID BASECURRENCYID,
case --Multicurrency - Calculate organization amount.
when @BASECURRENCYID <> @ORGANIZATIONCURRENCYID
then dbo.UFN_CURRENCY_CONVERT((SOLICITORS.CREDITPERCENTAGE * ACTIVESPLITS.AMOUNT) / 100.0, @ORGANIZATIONEXCHANGERATEID)
else (SOLICITORS.CREDITPERCENTAGE * ACTIVESPLITS.AMOUNT) / 100.0
end ORGANIZATIONAMOUNT,
@ORGANIZATIONEXCHANGERATEID ORGANIZATIONEXCHANGERATEID
from
dbo.UFN_FUNDINGREQUEST_GETFUNDRAISERSANDCREDITS(@FUNDINGREQUESTID) as SOLICITORS
cross join @ACTIVEREVENUESPLITSTBL as ACTIVESPLITS
end