USP_REVENUE_PULLSOLICITORSFROMFUNDINGREQUEST
Adds solicitors for the splits of a given revenue record based on the given funding request and the solicitor credit rules.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@FUNDINGREQUESTID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN |
Definition
Copy
CREATE procedure USP_REVENUE_PULLSOLICITORSFROMFUNDINGREQUEST
(
@REVENUEID uniqueidentifier,
@FUNDINGREQUESTID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@CURRENTDATE datetime
)
as begin
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 @ACTIVEREVENUESPLITSTBL table
(
REVENUESPLITID uniqueidentifier,
AMOUNT money
)
-- Only load solicitors if this revenue record had no funding request association
-- before, or if the funding request changed.
-- Load the default solicitors for each split that has no solicitors and is of a
-- type that's active.
insert into @ACTIVEREVENUESPLITSTBL
(REVENUESPLITID, AMOUNT)
select
REVENUESPLIT.ID,
REVENUESPLIT.AMOUNT
from
dbo.REVENUESPLIT
left join dbo.REVENUEFUNDINGREQUEST on REVENUEFUNDINGREQUEST.ID = REVENUESPLIT.REVENUEID
where
(REVENUEFUNDINGREQUEST.FUNDINGREQUESTID is null or REVENUEFUNDINGREQUEST.FUNDINGREQUESTID <> @FUNDINGREQUESTID)
and
((select COUNT(ID) from dbo.REVENUESOLICITOR where REVENUESPLITID = REVENUESPLIT.ID) = 0)
and
(REVENUESPLIT.REVENUEID = @REVENUEID)
and
(dbo.UFN_SOLICITORCREDITRULES_ACTIVEFORREVENUESPLIT(REVENUESPLIT.ID) = 1)
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