UFN_REVENUESPLITBUSINESSUNIT_GETAMOUNTINCURRENCY_BULK

Returns the business unit amount of a revenue split record 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_REVENUESPLITBUSINESSUNIT_GETAMOUNTINCURRENCY_BULK
(
  @CURRENCYID uniqueidentifier,
  @ORGANIZATIONCURRENCYID uniqueidentifier,
  @DECIMALDIGITS tinyint,
  @ROUNDINGTYPECODE tinyint
)
returns table
as
return
(
  select
     REVENUESPLITBUSINESSUNIT.ID,
     REVENUESPLITBUSINESSUNIT.REVENUESPLITID,
    case
      when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID) then REVENUESPLITBUSINESSUNIT.ORGANIZATIONAMOUNT
      else REVENUESPLITBUSINESSUNIT.AMOUNT
    end as AMOUNTINCURRENCY,
    REVENUESPLITBUSINESSUNIT.BUSINESSUNITCODEID
  from dbo.REVENUESPLITBUSINESSUNIT with (nolock)
  where 
    (@CURRENCYID is null) or
    (@CURRENCYID = @ORGANIZATIONCURRENCYID) or
    (@CURRENCYID = REVENUESPLITBUSINESSUNIT.BASECURRENCYID)

  union all

  select
    REVENUESPLITBUSINESSUNIT.ID,
     REVENUESPLITBUSINESSUNIT.REVENUESPLITID,
    case
      when LATESTORGANIZATIONEXCHANGERATE.RATE is not null
        then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(REVENUESPLITBUSINESSUNIT.ORGANIZATIONAMOUNT, LATESTORGANIZATIONEXCHANGERATE.RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE)

      when LATESTINVERSEORGANIZATIONEXCHANGERATE.RATE is not null
        then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(REVENUESPLITBUSINESSUNIT.ORGANIZATIONAMOUNT, cast((1 / LATESTINVERSEORGANIZATIONEXCHANGERATE.RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)
      else
        0
    end AMOUNTINCURRENCY,
     REVENUESPLITBUSINESSUNIT.BUSINESSUNITCODEID
  from dbo.REVENUESPLITBUSINESSUNIT with (nolock)
    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
        REVENUESPLITBUSINESSUNIT.DATEADDED >= CURRENCYEXCHANGERATE.ASOFDATESDTZ and
        REVENUESPLITBUSINESSUNIT.DATEADDED <= 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
        REVENUESPLITBUSINESSUNIT.DATEADDED >= CURRENCYEXCHANGERATE.ASOFDATESDTZ and
        REVENUESPLITBUSINESSUNIT.DATEADDED <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
    ) LATESTINVERSEORGANIZATIONEXCHANGERATE
    where 
      (@CURRENCYID is not null) and
      (@CURRENCYID <> @ORGANIZATIONCURRENCYID) and
      (@CURRENCYID <> REVENUESPLITBUSINESSUNIT.BASECURRENCYID)
)