USP_DATAFORMTEMPLATE_EDIT_MISCELLANEOUSPAYMENT2

The save procedure used by the edit dataform template "Miscellaneous Payment Edit Data Form".

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter indicating the ID of the record being edited.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@PAYMENTDATE datetime IN Payment date
@PAYMENTMETHODCODE tinyint IN Payment method
@OTHERPAYMENTMETHODCODEID uniqueidentifier IN Other method
@CHECKDATE UDT_FUZZYDATE IN Check date
@CHECKNUMBER nvarchar(20) IN Check number
@REFERENCEDATE UDT_FUZZYDATE IN Reference date
@REFERENCENUMBER nvarchar(20) IN Reference number
@CARDHOLDERNAME nvarchar(255) IN Name on card
@CREDITCARDNUMBER nvarchar(4) IN Card number
@CREDITTYPECODEID uniqueidentifier IN Card type
@AUTHORIZATIONCODE nvarchar(20) IN Authorization code
@EXPIRESON UDT_FUZZYDATE IN Expires on
@AMOUNT money IN Amount
@POSTDATE datetime IN Post date
@POSTSTATUSCODE tinyint IN Post status
@DEPOSITID uniqueidentifier IN Deposit
@PAYMENTSOURCE nvarchar(100) IN Reference
@BASEEXCHANGERATEID uniqueidentifier IN Exchange rate ID
@EXCHANGERATE decimal(20, 8) IN Exchange rate

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_MISCELLANEOUSPAYMENT2(
                        @ID uniqueidentifier,
                        @CURRENTAPPUSERID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier,
                        @PAYMENTDATE datetime,
                        @PAYMENTMETHODCODE tinyint,
                        @OTHERPAYMENTMETHODCODEID uniqueidentifier,
                        @CHECKDATE dbo.UDT_FUZZYDATE,
                        @CHECKNUMBER nvarchar(20),
                        @REFERENCEDATE dbo.UDT_FUZZYDATE,
                        @REFERENCENUMBER nvarchar(20),
                        @CARDHOLDERNAME nvarchar(255),
                        @CREDITCARDNUMBER nvarchar(4),
                        @CREDITTYPECODEID uniqueidentifier,
                        @AUTHORIZATIONCODE nvarchar(20),
                        @EXPIRESON dbo.UDT_FUZZYDATE,
                        @AMOUNT money,
                        @POSTDATE datetime,
                        @POSTSTATUSCODE tinyint,
                        @DEPOSITID uniqueidentifier,
                        @PAYMENTSOURCE nvarchar(100),
                        @BASEEXCHANGERATEID uniqueidentifier,
                        @EXCHANGERATE decimal(20,8)
                    )
                    as

                    set nocount on;

                    if @POSTSTATUSCODE = 1
                    begin
                        if not exists(select ID from GLFISCALPERIOD where CAST(@POSTDATE as date) <= GLFISCALPERIOD.ENDDATE and CAST(@POSTDATE as date) >= GLFISCALPERIOD.STARTDATE and GLFISCALPERIOD.CLOSED = 0)
                        begin
                            RAISERROR ('ERR_POSTDATE_CLOSEDFISCALPERIOD',  16, 1)
                            return 1;
                        end
                    end

                    -- Check GL business rule for this account system and set to 'Do not post' if needed.

                    -- ****

                    declare @PDACCOUNTSYSTEMID uniqueidentifier;
                    select @PDACCOUNTSYSTEMID = PDACCOUNTSYSTEMID 
                    from dbo.PDACCOUNTSYSTEMFORREVENUE
                    where ID = @ID;

                    declare @ALLOWGLDISTRIBUTIONS bit;
                    set @ALLOWGLDISTRIBUTIONS = dbo.UFN_PDACCOUNTSYSTEM_ALLOWGLDISTRIBUTIONS(@PDACCOUNTSYSTEMID);
                    if @ALLOWGLDISTRIBUTIONS = 0 
                        set @POSTSTATUSCODE = 2        -- Do not post

                    -- ****                


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

                    declare @CURRENTDATE datetime = getdate()
                    declare @DEPOSITREFERENCE nvarchar(100);
                    declare @ORIGINALAMOUNT money;
                    declare @ORIGINALREFERENCE nvarchar(100);
                    declare @BASECURRENCYID uniqueidentifier;
                    declare @TRANSACTIONCURRENCYID uniqueidentifier;
                    declare @ORIGINALBASEEXCHANGERATEID uniqueidentifier;

                    select 
                        @ORIGINALAMOUNT = REVENUE.AMOUNT
                        ,@ORIGINALREFERENCE = REVENUEREFERENCE.REFERENCE
                        ,@BASECURRENCYID = REVENUE.BASECURRENCYID
                        ,@TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID
                        ,@ORIGINALBASEEXCHANGERATEID = REVENUE.BASEEXCHANGERATEID
                    from REVENUE
                    left outer join dbo.REVENUEREFERENCE on REVENUEREFERENCE.ID = REVENUE.ID
                    where REVENUE.ID = @ID;

                    if @BASEEXCHANGERATEID = '00000000-0000-0000-0000-000000000001' and exists(select 1 from dbo.CURRENCYEXCHANGERATE where ID = @ORIGINALBASEEXCHANGERATEID and TYPECODE = 2 and RATE = @EXCHANGERATE)
                        set @BASEEXCHANGERATEID = @ORIGINALBASEEXCHANGERATEID;

                    declare @ORGAMOUNTORIGINCODE tinyint;
                    declare @ORGCURRENCYID uniqueidentifier;
                    declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
                    declare @ORGCURRENCYNAME nvarchar(100);
                    select @ORGAMOUNTORIGINCODE = ORGANIZATIONAMOUNTORIGINCODE from dbo.MULTICURRENCYCONFIGURATION;
                    select @ORGCURRENCYID = ID, @ORGCURRENCYNAME = NAME from dbo.CURRENCY where ISORGANIZATIONCURRENCY = 1;
                    set @ORGANIZATIONEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTORGANIZATIONRATE(@BASECURRENCYID, @ORGCURRENCYID, @PAYMENTDATE, null, @TRANSACTIONCURRENCYID);
                    if (@ORGAMOUNTORIGINCODE = 1 and @TRANSACTIONCURRENCYID <> @ORGCURRENCYID) or (@ORGAMOUNTORIGINCODE = 0 and @BASECURRENCYID <> @ORGCURRENCYID)
                        if @ORGANIZATIONEXCHANGERATEID is null
                        begin
                            declare @CURRENCYNAME nvarchar(100);
                            select @CURRENCYNAME = NAME from dbo.CURRENCY where (ID = @TRANSACTIONCURRENCYID and @ORGAMOUNTORIGINCODE = 1) or (ID = @BASECURRENCYID and @ORGAMOUNTORIGINCODE = 0)
                            declare @errormessage nvarchar(200);
                            set @errormessage = 'A corporate exchange rate does not exist for ' + isnull(@CURRENCYNAME, '') + ' to ' + isnull(@ORGCURRENCYNAME, '')
                            raiserror (@errormessage, 16, 1);
                        end                        

                    --Normal revenue payments (non-miscellaneous) have one or more revenue streams associated with them via the application grid in the

                    --payment add/edit UI. Miscellaneous payments have one and only one application (one entry in the REVENUESPLIT table per REVENUE entry)

                    --and there is no UI for creating the REVENUESTREAMS xml. We're creating the XML parameter here based on the values entered in the UI.

                    --Selecting the top 1 row will ensure there is only one application saved per miscellaneous payment REVENUE entry.

                    declare @REVENUESTREAMS xml = (select top 1
                                    REVENUESPLIT.APPLICATIONCODE,
                                    @AMOUNT AS APPLIED,
                                    lower(cast(REVENUESPLIT.ID as char(36))) AS ID,
                                    REVENUESPLIT.TYPECODE,
                                    lower(cast(REVENUESPLIT.TRANSACTIONCURRENCYID as char(36))) APPLICATIONCURRENCYID,
                                    lower(cast(REVENUESPLIT.TRANSACTIONCURRENCYID as char(36))) TRANSACTIONCURRENCYID
                                from REVENUESPLIT
                                where REVENUESPLIT.REVENUEID = @ID
                                for xml raw('ITEM'),type,elements,root('REVENUESTREAMS'),BINARY BASE64) 

                        declare @ORIGINALPAYMETHODID uniqueidentifier, @ORIGINALPAYMENTMETHODCODE tinyint, @ORIGINALCREDITCARDTYPE uniqueidentifier, @ORIGINALOTHERPAYMENTMETHODCODEID uniqueidentifier;
                        select
                            @ORIGINALPAYMETHODID = REVENUEPAYMENTMETHOD.ID,
                            @ORIGINALPAYMENTMETHODCODE = REVENUEPAYMENTMETHOD.PAYMENTMETHODCODE,
                            @ORIGINALCREDITCARDTYPE = CREDITCARDPAYMENTMETHODDETAIL.CREDITTYPECODEID,
                            @ORIGINALOTHERPAYMENTMETHODCODEID = OTHERPAYMENTMETHODDETAIL.OTHERPAYMENTMETHODCODEID
                        from dbo.REVENUEPAYMENTMETHOD
                        left outer join dbo.CREDITCARDPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = CREDITCARDPAYMENTMETHODDETAIL.ID
                        left outer join dbo.OTHERPAYMENTMETHODDETAIL on REVENUEPAYMENTMETHOD.ID = OTHERPAYMENTMETHODDETAIL.ID
                        where REVENUEPAYMENTMETHOD.REVENUEID = @ID

                        begin try

                            exec dbo.USP_PAYMENT_EDIT_2
                                @ID = @ID
                                @CHANGEAGENTID = @CHANGEAGENTID
                                @CURRENTDATE = @CURRENTDATE
                                @DATE = @PAYMENTDATE
                                @AMOUNT = @AMOUNT
                                @REFERENCE = @PAYMENTSOURCE,
                                @RECEIPTAMOUNT = @AMOUNT,
                                @REVENUESTREAMS = @REVENUESTREAMS,
                                @SOURCECODE = '',
                                @APPEALID = null,
                                @BENEFITS = null,
                                @BENEFITSWAIVED = 0,
                                @GIVENANONYMOUSLY = 0,
                                @MAILINGID = null,
                                @CHANNELCODEID = null,
                                @DONOTRECEIPT = 0,
                                @BASEEXCHANGERATEID = @BASEEXCHANGERATEID,
                                @EXCHANGERATE = @EXCHANGERATE

                                if @DEPOSITID is null
                                    update dbo.BANKACCOUNTDEPOSITPAYMENT set
                                        DEPOSITID = @DEPOSITID
                                    where ID = @ID;

                            update dbo.REVENUEPAYMENTMETHOD set 
                                PAYMENTMETHODCODE = @PAYMENTMETHODCODE,
                                CHANGEDBYID = @CHANGEAGENTID,
                                DATECHANGED = @CURRENTDATE
                            where ID = @ORIGINALPAYMETHODID;                            

                            exec dbo.USP_REVENUE_UPDATEPAYMENTDETAILS 
                                @PAYMENTMETHODID = @ORIGINALPAYMETHODID,
                                @PAYMENTMETHODCODE = @PAYMENTMETHODCODE
                                @CHECKDATE = @CHECKDATE
                                @CHECKNUMBER = @CHECKNUMBER
                                @REFERENCEDATE = @REFERENCEDATE
                                @REFERENCENUMBER = @REFERENCENUMBER
                                @CARDHOLDERNAME = @CARDHOLDERNAME
                                @CREDITCARDNUMBER = @CREDITCARDNUMBER
                                @CREDITTYPECODEID = @CREDITTYPECODEID
                                @AUTHORIZATIONCODE = @AUTHORIZATIONCODE
                                @EXPIRESON = @EXPIRESON
                                @CHANGEAGENTID = @CHANGEAGENTID,
                                @CHANGEDATE = @CURRENTDATE
                                @KEYALREADYOPEN = 0,
                                @OTHERPAYMENTMETHODCODEID = @OTHERPAYMENTMETHODCODEID,
                                @REVENUEAMOUNT = @AMOUNT,
                                @ORIGINALPAYMENTMETHODCODE = @ORIGINALPAYMENTMETHODCODE;

                            declare @OLDPOSTDATE datetime;
                            declare @OLDDONOTPOST bit;
                            declare @DONOTPOST bit = case when @POSTSTATUSCODE = 2 then 1 else 0 end;

                            select @OLDPOSTDATE = POSTDATE, @OLDDONOTPOST = DONOTPOST from dbo.REVENUE where ID = @ID;

                            if @OLDPOSTDATE <> @POSTDATE or @OLDDONOTPOST <> @DONOTPOST 
                                begin
                                    update dbo.REVENUE
                                    set    POSTDATE = @POSTDATE,
                                        DONOTPOST = @DONOTPOST,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = @CURRENTDATE
                                    where ID = @ID;

                                    update dbo.GLTRANSACTION
                                    set POSTDATE = @POSTDATE,
                                        POSTSTATUSCODE = CASE WHEN @DONOTPOST = 1 THEN 2 ELSE 1 END,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = @CURRENTDATE
                                    where ID in (select REVENUEGLDISTRIBUTION.GLTRANSACTIONID
                                        from dbo.REVENUEGLDISTRIBUTION
                                        where REVENUEGLDISTRIBUTION.REVENUEID = @ID)
                                end

                            declare @PREVIOUSDEPOSITID uniqueidentifier;
                            declare @CLEARALLGLDISTRIBUTIONS bit = 0;
                            select @PREVIOUSDEPOSITID = DEPOSITID from dbo.BANKACCOUNTDEPOSITPAYMENT where ID = @ID;
                        if @DEPOSITID is not null
                            update dbo.BANKACCOUNTDEPOSITPAYMENT set
                                    DEPOSITID = @DEPOSITID
                                where ID = @ID;

                            if @ORIGINALPAYMENTMETHODCODE <> @PAYMENTMETHODCODE or @ORIGINALAMOUNT <> @AMOUNT or (@PREVIOUSDEPOSITID is not null and @DEPOSITID is null) or (@OLDDONOTPOST <> @DONOTPOST) or (@ORIGINALCREDITCARDTYPE <> @CREDITTYPECODEID) or (@ORIGINALOTHERPAYMENTMETHODCODEID <> @OTHERPAYMENTMETHODCODEID)
                             begin
                                declare @GLTRANSACTIONIDS table (ID uniqueidentifier);

                                insert into @GLTRANSACTIONIDS
                                select GLTRANSACTIONID
                                from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;

                                delete from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @ID and OUTDATED = 0;    
                                delete from dbo.GLTRANSACTION where ID in (select ID from @GLTRANSACTIONIDS);

                                if @DONOTPOST = 0
                                    exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @ID, @CHANGEAGENTID, @CURRENTDATE;
                             end

                            declare @BATRANSACTIONCURRENCYID uniqueidentifier;

                            if (@DEPOSITID is not null) and ((isnull(@PREVIOUSDEPOSITID, NEWID()) <> @DEPOSITID) or (@ORIGINALPAYMENTMETHODCODE <> @PAYMENTMETHODCODE) or (@ORIGINALAMOUNT <> @AMOUNT) or ((@OLDDONOTPOST <> @DONOTPOST) and @DONOTPOST = 0) or (@ORIGINALCREDITCARDTYPE <> @CREDITTYPECODEID) or (@ORIGINALOTHERPAYMENTMETHODCODEID <> @OTHERPAYMENTMETHODCODEID))
                            begin
                                exec dbo.USP_BANKACCOUNTDEPOSIT_OVERWRITEPAYMENTDEBITACCOUNTS @ID, @DEPOSITID, @CHANGEAGENTID, @CURRENTDATE;

                                select @DEPOSITREFERENCE = REFERENCE 
                                    ,@BATRANSACTIONCURRENCYID = TRANSACTIONCURRENCYID
                                from dbo.BANKACCOUNTTRANSACTION 
                                inner join dbo.BANKACCOUNT on BANKACCOUNTTRANSACTION.BANKACCOUNTID = BANKACCOUNTID
                                where BANKACCOUNTTRANSACTION.ID = @DEPOSITID;
                            end

                            if (@ORIGINALREFERENCE <> @PAYMENTSOURCE) or len(@PAYMENTSOURCE) > 0
                            begin
                                declare @PAYMENTMETHOD nvarchar(50);
                                select @PAYMENTMETHOD = REVENUEPAYMENTMETHOD.PAYMENTMETHOD
                                from dbo.REVENUEPAYMENTMETHOD
                                where ID = @ORIGINALPAYMETHODID;

                                declare @SPLITID uniqueidentifier;
                                declare @APPLICATION nvarchar(50);
                                select @SPLITID = T.ID, @APPLICATION  = REVENUESPLIT.APPLICATION
                                from dbo.UFN_REVENUE_GETAPPLICATIONS_FROMXML(@REVENUESTREAMS) as T
                                left outer join dbo.REVENUESPLIT on REVENUESPLIT.ID = T.ID;

                                if len(@DEPOSITREFERENCE) = 0 or @DEPOSITREFERENCE is null
                                    select @DEPOSITREFERENCE = REFERENCE from dbo.BANKACCOUNTTRANSACTION where ID = @DEPOSITID;
                                /* kwb Change to ANSI syntax    
                                update dbo.GLTRANSACTION set REFERENCE = 
                                CASE WHEN ((GLTRANSACTION.TRANSACTIONTYPECODE = 0) AND (LEN(@DEPOSITREFERENCE) > 0))
                                    THEN @DEPOSITREFERENCE
                                    ELSE CASE WHEN len(@PAYMENTSOURCE) > 0 THEN @PAYMENTSOURCE
                                        ELSE dbo.UFN_POSTTOGLPROCESS_GETJOURNALREFERENCE(@SPLITID, @PAYMENTMETHOD, @APPLICATION) END
                                    END
                                    ,CHANGEDBYID = @CHANGEAGENTID
                                    ,DATECHANGED = @CURRENTDATE
                                from dbo.REVENUE
                                inner join dbo.REVENUEGLDISTRIBUTION on REVENUE.ID =  REVENUEGLDISTRIBUTION.REVENUEID
                                inner join dbo.GLTRANSACTION on GLTRANSACTION.ID = REVENUEGLDISTRIBUTION.GLTRANSACTIONID
                                where REVENUE.ID = @ID and GLTRANSACTION.POSTSTATUSCODE = 1 
                                    and ((GLTRANSACTION.TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID and GLTRANSACTION.TRANSACTIONTYPECODE = 1)
                                        or ((GLTRANSACTION.TRANSACTIONCURRENCYID = @BATRANSACTIONCURRENCYID or @BATRANSACTIONCURRENCYID is null) and GLTRANSACTION.TRANSACTIONTYPECODE = 0));

                                update dbo.REVENUEGLDISTRIBUTION set REFERENCE = 
                                CASE WHEN ((REVENUEGLDISTRIBUTION.TRANSACTIONTYPECODE = 0) and (LEN(@DEPOSITREFERENCE) > 0))
                                    THEN @DEPOSITREFERENCE
                                    ELSE CASE WHEN len(@PAYMENTSOURCE) > 0 THEN @PAYMENTSOURCE
                                        ELSE dbo.UFN_POSTTOGLPROCESS_GETJOURNALREFERENCE(@SPLITID, @PAYMENTMETHOD, @APPLICATION) END
                                    END
                                    ,CHANGEDBYID = @CHANGEAGENTID
                                    ,DATECHANGED = @CURRENTDATE
                                from dbo.REVENUE
                                inner join dbo.REVENUEGLDISTRIBUTION on REVENUE.ID = REVENUEGLDISTRIBUTION.REVENUEID
                                inner join dbo.GLTRANSACTION on GLTRANSACTION.ID = REVENUEGLDISTRIBUTION.GLTRANSACTIONID
                                where REVENUE.ID = @ID and GLTRANSACTION.POSTSTATUSCODE = 1 
                                    and ((GLTRANSACTION.TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID and GLTRANSACTION.TRANSACTIONTYPECODE = 1)
                                        or ((GLTRANSACTION.TRANSACTIONCURRENCYID = @BATRANSACTIONCURRENCYID or @BATRANSACTIONCURRENCYID is null) and GLTRANSACTION.TRANSACTIONTYPECODE = 0));
                                */
                                declare @Refs table (GLTransactionID uniqueidentifier, RevenueGLDistributionID uniqueidentifier, Reference nvarchar(255))

                                insert into @Refs (GLTransactionID, RevenueGLDistributionID, Reference)
                                select GLTransaction.ID, REVENUEGLDistribution.ID,
                                    CASE WHEN ((GLTRANSACTION.TRANSACTIONTYPECODE = 0) AND (LEN(@DEPOSITREFERENCE) > 0)) THEN @DEPOSITREFERENCE
                                    ELSE CASE WHEN len(@PAYMENTSOURCE) > 0 THEN @PAYMENTSOURCE
                                        ELSE dbo.UFN_POSTTOGLPROCESS_GETJOURNALREFERENCE(@SPLITID, @PAYMENTMETHOD, @APPLICATION
                                        END
                                    END
                                from dbo.REVENUE inner join dbo.REVENUEGLDISTRIBUTION on REVENUE.ID =  REVENUEGLDISTRIBUTION.REVENUEID
                                inner join dbo.GLTRANSACTION on GLTRANSACTION.ID = REVENUEGLDISTRIBUTION.GLTRANSACTIONID
                                where REVENUE.ID = @ID 
                                and GLTRANSACTION.POSTSTATUSCODE = 1 
                                and ((GLTRANSACTION.TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID and GLTRANSACTION.TRANSACTIONTYPECODE = 1)
                                    or ((GLTRANSACTION.TRANSACTIONCURRENCYID = @BATRANSACTIONCURRENCYID or @BATRANSACTIONCURRENCYID is null) and GLTRANSACTION.TRANSACTIONTYPECODE = 0));

                            update dbo.GLTRANSACTION
                            set REFERENCE = (select Reference from @Refs where GLTransactionID = GLTRANSACTION.ID)
                            ,CHANGEDBYID = @CHANGEAGENTID
                            ,DATECHANGED = @CURRENTDATE
                            where ID in (select GLTransactionID from @Refs)

                            update dbo.REVENUEGLDISTRIBUTION
                            set REFERENCE = (select Reference from @Refs where RevenueGLDistributionID = REVENUEGLDISTRIBUTION.ID)
                            ,CHANGEDBYID = @CHANGEAGENTID
                            ,DATECHANGED = @CURRENTDATE
                            where ID in (select RevenueGLDistributionID from @Refs)

                            end
                            else if @DEPOSITID is not null and len(@DEPOSITREFERENCE) > 0
                            begin
                                /* kwb Change to ANSI syntax
                                update dbo.GLTRANSACTION set REFERENCE = @DEPOSITREFERENCE
                                    ,CHANGEDBYID = @CHANGEAGENTID
                                    ,DATECHANGED = @CURRENTDATE
                                from dbo.REVENUE
                                inner join dbo.REVENUEGLDISTRIBUTION on REVENUE.ID = REVENUEGLDISTRIBUTION.REVENUEID
                                inner join dbo.GLTRANSACTION on GLTRANSACTION.ID = REVENUEGLDISTRIBUTION.GLTRANSACTIONID
                                where REVENUE.ID = @ID and GLTRANSACTION.TRANSACTIONTYPECODE = 0 and GLTRANSACTION.POSTSTATUSCODE = 1
                                    and GLTRANSACTION.TRANSACTIONCURRENCYID = @BATRANSACTIONCURRENCYID;

                                update dbo.REVENUEGLDISTRIBUTION set REFERENCE = @DEPOSITREFERENCE
                                    ,CHANGEDBYID = @CHANGEAGENTID
                                    ,DATECHANGED = @CURRENTDATE
                                from dbo.REVENUE
                                inner join dbo.REVENUEGLDISTRIBUTION on REVENUE.ID = REVENUEGLDISTRIBUTION.REVENUEID
                                inner join dbo.GLTRANSACTION on GLTRANSACTION.ID = REVENUEGLDISTRIBUTION.GLTRANSACTIONID
                                where REVENUE.ID = @ID and REVENUEGLDISTRIBUTION.TRANSACTIONTYPECODE = 0 and GLTRANSACTION.POSTSTATUSCODE = 1
                                    and GLTRANSACTION.TRANSACTIONCURRENCYID = @BATRANSACTIONCURRENCYID;
                                */
                                update dbo.GLTRANSACTION 
                                    set REFERENCE = @DEPOSITREFERENCE
                                    ,CHANGEDBYID = @CHANGEAGENTID
                                    ,DATECHANGED = @CURRENTDATE
                                where ID in (select GLTRANSACTION.ID  
                                    from dbo.REVENUEGLDISTRIBUTION inner join dbo.GLTRANSACTION on GLTRANSACTION.ID = REVENUEGLDISTRIBUTION.GLTRANSACTIONID
                                    where REVENUEGLDISTRIBUTION.REVENUEID = @ID 
                                        and GLTRANSACTION.TRANSACTIONTYPECODE = 0 
                                        and GLTRANSACTION.POSTSTATUSCODE = 1
                                        and GLTRANSACTION.TRANSACTIONCURRENCYID = @BATRANSACTIONCURRENCYID);

                                update dbo.REVENUEGLDISTRIBUTION 
                                    set REFERENCE = @DEPOSITREFERENCE
                                    ,CHANGEDBYID = @CHANGEAGENTID
                                    ,DATECHANGED = @CURRENTDATE
                                where ID in (select REVENUEGLDISTRIBUTION.ID
                                    from REVENUEGLDISTRIBUTION 
                                    inner join dbo.GLTRANSACTION on GLTRANSACTION.ID = REVENUEGLDISTRIBUTION.GLTRANSACTIONID
                                    where REVENUEGLDISTRIBUTION.REVENUEID = @ID 
                                        and REVENUEGLDISTRIBUTION.TRANSACTIONTYPECODE = 0 
                                        and GLTRANSACTION.POSTSTATUSCODE = 1
                                        and GLTRANSACTION.TRANSACTIONCURRENCYID = @BATRANSACTIONCURRENCYID);

                            end

                        end try

                        begin catch
                            exec dbo.USP_RAISE_ERROR
                            return 1
                        end catch

                    return 0;