USP_PLANNEDGIFTADDITION_UPDATECURRENCIES
Updated a planned gift addition's currencies and amounts.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PLANNEDGIFTADDITIONID | uniqueidentifier | IN | |
@TRANSACTIONCURRENCYID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CHANGEDATE | datetime | IN |
Definition
Copy
create procedure dbo.USP_PLANNEDGIFTADDITION_UPDATECURRENCIES
(
@PLANNEDGIFTADDITIONID uniqueidentifier,
@TRANSACTIONCURRENCYID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@CHANGEDATE datetime
)
as
begin
declare @DESIGNATION xml;
declare @ASSETS xml;
declare @BASECURRENCYID uniqueidentifier;
declare @EXPECTEDGIFTAMOUNT money;
declare @RECOGNITIONAMOUNT money;
declare @GIFTDATE datetime;
declare @HADSPOTRATE bit;
declare @OLDTRANSACTIONCURRENCYID uniqueidentifier;
select
@BASECURRENCYID = BASECURRENCYID,
@EXPECTEDGIFTAMOUNT = EXPECTEDGIFTAMOUNT,
@RECOGNITIONAMOUNT = RECOGNITIONAMOUNT,
@OLDTRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID,
@HADSPOTRATE =
case
when CURRENCYEXCHANGERATE.TYPECODE = 2
then 1
else 0
end
from dbo.PLANNEDGIFTADDITION
left join dbo.CURRENCYEXCHANGERATE on CURRENCYEXCHANGERATE.ID = PLANNEDGIFTADDITION.BASEEXCHANGERATEID
where PLANNEDGIFTADDITION.ID = @PLANNEDGIFTADDITIONID;
if (@OLDTRANSACTIONCURRENCYID <> @TRANSACTIONCURRENCYID)
begin
set @DESIGNATION = dbo.UFN_PLANNEDGIFTADDITION_GETDESIGNATIONS_TOITEMLISTXML(@PLANNEDGIFTADDITIONID);
set @ASSETS = dbo.UFN_PLANNEDGIFTADDITION_GETASSETS_TOITEMLISTXML(@PLANNEDGIFTADDITIONID);
declare @OLDSPOTRATE uniqueidentifier;
if @HADSPOTRATE = 1
begin
select
@OLDSPOTRATE = BASEEXCHANGERATEID
from dbo.PLANNEDGIFT
where ID = @PLANNEDGIFTADDITIONID
end
-- Convert amount fields from transaction to base.
declare @BASEEXPECTEDGIFTAMOUNT money;
declare @BASERECOGNITIONAMOUNT money;
declare @BASEEXCHANGERATEID uniqueidentifier;
set @BASEEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATEST(@TRANSACTIONCURRENCYID, @BASECURRENCYID, @GIFTDATE,1 , null)
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 modified the previous code by RobertDi 5/5/10 to 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
update dbo.PLANNEDGIFTADDITION set
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE,
TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID,
BASEEXCHANGERATEID = @BASEEXCHANGERATEID,
ORGANIZATIONEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID,
TRANSACTIONEXPECTEDGIFTAMOUNT = @EXPECTEDGIFTAMOUNT,
TRANSACTIONRECOGNITIONAMOUNT = @RECOGNITIONAMOUNT,
ORGANIZATIONEXPECTEDGIFTAMOUNT = @ORGANIZATIONEXPECTEDGIFTAMOUNT,
ORGANIZATIONRECOGNITIONAMOUNT = @ORGANIZATIONRECOGNITIONAMOUNT
where
ID = @PLANNEDGIFTADDITIONID;
--Multicurrency - RobertDi 5/5/10 - Process the designations xml to calculate the base and organization amounts and place them in proper nodes.
set @DESIGNATION = dbo.UFN_PLANNEDGIFTDESIGNATION_CONVERTAMOUNTSINXML(@DESIGNATION,@BASECURRENCYID,@ORGANIZATIONEXCHANGERATEID,@TRANSACTIONCURRENCYID,@BASEEXCHANGERATEID)
exec dbo.USP_PLANNEDGIFTADDITION_GETDESIGNATIONS_UPDATEFROMXML @PLANNEDGIFTADDITIONID, @DESIGNATION, @CHANGEAGENTID, @CHANGEDATE;
--Multicurrency - RobertDi 5/5/10 - 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_UPDATEFROMXML @PLANNEDGIFTADDITIONID, @ASSETS, @CHANGEAGENTID, @CHANGEDATE;
delete from dbo.CURRENCYEXCHANGERATE where ID = @OLDSPOTRATE
end
end