USP_DATAFORMTEMPLATE_EDIT_REVENUEGLDISTRIBUTION

The save procedure used by the edit dataform template "Revenue 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_REVENUEGLDISTRIBUTION
                    (
                        @ID uniqueidentifier,
                        @GLDISTRIBUTION xml,
                        @CHANGEAGENTID uniqueidentifier = null
                    )
                as
                    begin try
                        set nocount on;

                        --validate post status

                        if exists (select 1 from dbo.FINANCIALTRANSACTION FT where FT.ID = @ID and FT.POSTSTATUSCODE = 2)
                            raiserror('You cannot edit a posted gift', 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_REVENUE_GETGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION)) = 0
                          raiserror('At least one GL distribution is required.', 13, 1)

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

                        declare @POSTDATE datetime;
                        declare @TRANSACTIONCURRENCYID uniqueidentifier;
                        declare @BASECURRENCYID uniqueidentifier;
                        declare @BASEEXCHANGERATEID uniqueidentifier;
                        declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
                        declare @DEPOSITBASEEXCHANGERATEID uniqueidentifier;
                        declare @DEPOSITORGANIZATIONEXCHANGERATEID uniqueidentifier;

                        select
                            @POSTDATE = FINANCIALTRANSACTION.POSTDATE,
                            @TRANSACTIONCURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
                            --BASECURRENCYID value calculation taken from REVENUE view

                            @BASECURRENCYID = case when FINANCIALTRANSACTION.DELETEDON is null then isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID) else null end,
                            @BASEEXCHANGERATEID = FINANCIALTRANSACTION.BASEEXCHANGERATEID,
                            @ORGANIZATIONEXCHANGERATEID = FINANCIALTRANSACTION.ORGEXCHANGERATEID,
                            @DEPOSITBASEEXCHANGERATEID = case when isnull(BA.TRANSACTIONCURRENCYID, newid()) = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID then T.BASEEXCHANGERATEID else FINANCIALTRANSACTION.BASEEXCHANGERATEID end,
                            @DEPOSITORGANIZATIONEXCHANGERATEID = case when isnull(BA.TRANSACTIONCURRENCYID, newid()) = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID then T.ORGANIZATIONEXCHANGERATEID else FINANCIALTRANSACTION.ORGEXCHANGERATEID end
                        from dbo.FINANCIALTRANSACTION
                        inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
                        left outer join dbo.BANKACCOUNTDEPOSITPAYMENT DP on DP.ID = FINANCIALTRANSACTION.ID
                        left outer join dbo.BANKACCOUNTTRANSACTION T on T.ID = DP.DEPOSITID
                        left outer join dbo.BANKACCOUNT BA on BA.ID = T.BANKACCOUNTID
                        left outer join  dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on FINANCIALTRANSACTION.ID = V.FINANCIALTRANSACTIONID
                        where FINANCIALTRANSACTION.ID = @ID;

                        --Set the currency values in the GLDISTRIBUTION collection.

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

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

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

                    return 0;