USP_ADDPLANNEDGIFTADDITIONREVENUE
This stored procedure handles creating revenue from a planned gift addition.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@AMOUNT | money | IN | |
@DATE | datetime | IN | |
@RECEIPTAMOUNT | money | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@ANONYMOUS | bit | IN | |
@NEWREVENUEID | uniqueidentifier | IN | |
@GENERATEGLDISTRIBUTIONS | bit | IN | |
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@BASEEXCHANGERATEID | uniqueidentifier | IN | |
@DONOTRECEIPT | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_ADDPLANNEDGIFTADDITIONREVENUE
(
@ID uniqueidentifier,
@AMOUNT money,
@DATE datetime,
@RECEIPTAMOUNT money,
@CHANGEAGENTID uniqueidentifier,
@ANONYMOUS bit,
@NEWREVENUEID uniqueidentifier = null,
@GENERATEGLDISTRIBUTIONS bit,
@PDACCOUNTSYSTEMID uniqueidentifier = null,
@TRANSACTIONCURRENCYID uniqueidentifier = null,
@BASECURRENCYID uniqueidentifier = null,
@BASEEXCHANGERATEID uniqueidentifier = null,
@DONOTRECEIPT bit = null
)
as begin
set nocount on;
begin try
if exists(select top 1 ID from dbo.PLANNEDGIFTADDITIONREVENUE where ID = @ID)
raiserror('A planned gift addition can only be linked to one revenue record.', 13, 1);
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @PDACCOUNTSYSTEMID is null
set @PDACCOUNTSYSTEMID = '4B121C2C-CCE6-440D-894C-EA0DEF80D50B';
if @DONOTRECEIPT is null
set @DONOTRECEIPT = 1
declare @CURRENTDATE datetime = getdate();
declare @CONSTITUENTID uniqueidentifier;
declare @GIFTAMOUNT money;
declare @RECOGNITIONAMOUNT money;
select
@CONSTITUENTID = PLANNEDGIFT.CONSTITUENTID,
@GIFTAMOUNT = PLANNEDGIFTADDITION.TRANSACTIONGIFTAMOUNT,
@RECOGNITIONAMOUNT = PLANNEDGIFTADDITION.RECOGNITIONAMOUNT
from
dbo.PLANNEDGIFTADDITION
inner join
dbo.PLANNEDGIFT on PLANNEDGIFT.ID = PLANNEDGIFTADDITION.PLANNEDGIFTID
where
PLANNEDGIFTADDITION.ID = @ID;
--Get current designations
declare @SPLITS xml = dbo.UFN_PLANNEDGIFTADDITION_GETDESIGNATIONS_TOITEMLISTXML(@ID);
--Combine duplicate designations and prorate the splits
set @SPLITS = (
select sum(TRANSACTIONAMOUNT) as AMOUNT, DESIGNATIONID as ID
from dbo.UFN_PLANNEDGIFTADDITION_GETDESIGNATIONS_FROMITEMLISTXML(@SPLITS)
group by DESIGNATIONID
for xml raw('ITEM'),type,elements,root('AMOUNTSTOPRORATE'),binary base64)
declare @DECIMALDIGITS tinyint = 2;
select @DECIMALDIGITS = DECIMALDIGITS from dbo.CURRENCY where ID = @TRANSACTIONCURRENCYID;
set @SPLITS = (
select AMOUNT, ID as DESIGNATIONID
from dbo.UFN_SPLITS_PRORATEAMOUNTS(@GIFTAMOUNT, @AMOUNT, @DECIMALDIGITS, @SPLITS)
for xml raw('ITEM'),type,elements,root('DESIGNATION'),binary base64)
exec dbo.USP_PLANNEDGIFTADDITION_VALIDATESPLITS @SPLITS, @AMOUNT;
declare @REVENUEID uniqueidentifier = coalesce(@NEWREVENUEID, newid());
--Multicurrency - AdamBu 5/19/10 - Retrieve and calculate the necessary multicurrency values.
declare @BASEAMOUNT money;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
declare @ORGANIZATIONAMOUNT money;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
exec dbo.USP_CURRENCY_GETCURRENCYVALUES @AMOUNT, @DATE, @BASECURRENCYID, @BASEEXCHANGERATEID output, @TRANSACTIONCURRENCYID output, @BASEAMOUNT output, @ORGANIZATIONCURRENCYID output, @ORGANIZATIONAMOUNT output, @ORGANIZATIONEXCHANGERATEID output, 1;
-- Determine Receipt Type Preference
declare @RECEIPTTYPECODE bit;
set @RECEIPTTYPECODE = dbo.UFN_CONSTITUENT_GETRECEIPTPREFERENCE(@CONSTITUENTID, null)
if @GENERATEGLDISTRIBUTIONS = 1
begin
insert into dbo.FINANCIALTRANSACTION
(
ID,
CONSTITUENTID,
DATE,
POSTSTATUSCODE,
POSTDATE,
BASEAMOUNT,
TYPECODE,
PDACCOUNTSYSTEMID,
ORGAMOUNT,
ORGEXCHANGERATEID,
TRANSACTIONAMOUNT,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@REVENUEID,
@CONSTITUENTID,
@DATE,
1,
@DATE,
@BASEAMOUNT,
4, --planned gift
@PDACCOUNTSYSTEMID,
@ORGANIZATIONAMOUNT,
@ORGANIZATIONEXCHANGERATEID,
@AMOUNT,
@TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
);
insert into dbo.REVENUE_EXT
(
ID,
DONOTRECEIPT,
RECEIPTAMOUNT,
GIVENANONYMOUSLY,
RECEIPTTYPECODE,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@REVENUEID,
@DONOTRECEIPT,
@RECEIPTAMOUNT,
@ANONYMOUS,
@RECEIPTTYPECODE,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
);
end
else
begin
insert into dbo.FINANCIALTRANSACTION
(
ID,
CONSTITUENTID,
DATE,
POSTSTATUSCODE,
POSTDATE,
BASEAMOUNT,
TYPECODE,
PDACCOUNTSYSTEMID,
ORGAMOUNT,
ORGEXCHANGERATEID,
TRANSACTIONAMOUNT,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@REVENUEID,
@CONSTITUENTID,
@DATE,
3,
null,
@BASEAMOUNT,
4, -- planned gift
@PDACCOUNTSYSTEMID,
@ORGANIZATIONAMOUNT,
@ORGANIZATIONEXCHANGERATEID,
@AMOUNT,
@TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
);
insert into dbo.REVENUE_EXT
(
ID,
DONOTRECEIPT,
RECEIPTAMOUNT,
GIVENANONYMOUSLY,
RECEIPTTYPECODE,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@REVENUEID,
@DONOTRECEIPT,
@RECEIPTAMOUNT,
@ANONYMOUS,
@RECEIPTTYPECODE,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
);
end
insert into dbo.REVENUEPAYMENTMETHOD
(
ID,
REVENUEID,
PAYMENTMETHODCODE,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
newid(),
@REVENUEID,
9,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
);
insert into dbo.PLANNEDGIFTADDITIONREVENUE
(
ID,
REVENUEID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@ID,
@REVENUEID,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
);
insert into dbo.REVENUESCHEDULE
(
ID,
STARTDATE,
FREQUENCYCODE,
NUMBEROFINSTALLMENTS,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
@REVENUEID,
@DATE,
5,
1,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
);
insert into dbo.INSTALLMENT
(
ID,
REVENUEID,
AMOUNT,
DATE,
SEQUENCE,
BASECURRENCYID,
ORGANIZATIONAMOUNT,
ORGANIZATIONEXCHANGERATEID,
TRANSACTIONAMOUNT,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
values
(
newid(),
@REVENUEID,
@BASEAMOUNT,
@DATE,
1,
@BASECURRENCYID,
@ORGANIZATIONAMOUNT,
@ORGANIZATIONEXCHANGERATEID,
@AMOUNT,
@TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
);
--Multicurrency - AdamBu 5/19/10 - Process the splits xml to calculate the base and organization amounts and place them in proper nodes.
set @SPLITS = dbo.UFN_PLANNEDGIFTDESIGNATION_CONVERTAMOUNTSINXML(@SPLITS, @BASECURRENCYID, @ORGANIZATIONEXCHANGERATEID, @TRANSACTIONCURRENCYID, @BASEEXCHANGERATEID);
exec dbo.USP_PLANNEDGIFTADDITION_GETSPLITS_ADDFROMXML @REVENUEID, @SPLITS, @CHANGEAGENTID, @CURRENTDATE;
-- create recognitions
exec dbo.USP_REVENUE_CREATERECOGNITIONS_WITHAMOUNT @REVENUEID, @RECOGNITIONAMOUNT, @CHANGEAGENTID, @CURRENTDATE;
exec dbo.USP_PLEDGE_GENERATEINSTALLMENTSPLITS @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
if dbo.UFN_PLEDGE_INSTALLMENTSPLITSBALANCE(@ID) = 0
raiserror('INSTALLMENTSPLITSBALANCE', 13, 2);
-- Link revenue to Account System
exec dbo.USP_PDACCOUNTSYSTEM_LINKTOREVENUE @REVENUEID, @PDACCOUNTSYSTEMID, @CURRENTDATE, @CHANGEAGENTID;
--Save the GL distributions
if @GENERATEGLDISTRIBUTIONS = 1
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
-- Copy campaigns from planned gift
insert into dbo.REVENUESPLITCAMPAIGN
(
REVENUESPLITID,
CAMPAIGNID,
CAMPAIGNSUBPRIORITYID,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
)
select distinct
REVENUESPLIT.ID,
PLANNEDGIFTADDITIONDESIGNATIONCAMPAIGN.CAMPAIGNID,
PLANNEDGIFTADDITIONDESIGNATIONCAMPAIGN.CAMPAIGNSUBPRIORITYID,
@CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE
from
dbo.PLANNEDGIFTADDITIONDESIGNATION
inner join
dbo.PLANNEDGIFTADDITIONDESIGNATIONCAMPAIGN on PLANNEDGIFTADDITIONDESIGNATIONCAMPAIGN.PLANNEDGIFTADDITIONDESIGNATIONID = PLANNEDGIFTADDITIONDESIGNATION.ID
inner join
dbo.REVENUESPLIT on REVENUESPLIT.REVENUEID = @REVENUEID and REVENUESPLIT.DESIGNATIONID = PLANNEDGIFTADDITIONDESIGNATION.DESIGNATIONID
where
PLANNEDGIFTADDITIONDESIGNATION.PLANNEDGIFTADDITIONID = @ID;
exec dbo.USP_PLANNEDGIFTREVENUE_DEFAULTSOLICITORS @ID, @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end