USP_DATAFORMTEMPLATE_PLANNEDGIFTDESIGNATION_EDITSAVE_2

The save procedure used by the edit dataform template "Planned Gift Designation Edit 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_PLANNEDGIFTDESIGNATION_EDITSAVE_2 (
                        @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_PLANNEDGIFT_DESIGNATION_2_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.PLANNEDGIFT
                        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.PLANNEDGIFT set
                            TRANSACTIONEXPECTEDGIFTAMOUNT = @GIFTAMOUNT,
                            EXPECTEDGIFTAMOUNT = @BASEGIFTAMOUNT,
                            ORGANIZATIONEXPECTEDGIFTAMOUNT = @ORGGIFTAMOUNT,
                            CHANGEDBYID = @CHANGEAGENTID,
                            DATECHANGED = @NOW
                        where
                            ID = @ID
                            and TRANSACTIONEXPECTEDGIFTAMOUNT != @GIFTAMOUNT;

                        declare @DESIGNATIONSCHANGED bit
                        set @DESIGNATIONSCHANGED = dbo.UFN_PLANNEDGIFT_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_PLANNEDGIFT_DESIGNATION_2_UPDATEFROMXML @ID, @DESIGNATION, @CHANGEAGENTID, @NOW;

                            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;