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;