USP_ADDPLANNEDGIFTPAYOUT
This stored procedure handles adding a planned gift payout.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@AMOUNT | money | IN | |
@DATE | datetime | IN | |
@RECEIPTAMOUNT | money | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@ANONYMOUS | bit | IN | |
@REVENUEID | uniqueidentifier | IN | |
@GENERATEGLDISTRIBUTIONS | bit | IN | |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
@BASECURRENCYID | uniqueidentifier | IN | |
@BASEEXCHANGERATEID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_ADDPLANNEDGIFTPAYOUT(
@ID uniqueidentifier,
@AMOUNT money,
@DATE datetime,
@RECEIPTAMOUNT money,
@CHANGEAGENTID uniqueidentifier,
@ANONYMOUS bit,
@REVENUEID uniqueidentifier,
@GENERATEGLDISTRIBUTIONS bit,
@TRANSACTIONCURRENCYID uniqueidentifier = null,
@BASECURRENCYID uniqueidentifier = null,
@BASEEXCHANGERATEID uniqueidentifier = null
)
as begin
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @CURRENTDATE datetime;
set @CURRENTDATE = getdate();
declare @CONSTITUENTID uniqueidentifier;
declare @PLANNEDGIFTAMOUNT money;
select
@CONSTITUENTID = CONSTITUENTID,
@PLANNEDGIFTAMOUNT = TRANSACTIONGIFTAMOUNT
from dbo.PLANNEDGIFT
where ID = @ID;
--Get current designations
declare @SPLITS xml = dbo.UFN_PLANNEDGIFT_DESIGNATION_2_TOITEMLISTXML(@ID);
--Splits with the same designation need to be combined
set @SPLITS = (
select
sum(TRANSACTIONAMOUNT) as AMOUNT,
DESIGNATIONID,
TRANSACTIONCURRENCYID
from dbo.UFN_PLANNEDGIFT_DESIGNATION_2_FROMITEMLISTXML(@SPLITS)
group by DESIGNATIONID, TRANSACTIONCURRENCYID
for xml raw('ITEM'),type,elements,root('DESIGNATION'),binary base64
)
--Need to prorate splits if using amount other than gift amount
set @SPLITS = dbo.UFN_PLANNEDGIFTGETSPLITS_XML(@PLANNEDGIFTAMOUNT, @AMOUNT, @SPLITS);
declare @COUNT int;
begin try
exec dbo.USP_PLANNEDGIFT_VALIDATESPLITS @SPLITS, @AMOUNT;
select
@COUNT = count(ID)
from dbo.PLANNEDGIFTPAYOUT PGP
where PGP.ID = @ID;
if @COUNT > 0
raiserror('A planned gift can only be linked to one payout record.', 13, 1);
declare @PAYMENTMETHODID uniqueidentifier;
set @PAYMENTMETHODID = newid();
insert into dbo.PLANNEDGIFTPAYOUT (ID, REVENUEID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
values (@ID, @REVENUEID, @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.
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier
select
@ORGANIZATIONEXCHANGERATEID = ORGANIZATIONEXCHANGERATEID
from REVENUE
where ID = @REVENUEID;
set @SPLITS = dbo.UFN_PLANNEDGIFTDESIGNATION_CONVERTAMOUNTSINXML(@SPLITS,@BASECURRENCYID,@ORGANIZATIONEXCHANGERATEID,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID)
exec dbo.USP_PLANNEDGIFT_GETPAYOUTSPLITS_ADDFROMXML_2 @REVENUEID, @SPLITS, @CHANGEAGENTID, @CURRENTDATE;
--Save the payout GL distributions
if @GENERATEGLDISTRIBUTIONS = 1
exec dbo.USP_SAVE_PLANNEDGIFTPAYOUTGLDISTRIBUTION @REVENUEID,@ID, @CHANGEAGENTID, @CURRENTDATE;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;
end