USP_DATAFORMTEMPLATE_ADD_PLANNEDGIFTADDITION
The save procedure used by the add dataform template "Planned Gift Addition Add Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | INOUT | The output parameter indicating the ID of the record added. |
@PLANNEDGIFTID | uniqueidentifier | IN | Input parameter indicating the context ID for the record being added. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@EXPECTEDGIFTAMOUNT | money | IN | Gift amount |
@RECOGNITIONAMOUNT | money | IN | Recognition amount |
@GIFTDATE | datetime | IN | Date |
@DESIGNATION | xml | IN | Planned gift addition details |
@ASSETS | xml | IN | Assets |
@BASEEXCHANGERATEID | uniqueidentifier | IN | Exchange rate ID |
@EXCHANGERATE | decimal(20, 8) | IN | Exchange rate |
@DONOTRECEIPT | bit | IN | Do not receipt |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_PLANNEDGIFTADDITION
(
@ID uniqueidentifier = null output,
@PLANNEDGIFTID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@EXPECTEDGIFTAMOUNT money = 0,
@RECOGNITIONAMOUNT money = 0,
@GIFTDATE datetime = null,
@DESIGNATION xml = null,
@ASSETS xml = null,
@BASEEXCHANGERATEID uniqueidentifier = null,
@EXCHANGERATE decimal(20,8) = null,
@DONOTRECEIPT bit = 1
)
as
set nocount on;
if @ID is null
set @ID = newid()
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CHANGEDATE datetime
set @CHANGEDATE = getdate()
begin try
----------------------------------------------------------------------------------------
--MULTICURRENCY--
----------------------------------------------------------------------------------------
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @BASECURRENCYID uniqueidentifier;
select
@TRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID,
@BASECURRENCYID = BASECURRENCYID
from
dbo.PLANNEDGIFT
where
ID = @PLANNEDGIFTID;
--Multicurrency - RobertDi 5/3/10 - Add a spot exchange rate if an existing rate hasn't
--been selected, the base and transaction currencies are different, and the rate
--entered isn't zero (which indicates that the user wants to enter the record without a rate).
if @BASEEXCHANGERATEID = '00000000-0000-0000-0000-000000000001'
begin
set @BASEEXCHANGERATEID = newid()
insert into dbo.CURRENCYEXCHANGERATE(
ID,
FROMCURRENCYID,
TOCURRENCYID,
RATE,
ASOFDATE,
TYPECODE,
SOURCECODEID,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED
)
values(
@BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID,
@BASECURRENCYID,
@EXCHANGERATE,
coalesce(@GIFTDATE, @CHANGEDATE),
2,
null,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE
);
end
-- Convert amount fields from transaction to base.
declare @BASEEXPECTEDGIFTAMOUNT money;
declare @BASERECOGNITIONAMOUNT money;
if @TRANSACTIONCURRENCYID = @BASECURRENCYID
begin
set @BASEEXPECTEDGIFTAMOUNT = @EXPECTEDGIFTAMOUNT;
set @BASERECOGNITIONAMOUNT = @RECOGNITIONAMOUNT;
end
else
begin
set @BASEEXPECTEDGIFTAMOUNT = dbo.UFN_CURRENCY_CONVERT(@EXPECTEDGIFTAMOUNT, @BASEEXCHANGERATEID);
set @BASERECOGNITIONAMOUNT = dbo.UFN_CURRENCY_CONVERT(@RECOGNITIONAMOUNT, @BASEEXCHANGERATEID);
end
-- Convert amount fields from base to organization.
declare @ORGANIZATIONEXPECTEDGIFTAMOUNT money;
declare @ORGANIZATIONRECOGNITIONAMOUNT money;
declare @ORGANIZATIONCURRENCYID uniqueidentifier = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier
if @BASECURRENCYID = @ORGANIZATIONCURRENCYID
begin
set @ORGANIZATIONEXCHANGERATEID = null;
set @ORGANIZATIONEXPECTEDGIFTAMOUNT = @BASEEXPECTEDGIFTAMOUNT;
set @ORGANIZATIONRECOGNITIONAMOUNT = @BASERECOGNITIONAMOUNT;
end
else
begin
--SlyyMu 8/12/10 Use the new UFN_CURRENCYEXCHANGERATE_GETLATESTORGANIZATIONRATE and UFN_CURRENCY_CONVERTTOORGANIZATIONCURRENCY function to get the correct rate and values
set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTORGANIZATIONRATE(@BASECURRENCYID, @ORGANIZATIONCURRENCYID, @GIFTDATE, null, @TRANSACTIONCURRENCYID);
set @ORGANIZATIONEXPECTEDGIFTAMOUNT = dbo.UFN_CURRENCY_CONVERTTOORGANIZATIONCURRENCY(@BASEEXPECTEDGIFTAMOUNT, @ORGANIZATIONEXCHANGERATEID, @EXPECTEDGIFTAMOUNT);
set @ORGANIZATIONRECOGNITIONAMOUNT = dbo.UFN_CURRENCY_CONVERTTOORGANIZATIONCURRENCY(@BASERECOGNITIONAMOUNT, @ORGANIZATIONEXCHANGERATEID, @RECOGNITIONAMOUNT);
end
----------------------------------------------------------------------------------------
--END MULTICURRENCY--
----------------------------------------------------------------------------------------
declare @DESIGNATIONS table ([DESIGNATIONID] uniqueidentifier);
insert into @DESIGNATIONS
select DESIGNATIONID
from dbo.UFN_PLANNEDGIFTADDITION_GETDESIGNATIONS_FROMITEMLISTXML(@DESIGNATION);
if (select count(*)
from @DESIGNATIONS [DES]
inner join dbo.DESIGNATION on [DES].DESIGNATIONID = DESIGNATION.ID
where DESIGNATION.ISACTIVE = 0) > 0
raiserror('Revenue cannot be added to inactive designations.', 13, 2);
insert into dbo.PLANNEDGIFTADDITION(
ID,
PLANNEDGIFTID,
EXPECTEDGIFTAMOUNT,
RECOGNITIONAMOUNT,
GIFTDATE,
BASECURRENCYID,
TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID,
ORGANIZATIONEXCHANGERATEID,
TRANSACTIONEXPECTEDGIFTAMOUNT,
TRANSACTIONRECOGNITIONAMOUNT,
ORGANIZATIONEXPECTEDGIFTAMOUNT,
ORGANIZATIONRECOGNITIONAMOUNT,
ADDEDBYID,
CHANGEDBYID,
DATEADDED,
DATECHANGED,
DONOTRECEIPT
)values(
@ID,
@PLANNEDGIFTID,
@BASEEXPECTEDGIFTAMOUNT,
@BASERECOGNITIONAMOUNT,
@GIFTDATE,
@BASECURRENCYID,
@TRANSACTIONCURRENCYID,
@BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID,
@EXPECTEDGIFTAMOUNT,
@RECOGNITIONAMOUNT,
@ORGANIZATIONEXPECTEDGIFTAMOUNT,
@ORGANIZATIONRECOGNITIONAMOUNT,
@CHANGEAGENTID,
@CHANGEAGENTID,
@CHANGEDATE,
@CHANGEDATE,
@DONOTRECEIPT
)
--Multicurrency - Process the designations xml to calculate the base and organization amounts and place them in proper nodes.
--This function is generic enough to use with planned gift additions.
set @DESIGNATION = dbo.UFN_PLANNEDGIFTDESIGNATION_CONVERTAMOUNTSINXML(@DESIGNATION,@BASECURRENCYID,@ORGANIZATIONEXCHANGERATEID,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID)
exec dbo.USP_PLANNEDGIFTADDITION_GETDESIGNATIONS_ADDFROMXML @ID, @DESIGNATION, @CHANGEAGENTID, @CHANGEDATE;
--Multicurrency - Process the assets xml to calculate the base and organization amounts and place them in proper nodes.
set @ASSETS = dbo.UFN_PLANNEDGIFTASSET_CONVERTAMOUNTSINXML(@ASSETS,@BASECURRENCYID,@ORGANIZATIONEXCHANGERATEID,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID)
exec dbo.USP_PLANNEDGIFTADDITION_GETASSETS_ADDFROMXML @ID, @ASSETS, @CHANGEAGENTID, @CHANGEDATE;
exec dbo.USP_PLANNEDGIFTADDITION_CLEARANDADDCAMPAIGNS @PLANNEDGIFTADDITIONID = @ID, @CHANGEAGENTID = @CHANGEAGENTID, @CHANGEDATE = @CHANGEDATE
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0