UFN_GIFTAID_GETTAXCLAIMAMOUNTINCURRENCY_BULK

Returns the tax claim amount in the given currency.

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@CURRENCYID uniqueidentifier IN
@ORGANIZATIONCURRENCYID uniqueidentifier IN
@DECIMALDIGITS tinyint IN
@ROUNDINGTYPECODE tinyint IN

Definition

Copy


            CREATE function dbo.UFN_GIFTAID_GETTAXCLAIMAMOUNTINCURRENCY_BULK
            (
                @CURRENCYID uniqueidentifier,
                @ORGANIZATIONCURRENCYID uniqueidentifier,
                @DECIMALDIGITS tinyint,
                @ROUNDINGTYPECODE tinyint
            )
            returns table 
            as
            return
            (
                select
                    REVENUESPLIT.ID,
                    case
                        when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
                            then case REVENUE.TRANSACTIONTYPECODE when 1 then (select top 1 (BASETAXCLAIMAMOUNT + TRANSITIONALTAXCLAIMAMOUNT) from dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 2))
                                                                  when 0 then case when REVENUESPLIT.APPLICATIONCODE in (0,1,2,3,5) then dbo.UFN_GIFTAIDREVENUESPLIT_GETSPLITTAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 1, 2) else 0 end 
                                                                  else 0 end
                        else
                            case REVENUE.TRANSACTIONTYPECODE when 1 then (select top 1 (BASETAXCLAIMAMOUNT + TRANSITIONALTAXCLAIMAMOUNT) from dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 0))
                                                             when 0 then case when REVENUESPLIT.APPLICATIONCODE in (0,1,2,3,5) then dbo.UFN_GIFTAIDREVENUESPLIT_GETSPLITTAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 1, 0) else 0 end
                                                             else 0 end            
                    end as TAXCLAIMAMOUNTINCURRENCY
                from
                    dbo.REVENUESPLIT
                    inner join dbo.REVENUE on REVENUE.ID = REVENUESPLIT.REVENUEID
                where (@CURRENCYID is null
                    or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
                    or @CURRENCYID = REVENUESPLIT.BASECURRENCYID

                union all

                select REVENUESPLIT.ID,
                    case
                        when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
                            then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(case REVENUE.TRANSACTIONTYPECODE when 1 then (select top 1 (BASETAXCLAIMAMOUNT + TRANSITIONALTAXCLAIMAMOUNT) from dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 2))
                                                                                                                    when 0 then case when REVENUESPLIT.APPLICATIONCODE in (0,1,2,3,5) then dbo.UFN_GIFTAIDREVENUESPLIT_GETSPLITTAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 1, 2) else 0 end
                                                                                                                    else 0 end, [LATESTORGANIZATIONEXCHANGERATE].RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE)
                        when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
                            then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(case REVENUE.TRANSACTIONTYPECODE when 1 then (select top 1 (BASETAXCLAIMAMOUNT + TRANSITIONALTAXCLAIMAMOUNT) from dbo.UFN_GIFTAIDREVENUESPLIT_CALCULATEPLEDGETAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 2))
                                                                                                                    when 0 then case when REVENUESPLIT.APPLICATIONCODE in (0,1,2,3,5) then dbo.UFN_GIFTAIDREVENUESPLIT_GETSPLITTAXCLAIMAMOUNT_2(REVENUESPLIT.ID, 1, 2) else 0 end
                                                                                                                    else 0 end, cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)        
                        else
                            0
                    end as TAXCLAIMAMOUNTINCURRENCY
                from
                    dbo.REVENUESPLIT
                    inner join dbo.REVENUE on REVENUESPLIT.REVENUEID = REVENUE.ID
                    outer apply
                    (
                        select
                            RATE
                        from
                            dbo.CURRENCYEXCHANGERATE
                        where
                            @ORGANIZATIONCURRENCYID = CURRENCYEXCHANGERATE.FROMCURRENCYID
                            and @CURRENCYID = CURRENCYEXCHANGERATE.TOCURRENCYID
                            and CURRENCYEXCHANGERATE.TYPECODE in (0,1)
                            and CURRENCYEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
                            and dateadd(ms, 86399996,REVENUE.DATE) >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
                            and dateadd(ms, 86399996,REVENUE.DATE) <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
                    ) LATESTORGANIZATIONEXCHANGERATE
                    outer apply
                    (
                        select
                            RATE
                        from
                            dbo.CURRENCYEXCHANGERATE
                        where
                            @CURRENCYID = CURRENCYEXCHANGERATE.FROMCURRENCYID
                            and @ORGANIZATIONCURRENCYID= CURRENCYEXCHANGERATE.TOCURRENCYID
                            and CURRENCYEXCHANGERATE.TYPECODE in (0,1)
                            and CURRENCYEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
                            and dateadd(ms, 86399996,REVENUE.DATE) >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
                            and dateadd(ms, 86399996,REVENUE.DATE) <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
                    ) LATESTINVERSEORGANIZATIONEXCHANGERATE
                    where (@CURRENCYID is not null
                        and (@CURRENCYID <> @ORGANIZATIONCURRENCYID)
                        and @CURRENCYID <> REVENUESPLIT.BASECURRENCYID
            )