USP_DATAFORMTEMPLATE_EDIT_PLANNEDGIFTADDITIONDESIGNATION
The save procedure used by the edit dataform template "Planned Gift Addition Designation Edit Data Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@GIFTAMOUNT | money | IN | Gift amount |
@DESIGNATION | xml | IN | Designation |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PLANNEDGIFTADDITIONDESIGNATION (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@GIFTAMOUNT money,
@DESIGNATION xml
) as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @NOW datetime;
set @NOW = getdate();
declare @OLDINACTIVEDESIGNATIONTABLE table (
DESIGNATIONID uniqueidentifier
);
declare @DESIGNATIONS table (
DESIGNATIONID uniqueidentifier,
AMOUNT money
);
insert into @OLDINACTIVEDESIGNATIONTABLE(DESIGNATIONID)
select DESIGNATIONID
from dbo.UFN_PLANNEDGIFT_DESIGNATION_2(@ID)
insert into @DESIGNATIONS
select DESIGNATIONID, AMOUNT
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
and [DES].DESIGNATIONID not in (
select DESIGNATIONID from @OLDINACTIVEDESIGNATIONTABLE)) > 0
raiserror('Revenue cannot be added to inactive designations.', 13, 1);
if (select sum(AMOUNT) from @DESIGNATIONS) <> @GIFTAMOUNT
raiserror('DESIGNATIONSDONOTBALANCE', 13, 1);
--Multicurrency - RobertDi 5/13/10 - Retrieve and calculate the necessary multicurrency values.
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @BASECURRENCYID uniqueidentifier;
declare @BASEEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONCURRENCYID uniqueidentifier;
select
@TRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID,
@BASECURRENCYID = BASECURRENCYID,
@BASEEXCHANGERATEID = BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID = ORGANIZATIONEXCHANGERATEID
from
dbo.PLANNEDGIFTADDITION
where
ID = @ID;
declare @BASEGIFTAMOUNT money;
declare @ORGGIFTAMOUNT money;
--SlyyMu 8/16/10. Retrieve the BASE and ORG gift amounts.
exec dbo.USP_CURRENCY_GETCURRENCYVALUES
@GIFTAMOUNT,
null,
@BASECURRENCYID,
@BASEEXCHANGERATEID,
@TRANSACTIONCURRENCYID,
@BASEGIFTAMOUNT output,
null,
@ORGGIFTAMOUNT output,
@ORGANIZATIONEXCHANGERATEID,
0,
null;
update dbo.PLANNEDGIFTADDITION set
TRANSACTIONEXPECTEDGIFTAMOUNT = @GIFTAMOUNT,
EXPECTEDGIFTAMOUNT = @BASEGIFTAMOUNT,
ORGANIZATIONEXPECTEDGIFTAMOUNT = @ORGGIFTAMOUNT,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @NOW
where
ID = @ID
and TRANSACTIONEXPECTEDGIFTAMOUNT != @GIFTAMOUNT;
declare @DESIGNATIONSCHANGED bit
set @DESIGNATIONSCHANGED = dbo.UFN_PLANNEDGIFTADDITION_DESIGNATIONSCHANGED(@ID, @DESIGNATION);
begin try
--Multicurrency - RobertDi 5/13/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 @ID, @DESIGNATION, @CHANGEAGENTID, @NOW;
if @DESIGNATIONSCHANGED = 1
begin
exec dbo.USP_PLANNEDGIFTADDITION_CLEARANDADDCAMPAIGNS @PLANNEDGIFTADDITIONID = @ID,
@CHANGEAGENTID = @CHANGEAGENTID,
@CHANGEDATE = @NOW;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;