UFN_REVENUETRIBUTE_GETGROSSAMOUNTINCURRENCY

Returns the gross amount for the specified revenue tribute in the given currency.

Return

Return Type
money

Parameters

Parameter Parameter Type Mode Description
@REVENUETRIBUTEID uniqueidentifier IN
@CURRENCYID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_REVENUETRIBUTE_GETGROSSAMOUNTINCURRENCY
            (
                @REVENUETRIBUTEID uniqueidentifier,
                @CURRENCYID uniqueidentifier
            )
            returns money
            as
            begin
                declare @AMOUNT money = 0;

                if (@CURRENCYID is null) or (@CURRENCYID = dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY())
                begin
                    select
                        @AMOUNT = REVENUETRIBUTE.ORGANIZATIONAMOUNT + 
                                    coalesce(case when REVENUETRIBUTE.ORGANIZATIONEXCHANGERATEID is null then REVENUETRIBUTETAXCLAIMAMOUNT.TAXCLAIMAMOUNT
                                                                                            else dbo.UFN_CURRENCY_CONVERT(REVENUETRIBUTETAXCLAIMAMOUNT.TAXCLAIMAMOUNT, REVENUETRIBUTE.ORGANIZATIONEXCHANGERATEID) end, 0)
                    from
                        dbo.REVENUETRIBUTE
                    left join 
                        dbo.REVENUETRIBUTETAXCLAIMAMOUNT on REVENUETRIBUTE.ID = REVENUETRIBUTETAXCLAIMAMOUNT.ID
                    where
                        REVENUETRIBUTE.ID = @REVENUETRIBUTEID;
                end
                else
                begin
                    declare @RECORDBASECURRENCYID uniqueidentifier;
                    declare @RECORDDATE datetime;

                    select
                        @RECORDBASECURRENCYID = REVENUETRIBUTE.BASECURRENCYID,
                        @RECORDDATE = REVENUETRIBUTE.DATEADDED
                    from
                        dbo.REVENUETRIBUTE
                    where
                        REVENUETRIBUTE.ID = @REVENUETRIBUTEID;

                    if @CURRENCYID = @RECORDBASECURRENCYID
                    begin
                        select
                            @AMOUNT = REVENUETRIBUTE.AMOUNT + coalesce(REVENUETRIBUTETAXCLAIMAMOUNT.TAXCLAIMAMOUNT, 0)
                        from
                            dbo.REVENUETRIBUTE
                        left join 
                            dbo.REVENUETRIBUTETAXCLAIMAMOUNT on REVENUETRIBUTE.ID = REVENUETRIBUTETAXCLAIMAMOUNT.ID
                        where
                            REVENUETRIBUTE.ID = @REVENUETRIBUTEID;
                    end
                    else
                    begin
                        declare @CURRENCYEXCHANGERATEID uniqueidentifier;

                        set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @CURRENCYID, @RECORDDATE, 1, null);
                        if (@CURRENCYEXCHANGERATEID is not null)
                        begin
                            select
                                @AMOUNT = dbo.UFN_CURRENCY_CONVERT(REVENUETRIBUTE.ORGANIZATIONAMOUNT +
                                                                    coalesce(case when REVENUETRIBUTE.ORGANIZATIONEXCHANGERATEID is null then REVENUETRIBUTETAXCLAIMAMOUNT.TAXCLAIMAMOUNT
                                                                                            else dbo.UFN_CURRENCY_CONVERT(REVENUETRIBUTETAXCLAIMAMOUNT.TAXCLAIMAMOUNT, REVENUETRIBUTE.ORGANIZATIONEXCHANGERATEID) end, 0), @CURRENCYEXCHANGERATEID)
                            from
                                dbo.REVENUETRIBUTE
                            left join 
                                dbo.REVENUETRIBUTETAXCLAIMAMOUNT on REVENUETRIBUTE.ID = REVENUETRIBUTETAXCLAIMAMOUNT.ID
                            where
                                REVENUETRIBUTE.ID = @REVENUETRIBUTEID;
                        end
                        else
                        begin
                            set @CURRENCYEXCHANGERATEID = dbo.UFN_CURRENCYEXCHANGERATE_GETLATESTINCLUDEEXPIRED(@CURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY(), @RECORDDATE, 1, null);

                            select
                                @AMOUNT = dbo.UFN_CURRENCY_CONVERTINVERSE(REVENUETRIBUTE.ORGANIZATIONAMOUNT +
                                                                    coalesce(case when REVENUETRIBUTE.ORGANIZATIONEXCHANGERATEID is null then REVENUETRIBUTETAXCLAIMAMOUNT.TAXCLAIMAMOUNT
                                                                                            else dbo.UFN_CURRENCY_CONVERT(REVENUETRIBUTETAXCLAIMAMOUNT.TAXCLAIMAMOUNT, REVENUETRIBUTE.ORGANIZATIONEXCHANGERATEID) end, 0), @CURRENCYEXCHANGERATEID)
                            from
                                dbo.REVENUETRIBUTE
                            left join 
                                dbo.REVENUETRIBUTETAXCLAIMAMOUNT on REVENUETRIBUTE.ID = REVENUETRIBUTETAXCLAIMAMOUNT.ID
                            where
                                REVENUETRIBUTE.ID = @REVENUETRIBUTEID;
                        end
                    end
                end    

                return @AMOUNT;
            end