USP_DATAFORMTEMPLATE_EDIT_PLANNEDGIFTPAYOUTGLDISTRIBUTION

The save procedure used by the edit dataform template "Planned Gift Payout GL Distribution Edit Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@GLDISTRIBUTION xml IN Revenue GL distribution
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.

Definition

Copy


                CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PLANNEDGIFTPAYOUTGLDISTRIBUTION                    (
                        @ID uniqueidentifier,
                        @GLDISTRIBUTION xml,
                        @CHANGEAGENTID uniqueidentifier = null
                    )
                as
                    begin try
                        set nocount on;

                        --validate post status

                        if (select count(REVENUE.ID) from dbo.REVENUE
                            inner join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
                            where REVENUE.ID = @ID and REVENUEPOSTED.ID is not null) > 0
                            raiserror('You cannot edit a posted planned gift', 13, 1)



                        if (dbo.UFN_GLDISTRIBUTION_DEBITSEQUALCREDITS(@GLDISTRIBUTION) = 0)
                            raiserror('The sum of the debit accounts must equal the sum of the credit accounts.', 13, 1)                        

                        --if (dbo.UFN_GLDISTRIBUTION_ACCOUNTEXISTS(@GLDISTRIBUTION) = 0)

                        --    raiserror('One or more of the edited accounts do not exist.', 13, 1)


                        if (dbo.UFN_GLDISTRIBUTION_ACCOUNTEXISTS_2(@GLDISTRIBUTION,@ID) = 0)
                            raiserror('One or more of the edited accounts do not exist.', 13, 1)                            

                        if (select count(*) from UFN_PLANNEDGIFTPAYOUT_GETGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION)) = 0
                          raiserror('At least one GL distribution is required.', 13, 1)

                        declare @AMOUNT money;
                        select @AMOUNT = isnull(SUM(AMOUNT), 0) from UFN_PLANNEDGIFTPAYOUT_GETGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION) where TRANSACTIONTYPECODE = 0;;

                        declare @VEHICLECODE smallint;
                        select  @VEHICLECODE = VEHICLECODE from PLANNEDGIFT join PLANNEDGIFTPAYOUT on PLANNEDGIFT.ID = PLANNEDGIFTPAYOUT.ID where PLANNEDGIFTPAYOUT.REVENUEID = @ID;

                        If @VEHICLECODE = 6 
                            begin
                            if @AMOUNT <> (select TRANSACTIONLIFEINSURANCEPREMIUM  from dbo.PLANNEDGIFT as a join PLANNEDGIFTPAYOUT as b on a.ID = b.ID where REVENUEID = @ID)
                              raiserror('The distribution amount must equal the transaction amount.', 13, 1);
                            end
                        else
                            begin
                            if @AMOUNT <> (select TRANSACTIONPAYOUTAMOUNT  from dbo.PLANNEDGIFT as a join PLANNEDGIFTPAYOUT as b on a.ID = b.ID where REVENUEID = @ID)
                              raiserror('The distribution amount must equal the transaction amount.', 13, 1);
                            end                


                        if @CHANGEAGENTID is null  
                            exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                        declare @POSTDATE datetime;
                        select @POSTDATE = POSTDATE from dbo.REVENUE where ID = @ID;


                        declare @TRANSACTIONCURRENCYID uniqueidentifier;
                        declare @BASECURRENCYID uniqueidentifier;
                        declare @BASEEXCHANGERATEID uniqueidentifier;
                        declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;

                        select 
                            @TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID,
                            @BASECURRENCYID = REVENUE.BASECURRENCYID,
                            @BASEEXCHANGERATEID = REVENUE.BASEEXCHANGERATEID,
                            @ORGANIZATIONEXCHANGERATEID = REVENUE.ORGANIZATIONEXCHANGERATEID
                        from
                            dbo.REVENUE
                        where
                            REVENUE.ID = @ID;

                        --Set the currency values in the GLDISTRIBUTION collection.

                        select @GLDISTRIBUTION = dbo.UFN_GLDISTRIBUTION_CONVERTAMOUNTSINXML
                        (
                            @GLDISTRIBUTION,
                            @BASECURRENCYID,
                            @ORGANIZATIONEXCHANGERATEID,
                            @TRANSACTIONCURRENCYID,
                            @BASEEXCHANGERATEID
                            @ORGANIZATIONEXCHANGERATEID
                            @BASEEXCHANGERATEID
                        )

                        exec dbo.USP_PLANNEDGIFTPAYOUT_GETGLDISTRIBUTION_CUSTOMUPDATEFROMXML_2 @ID, @GLDISTRIBUTION, @POSTDATE, @CHANGEAGENTID;
                    end try

                    begin catch
                        exec dbo.USP_RAISE_ERROR;
                        return 1;
                    end catch

                    return 0;