UFN_REVENUE_GETAMOUNTSINCURRENCY_BULK

Returns the amounts of all revenue records 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_REVENUE_GETAMOUNTSINCURRENCY_BULK]
(
  @CURRENCYID uniqueidentifier,
  @ORGANIZATIONCURRENCYID uniqueidentifier,
  @DECIMALDIGITS tinyint,
  @ROUNDINGTYPECODE tinyint
)
returns table
as
return
(
  select
    REVENUE.CONSTITUENTID,
    REVENUE.TYPECODE TRANSACTIONTYPECODE,
    REVENUE.[TYPE] TRANSACTIONTYPE,
    cast(REVENUE.DATE as datetime) [DATE],
    case
      when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
        then REVENUE.ORGAMOUNT
      else REVENUE.BASEAMOUNT
    end [AMOUNTINCURRENCY],
    REVENUE.ID,
    REVENUE_EXT.MAILINGID,
    REVENUE.DATECHANGED,
    REVENUE_EXT.APPEALID
  from dbo.FINANCIALTRANSACTION REVENUE
  inner join dbo.REVENUE_EXT on REVENUE.ID = REVENUE_EXT.ID
  inner join  dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on REVENUE.ID = V.FINANCIALTRANSACTIONID
  where REVENUE.TYPECODE in (0,1,2,3,4,5,6,7,8,9,15) and REVENUE.DELETEDON is null 
  and (
    (@CURRENCYID is null
    or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
    or @CURRENCYID = V.BASECURRENCYID
  )

  union all

  select
    REVENUE.CONSTITUENTID,
    REVENUE.TYPECODE TRANSACTIONTYPECODE,
    REVENUE.[TYPE] TRANSACTIONTYPE,
    cast(REVENUE.DATE as datetime) [DATE],
    case
      when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
        then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(REVENUE.ORGAMOUNT, [LATESTORGANIZATIONEXCHANGERATE].RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE)
      when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
        then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(REVENUE.ORGAMOUNT, cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)
      else 0
    end [AMOUNTINCURRENCY],
    REVENUE.ID,
    REVENUE_EXT.MAILINGID,
    REVENUE.DATECHANGED,
    REVENUE_EXT.APPEALID
  from dbo.FINANCIALTRANSACTION REVENUE
  inner join dbo.REVENUE_EXT on REVENUE.ID = REVENUE_EXT.ID
  inner join  dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on REVENUE.ID = V.FINANCIALTRANSACTIONID
  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, cast(REVENUE.DATE as datetime)) >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
    and dateadd(ms, 86399996, cast(REVENUE.DATE as datetime)) <= 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, cast(REVENUE.DATE as datetime)) >= CURRENCYEXCHANGERATE.ASOFDATESDTZ
    and dateadd(ms, 86399996, cast(REVENUE.DATE as datetime)) <= CURRENCYEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
  ) LATESTINVERSEORGANIZATIONEXCHANGERATE
  where REVENUE.TYPECODE in (0,1,2,3,4,5,6,7,8,9,15) and REVENUE.DELETEDON is null
  and (
    (@CURRENCYID is not null
    and (@CURRENCYID <> @ORGANIZATIONCURRENCYID)
    and @CURRENCYID <> V.BASECURRENCYID
  )
)