UFN_RECOGNITIONCREDIT_DONORCHALLENGE_GETRECOGNITIONS

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@REVENUESPLITID uniqueidentifier IN

Definition

Copy


CREATE function [dbo].[UFN_RECOGNITIONCREDIT_DONORCHALLENGE_GETRECOGNITIONS]
(
  @REVENUESPLITID uniqueidentifier
)
returns @RESULT table
(
    ID uniqueidentifier,
    CONSTITUENTID uniqueidentifier,
    CONSTITUENT nvarchar(255),
    DONOR nvarchar(255),
    RECOGNITIONCREDITFKID uniqueidentifier,
    AMOUNT money,
    EFFECTIVEDATE datetimeoffset,
    REVENUERECOGNITIONTYPECODEID uniqueidentifier,
    RECOGNITIONTYPE nvarchar(255),
    BASECURRENCYID uniqueidentifier,
    GROSSAMOUNT money,
    DESIGNATIONID uniqueidentifier,
    DESIGNATION nvarchar(255),
    DONORCHALLENGERECOGNITIONTYPECODE tinyint
)
as
begin

    declare @LINEITEMS table
    (
        ID uniqueidentifier,
        FINANCIALTRANSACTIONID uniqueidentifier,
        DONORCONSTITUENTID uniqueidentifier,
        DESIGNATIONID uniqueidentifier,
        DONORCHALLENGERECOGNITIONTYPECODE tinyint,
        DONORCHALLENGEENCUMBERED_AMOUNT money,
        DONORCHALLENGE_NAME nvarchar(255)
    );

    insert into @LINEITEMS
    select
      FTLI.ID,
      FTLI.FINANCIALTRANSACTIONID,
      FT.CONSTITUENTID as DONORCONSTITUENTID,
      RSE.DESIGNATIONID,
      0 as DONORCHALLENGERECOGNITIONTYPECODE,
      null as DONORCHALLENGEENCUMBERED_AMOUNT,
      null DONORCHALLENGE_NAME
    from
      dbo.FINANCIALTRANSACTIONLINEITEM FTLI
    inner join
      dbo.REVENUESPLIT_EXT RSE on RSE.ID = FTLI.ID
    inner join
      dbo.FINANCIALTRANSACTION FT on FT.ID = FTLI.FINANCIALTRANSACTIONID
    inner join
      dbo.CONSTITUENT on CONSTITUENT.ID = FT.CONSTITUENTID
    where
      FTLI.ID = @REVENUESPLITID

    union all

    select
      FTLI.ID,
      FTLI.FINANCIALTRANSACTIONID,
      DC.EXTERNALSPONSORID as DONORCONSTITUENTID,
      RSE.DESIGNATIONID,
      1 as DONORCHALLENGERECOGNITIONTYPECODE,
      DCE.AMOUNT as DONORCHALLENGEENCUMBERED_AMOUNT,
      DC.NAME DONORCHALLENGE_NAME
    from
      dbo.FINANCIALTRANSACTIONLINEITEM FTLI
    inner join
      dbo.REVENUESPLIT_EXT RSE on RSE.ID = FTLI.ID
    inner join
      dbo.DONORCHALLENGEENCUMBERED DCE on DCE.MATCHEDREVENUEID = FTLI.FINANCIALTRANSACTIONID and
                                          DCE.DESIGNATIONID = RSE.DESIGNATIONID
    inner join
      dbo.DONORCHALLENGE DC on DC.ID = DCE.DONORCHALLENGEID
    inner join
      dbo.CONSTITUENT on CONSTITUENT.ID = DC.EXTERNALSPONSORID
    inner join
      dbo.DESIGNATION on DESIGNATION.ID = RSE.DESIGNATIONID
    where
      DCE.REVENUESPLITID = @REVENUESPLITID

  insert into @RESULT
  select
    RECOGNITION.ID,
    RECOGNITION.CONSTITUENTID,
    RECOGNITION.NAME as CONSTITUENT,
    case LI.DONORCHALLENGERECOGNITIONTYPECODE
      when 1
        then NF.NAME + ' matched ' + dbo.UFN_CURRENCY_GETSYMBOL(RECOGNITION.BASECURRENCYID) + cast(LI.DONORCHALLENGEENCUMBERED_AMOUNT as varchar(20)) + ' for ' + LI.DONORCHALLENGE_NAME
      else
        NF.NAME
    end as DONOR,
    LI.ID as RECOGNITIONCREDITFKID,
    RECOGNITION.AMOUNT,
    RECOGNITION.EFFECTIVEDATE,
    RECOGNITION.REVENUERECOGNITIONTYPECODEID,
    RECOGNITION.RECOGNITIONTYPE,
    RECOGNITION.BASECURRENCYID,
    RECOGNITION.GROSSAMOUNT,
    DESIGNATION.ID as DESIGNATIONID,
    DESIGNATION.NAME as DESIGNATION,
    LI.DONORCHALLENGERECOGNITIONTYPECODE
  from
    @LINEITEMS LI
  cross apply
    dbo.UFN_REVENUE_GETRECOGNITIONS_2(LI.ID) as RECOGNITION
  cross apply
    dbo.UFN_CONSTITUENT_DISPLAYNAME(LI.DONORCONSTITUENTID) NF
  left join
    dbo.DESIGNATION on LI.DESIGNATIONID = DESIGNATION.ID
  where
    LI.DONORCHALLENGERECOGNITIONTYPECODE = 0 or
    (
      LI.DONORCHALLENGERECOGNITIONTYPECODE = 1 and
      (select CONSTITUENTID from dbo.FINANCIALTRANSACTION where ID = LI.FINANCIALTRANSACTIONID) <> RECOGNITION.CONSTITUENTID
    )

  union all

  --recognition credits from internally sponsored donor challenge

  select
    RECOGNITIONCREDIT.ID,
    RECOGNITIONCREDIT.CONSTITUENTID,
    NF.NAME as CONSTITUENT,
    DONORCHALLENGESPONSORCODE.DESCRIPTION  + ' matched ' + dbo.UFN_CURRENCY_GETSYMBOL(RECOGNITIONCREDIT.BASECURRENCYID) + cast(DONORCHALLENGEENCUMBERED.AMOUNT as varchar(20)) + ' for ' + DONORCHALLENGE.NAME as DONOR,
    DONORCHALLENGEENCUMBERED.ID as RECOGNITIONCREDITFKID,
    RECOGNITIONCREDIT.AMOUNT,
    RECOGNITIONCREDIT.EFFECTIVEDATE,
    RECOGNITIONCREDIT.USERRECOGNITIONTYPECODEID as REVENUERECOGNITIONTYPECODEID,
    REVENUERECOGNITIONTYPECODE.DESCRIPTION as RECOGNITIONTYPE,
    RECOGNITIONCREDIT.BASECURRENCYID, 
    RECOGNITIONCREDIT.AMOUNT as GROSSAMOUNT,
    DESIGNATION.ID as DESIGNATIONID,
    DESIGNATION.NAME as DESIGNATION,
    2 as DONORCHALLENGERECOGNITIONTYPECODE --Internal

  from 
    dbo.RECOGNITIONCREDIT
  inner join
    dbo.CONSTITUENT on RECOGNITIONCREDIT.CONSTITUENTID = CONSTITUENT.ID
  cross apply
    dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
  inner join
    dbo.DESIGNATION on RECOGNITIONCREDIT.DESIGNATIONID = DESIGNATION.ID
  inner join
    dbo.DONORCHALLENGEENCUMBERED on RECOGNITIONCREDIT.DONORCHALLENGEENCUMBEREDID = DONORCHALLENGEENCUMBERED.ID
  inner join
    dbo.DONORCHALLENGE on DONORCHALLENGEENCUMBERED.DONORCHALLENGEID = DONORCHALLENGE.ID
  left join
    dbo.DONORCHALLENGESPONSORCODE on DONORCHALLENGE.INTERNALSPONSORCODEID = DONORCHALLENGESPONSORCODE.ID
  left join
    dbo.REVENUERECOGNITIONTYPECODE on RECOGNITIONCREDIT.USERRECOGNITIONTYPECODEID = REVENUERECOGNITIONTYPECODE.ID
  where
    DONORCHALLENGEENCUMBERED.REVENUESPLITID = @REVENUESPLITID and
    RECOGNITIONCREDIT.RECOGNITIONCREDITTYPECODE = 1 --donor challenge


    return;
end