UFN_RECOGNITIONCREDIT_GETAMOUNTINCURRENCY_BULK

Returns the amounts of all recognition 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_RECOGNITIONCREDIT_GETAMOUNTINCURRENCY_BULK
      (
        @CURRENCYID uniqueidentifier,
        @ORGANIZATIONCURRENCYID uniqueidentifier,
        @DECIMALDIGITS tinyint,
        @ROUNDINGTYPECODE tinyint
      )
      returns table
      as
      return
      (
        select
          RECOGNITIONCREDIT.ID,
          DONORCHALLENGEENCUMBERED.REVENUESPLITID,
          RECOGNITIONCREDIT.CONSTITUENTID,
          RECOGNITIONCREDIT.EFFECTIVEDATE,
          case
            when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
              then RECOGNITIONCREDIT.ORGANIZATIONAMOUNT

            else
              RECOGNITIONCREDIT.AMOUNT 
          end [AMOUNTINCURRENCY],
          [RECOGNITIONCREDIT].[DATEADDED],
          [RECOGNITIONCREDIT].[USERRECOGNITIONTYPECODEID],
          [RECOGNITIONCREDIT].[TSLONG],
          FINANCIALTRANSACTION.[ID] as [REVENUEID],
          8 as [TRANSACTIONTYPECODE],   /* By hard coding 8, we force internal credit matches to be treated the same as external ones */
          FINANCIALTRANSACTION.[CONSTITUENTID] as [REVENUECONSTITUENTID],
          FINANCIALTRANSACTION.[DATE],
          FINANCIALTRANSACTION.[DATEADDED] as [REVENUEDATEADDED],
          REVENUESPLIT_EXT.[APPLICATIONCODE],
          REVENUESPLIT_EXT.[TYPECODE] as [REVENUESPLITTYPECODE],
          [RECOGNITIONCREDIT].[DESIGNATIONID],
          FINANCIALTRANSACTIONLINEITEM.[TSLONG] as [REVENUESPLITTSLONG],
          FINANCIALTRANSACTION.[TYPE] as [TRANSACTIONTYPE],
          case
            when (@CURRENCYID is null) or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
              then null

            else
              RECOGNITIONCREDIT.ORGANIZATIONEXCHANGERATEID
          end [ORGANIZATIONEXCHANGERATEID],
          RECOGNITIONCREDIT.ORGANIZATIONAMOUNT,
          RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE
        from
          dbo.RECOGNITIONCREDIT with (nolock)
          left join dbo.DONORCHALLENGEENCUMBERED with (nolock) on RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID = DONORCHALLENGEENCUMBERED.ID
          left join dbo.FINANCIALTRANSACTIONLINEITEM with (nolock) on FINANCIALTRANSACTIONLINEITEM.ID = DONORCHALLENGEENCUMBERED.REVENUESPLITID
          left join dbo.FINANCIALTRANSACTION with (nolock) on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID= FINANCIALTRANSACTION.ID
          left join dbo.REVENUESPLIT_EXT with (nolock) on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
        where 
            (
              (@CURRENCYID is null
              or (@CURRENCYID = @ORGANIZATIONCURRENCYID)
              or (@CURRENCYID = RECOGNITIONCREDIT.BASECURRENCYID)
            )
            and (
              (RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 0
              or (RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 1 and RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID is not null)
            )
            and FINANCIALTRANSACTIONLINEITEM.TYPECODE = 0
            and FINANCIALTRANSACTIONLINEITEM.DELETEDON is NULL
            and FINANCIALTRANSACTION.DELETEDON is NULL
            and ((FINANCIALTRANSACTION.TYPECODE between 0 and 9) or (FINANCIALTRANSACTION.TYPECODE = 15))

        union all

        select
          RECOGNITIONCREDIT.ID,
          DONORCHALLENGEENCUMBERED.REVENUESPLITID,
          RECOGNITIONCREDIT.CONSTITUENTID,
          RECOGNITIONCREDIT.EFFECTIVEDATE,
          case
            when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
              then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(RECOGNITIONCREDIT.ORGANIZATIONAMOUNT, [LATESTORGANIZATIONEXCHANGERATE].RATE), @DECIMALDIGITS, @ROUNDINGTYPECODE)

            when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
              then dbo.UFN_CURRENCY_ROUND(dbo.UFN_CURRENCY_APPLYRATE(RECOGNITIONCREDIT.ORGANIZATIONAMOUNT, cast((1 / [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE) as decimal(20,8))), @DECIMALDIGITS, @ROUNDINGTYPECODE)
            else
              0
          end [AMOUNTINCURRENCY],
          [RECOGNITIONCREDIT].[DATEADDED],
          [RECOGNITIONCREDIT].[USERRECOGNITIONTYPECODEID],
          [RECOGNITIONCREDIT].[TSLONG],
          FINANCIALTRANSACTION.[ID] as [REVENUEID],
          8 as [TRANSACTIONTYPECODE], /* By hard coding 8, we force internal credit matches to be treated the same as external ones */
          FINANCIALTRANSACTION.[CONSTITUENTID] as [REVENUECONSTITUENTID],
          FINANCIALTRANSACTION.[DATE],
          FINANCIALTRANSACTION.[DATEADDED] as [REVENUEDATEADDED],
          REVENUESPLIT_EXT.[APPLICATIONCODE],
          REVENUESPLIT_EXT.[TYPECODE] as [REVENUESPLITTYPECODE],
          [RECOGNITIONCREDIT].[DESIGNATIONID],
          FINANCIALTRANSACTIONLINEITEM.[TSLONG] as [REVENUESPLITTSLONG],
          FINANCIALTRANSACTION.[TYPE] as [TRANSACTIONTYPE],
          case
            when RECOGNITIONCREDIT.ORGANIZATIONEXCHANGERATEID is not null
              then RECOGNITIONCREDIT.ORGANIZATIONEXCHANGERATEID

            when [LATESTORGANIZATIONEXCHANGERATE].RATE is not null
              then [LATESTORGANIZATIONEXCHANGERATE].ID

            when [LATESTINVERSEORGANIZATIONEXCHANGERATE].RATE is not null
              then [LATESTINVERSEORGANIZATIONEXCHANGERATE].ID
            else
              null
          end [ORGANIZATIONEXCHANGERATEID],
          RECOGNITIONCREDIT.ORGANIZATIONAMOUNT,
          RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE
        from
          dbo.RECOGNITIONCREDIT with (nolock)
          inner join dbo.DONORCHALLENGEENCUMBERED with (nolock) on RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID = DONORCHALLENGEENCUMBERED.ID
          inner join dbo.FINANCIALTRANSACTIONLINEITEM with (nolock) on FINANCIALTRANSACTIONLINEITEM.ID = DONORCHALLENGEENCUMBERED.REVENUESPLITID
          inner join dbo.REVENUESPLIT_EXT with (nolock) on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
          inner join dbo.FINANCIALTRANSACTION with (nolock) on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
          left outer join dbo.CURRENCYEXCHANGERATE as LATESTORGANIZATIONEXCHANGERATE
            on @ORGANIZATIONCURRENCYID = LATESTORGANIZATIONEXCHANGERATE.FROMCURRENCYID
              and @CURRENCYID = LATESTORGANIZATIONEXCHANGERATE.TOCURRENCYID
              and LATESTORGANIZATIONEXCHANGERATE.TYPECODE in (0,1)
              and LATESTORGANIZATIONEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
              and dateadd(ms, 86399996, FINANCIALTRANSACTION.[DATE]) >= LATESTORGANIZATIONEXCHANGERATE.ASOFDATESDTZ
              and dateadd(ms, 86399996, FINANCIALTRANSACTION.[DATE]) <= LATESTORGANIZATIONEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
          left outer join dbo.CURRENCYEXCHANGERATE as LATESTINVERSEORGANIZATIONEXCHANGERATE
            on               @CURRENCYID = LATESTINVERSEORGANIZATIONEXCHANGERATE.FROMCURRENCYID
              and @ORGANIZATIONCURRENCYID= LATESTINVERSEORGANIZATIONEXCHANGERATE.TOCURRENCYID
              and LATESTINVERSEORGANIZATIONEXCHANGERATE.TYPECODE in (0,1)
              and LATESTINVERSEORGANIZATIONEXCHANGERATE.ISLATESTRATEFORASOFDATE = 1
              and dateadd(ms, 86399996, FINANCIALTRANSACTION.DATE) >= LATESTINVERSEORGANIZATIONEXCHANGERATE.ASOFDATESDTZ
              and dateadd(ms, 86399996, FINANCIALTRANSACTION.DATE) <= LATESTINVERSEORGANIZATIONEXCHANGERATE.NEXTRATEASOFDATEORMAXSDTZ
          where ((@CURRENCYID is not null
              and (@CURRENCYID <> @ORGANIZATIONCURRENCYID)
              and (@CURRENCYID <> RECOGNITIONCREDIT.BASECURRENCYID))            
            and (RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 1) --only donor challenge recognition credits have a REVENUE.DATE right now

            and FINANCIALTRANSACTION.DELETEDON is null
            and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
            and ((FINANCIALTRANSACTION.TYPECODE between 0 and 9) or (FINANCIALTRANSACTION.TYPECODE = 15))
        )