USP_REVENUE_PULLSOLICITORSFROMOPPORTUNITY
Adds solicitors for the splits of a given revenue record based on the given opportunity and the solicitor credit rules.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@OPPORTUNITYID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN |
Definition
Copy
CREATE procedure USP_REVENUE_PULLSOLICITORSFROMOPPORTUNITY
(
@REVENUEID uniqueidentifier,
@OPPORTUNITYID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@CURRENTDATE datetime
)
as begin
set nocount on;
--Multicurrency - AdamBu 3/30/10 - 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 @PROSPECTPLANID uniqueidentifier
declare @ActiveRevenueSplitsTbl table
(
REVENUESPLITID uniqueidentifier,
AMOUNT money
)
select
@PROSPECTPLANID = PROSPECTPLANID
from
dbo.OPPORTUNITY
where
ID = @OPPORTUNITYID
-- Load the default solicitors for each split that:
-- 1. has no solicitors
-- 2. had a null opportunity before, or had an opportunity change.
-- 3. is of a type that's active
insert into @ActiveRevenueSplitsTbl
(REVENUESPLITID, AMOUNT)
select
REVENUESPLIT.ID,
REVENUESPLIT.AMOUNT
from
dbo.REVENUESPLIT
left join dbo.REVENUEOPPORTUNITY on REVENUEOPPORTUNITY.ID = REVENUESPLIT.ID
where
(REVENUEOPPORTUNITY.OPPORTUNITYID is null or REVENUEOPPORTUNITY.OPPORTUNITYID <> @OPPORTUNITYID)
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 - AdamBu 3/30/10 - 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_PROSPECTPLAN_GETFUNDRAISERSANDCREDITS_2(@PROSPECTPLANID, @OPPORTUNITYID) as SOLICITORS
cross join @ActiveRevenueSplitsTbl as ACTIVESPLITS
end