USP_DATAFORMTEMPLATE_PLANNEDGIFTDESIGNATION_EDITSAVE
USP_DATAFORMTEMPLATE_PLANNEDGIFTDESIGNATION_EDITSAVE
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_PLANNEDGIFTDESIGNATION_EDITSAVE (
@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
);
insert into @OLDINACTIVEDESIGNATIONTABLE(DESIGNATIONID)
select DESIGNATIONID
from dbo.UFN_PLANNEDGIFT_DESIGNATION(@ID)
insert into @DESIGNATIONS
select DESIGNATIONID
from dbo.UFN_PLANNEDGIFT_DESIGNATION_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);
update dbo.PLANNEDGIFT set
EXPECTEDGIFTAMOUNT = @GIFTAMOUNT,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @NOW
where
ID = @ID
and EXPECTEDGIFTAMOUNT != @GIFTAMOUNT;
declare @DESIGNATIONSCHANGED bit
set @DESIGNATIONSCHANGED = dbo.UFN_PLANNEDGIFT_DESIGNATIONSCHANGED(@ID, @DESIGNATION);
begin try
exec dbo.USP_PLANNEDGIFT_DESIGNATION_UPDATEFROMXML @ID, @DESIGNATION, @CHANGEAGENTID;
if @DESIGNATIONSCHANGED = 1
begin
exec dbo.USP_PLANNEDGIFT_CLEARANDADDCAMPAIGNS @PLANNEDGIFTID = @ID,
@CHANGEAGENTID = @CHANGEAGENTID,
@CHANGEDATE = @NOW;
end
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;