USP_DATAFORMTEMPLATE_EDIT_REVENUEVAT

The save procedure used by the edit dataform template "Revenue VAT 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.
@AMOUNTTOTAX money IN Portion subject to VAT
@VATTAXRATEID uniqueidentifier IN VAT tax rate
@VATAMOUNT money IN VAT amount

Definition

Copy


                    CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_REVENUEVAT (
                        @ID uniqueidentifier,
                        @CHANGEAGENTID uniqueidentifier = null,
                        @AMOUNTTOTAX money,
                        @VATTAXRATEID uniqueidentifier,
                        @VATAMOUNT money
                    ) as
                        set nocount on;

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

                        declare @CURRENTDATE datetime
                        set @CURRENTDATE = getdate()

                        begin try

                            if @AMOUNTTOTAX > 0
                            begin
                                declare @TRANSACTIONVATAMOUNT money;
                                declare @TRANSACTIONAMOUNTTOTAX money;
                                declare @TRANSACTIONCURRENCYID uniqueidentifier;
                                declare @BASEVATAMOUNT money;
                                declare @BASEAMOUNTTOTAX money;
                                declare @BASECURRENCYID uniqueidentifier;
                                declare @BASEEXCHANGERATEID uniqueidentifier;
                                declare @ORGANIZATIONVATAMOUNT money;
                                declare @ORGANIZATIONAMOUNTTOTAX money;
                                declare @ORGANIZATIONCURRENCYID uniqueidentifier;
                                declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
                                declare @REVENUETRANSACTIONAMOUNT money;

                                set @TRANSACTIONVATAMOUNT = @VATAMOUNT;
                                set @TRANSACTIONAMOUNTTOTAX = @AMOUNTTOTAX;
                                set @ORGANIZATIONCURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY();

                                select 
                                    @TRANSACTIONCURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
                                    @BASECURRENCYID = isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, CURRENCYSET.BASECURRENCYID),
                                    @BASEEXCHANGERATEID = FINANCIALTRANSACTION.BASEEXCHANGERATEID,
                                    @ORGANIZATIONEXCHANGERATEID = FINANCIALTRANSACTION.ORGEXCHANGERATEID,
                                    @REVENUETRANSACTIONAMOUNT = FINANCIALTRANSACTION.TRANSACTIONAMOUNT
                                from 
                                    dbo.FINANCIALTRANSACTION
                                    inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
                                    inner join dbo.PDACCOUNTSYSTEM on FINANCIALTRANSACTION.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
                                    inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID 
                                 where 
                                    FINANCIALTRANSACTION.ID = @ID

                                if @BASECURRENCYID is null
                                    set @BASECURRENCYID = @ORGANIZATIONCURRENCYID

                                exec dbo.USP_CURRENCY_GETCURRENCYVALUES @TRANSACTIONVATAMOUNT,
                                                                        @CURRENTDATE,
                                                                        @BASECURRENCYID,
                                                                        @BASEEXCHANGERATEID,
                                                                        @TRANSACTIONCURRENCYID,
                                                                        @BASEVATAMOUNT output,
                                                                        @ORGANIZATIONCURRENCYID,
                                                                        @ORGANIZATIONVATAMOUNT output
                                                                        @ORGANIZATIONEXCHANGERATEID
                                                                        0;

                                exec dbo.USP_CURRENCY_GETCURRENCYVALUES @TRANSACTIONAMOUNTTOTAX,
                                                                        @CURRENTDATE,
                                                                        @BASECURRENCYID,
                                                                        @BASEEXCHANGERATEID,
                                                                        @TRANSACTIONCURRENCYID,
                                                                        @BASEAMOUNTTOTAX output,
                                                                        @ORGANIZATIONCURRENCYID,
                                                                        @ORGANIZATIONAMOUNTTOTAX output
                                                                        @ORGANIZATIONEXCHANGERATEID
                                                                        0;

                                if @TRANSACTIONAMOUNTTOTAX > @REVENUETRANSACTIONAMOUNT
                                begin
                                    raiserror('ERR_AMOUNTTOTAX_INVALID', 13, 1);
                                    return 0;                            
                                end

                                if exists(select 1 from dbo.REVENUEVAT where ID = @ID)
                                begin
                                    update
                                        dbo.REVENUEVAT
                                    set
                                        AMOUNTTOTAX = @BASEAMOUNTTOTAX,
                                        VATAMOUNT = @BASEVATAMOUNT,
                                        BASECURRENCYID = @BASECURRENCYID,
                                        BASEEXCHANGERATEID = @BASEEXCHANGERATEID,

                                        TRANSACTIONAMOUNTTOTAX = @TRANSACTIONAMOUNTTOTAX,
                                        TRANSACTIONVATAMOUNT = @TRANSACTIONVATAMOUNT,
                                        TRANSACTIONCURRENCYID = @TRANSACTIONCURRENCYID,

                                        ORGANIZATIONAMOUNTTOTAX = @ORGANIZATIONAMOUNTTOTAX,
                                        ORGANIZATIONVATAMOUNT = @ORGANIZATIONVATAMOUNT,
                                        ORGANIZATIONEXCHANGERATEID = @ORGANIZATIONEXCHANGERATEID,

                                        VATTAXRATEID = @VATTAXRATEID,
                                        CHANGEDBYID = @CHANGEAGENTID,
                                        DATECHANGED = @CURRENTDATE
                                    where
                                        ID = @ID
                                end        
                                else
                                begin
                                    insert into dbo.REVENUEVAT(
                                        ID,
                                        AMOUNTTOTAX,
                                        VATAMOUNT,
                                        BASECURRENCYID,
                                        BASEEXCHANGERATEID,
                                        TRANSACTIONAMOUNTTOTAX,
                                        TRANSACTIONVATAMOUNT,
                                        TRANSACTIONCURRENCYID,
                                        ORGANIZATIONAMOUNTTOTAX,
                                        ORGANIZATIONVATAMOUNT,
                                        ORGANIZATIONEXCHANGERATEID,
                                        VATTAXRATEID,
                                        ADDEDBYID,
                                        CHANGEDBYID,
                                        DATEADDED,
                                        DATECHANGED
                                    )values(    
                                        @ID,    
                                        @BASEAMOUNTTOTAX,
                                        @BASEVATAMOUNT,
                                        @BASECURRENCYID,
                                        @BASEEXCHANGERATEID,
                                        @TRANSACTIONAMOUNTTOTAX,
                                        @TRANSACTIONVATAMOUNT,
                                        @TRANSACTIONCURRENCYID,
                                        @ORGANIZATIONAMOUNTTOTAX,
                                        @ORGANIZATIONVATAMOUNT,
                                        @ORGANIZATIONEXCHANGERATEID,
                                        @VATTAXRATEID,    
                                        @CHANGEAGENTID,
                                        @CHANGEAGENTID,
                                        @CURRENTDATE,
                                        @CURRENTDATE
                                    )
                                end
                            end
                            else
                            begin
                                exec dbo.USP_REVENUEVAT_DELETEBYID_WITHCHANGEAGENTID @ID, @CHANGEAGENTID;
                            end

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

                    return 0;