USP_DATALIST_DONORCHALLENGEMATCHEDFUNDS

A datalist of all matched funds for a given donor challenge.

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@CURRENTAPPUSERID uniqueidentifier IN Input parameter indicating the ID of the current user.
@DATERANGECODE smallint IN Date range

Definition

Copy


CREATE procedure dbo.USP_DATALIST_DONORCHALLENGEMATCHEDFUNDS
(
  @ID uniqueidentifier,
  @CURRENTAPPUSERID uniqueidentifier,
  @DATERANGECODE smallint = 6
)
as                 
  set nocount on;

  declare @STARTDATE datetime;
  declare @ENDDATE datetime;

  exec dbo.USP_RESOLVEDATEFILTER @DATERANGECODE, @STARTDATE output, @ENDDATE output

  declare @BASECURRENCYID uniqueidentifier;
  select
    @BASECURRENCYID = BASECURRENCYID
  from
    dbo.DONORCHALLENGE
  where
    ID = @ID;

  select
    DCE.ID,
    DCE.REVENUESPLITID,
    REVENUE.ID as REVENUEID,
    REVENUE.DATE,
    CONSTITUENT.NAME,
    CONSTITUENT.LOOKUPID,
    case
        when @BASECURRENCYID = REVENUESPLIT.TRANSACTIONCURRENCYID
            then REVENUESPLIT.TRANSACTIONAMOUNT
        else dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(REVENUESPLIT.ID, @BASECURRENCYID)
    end as AMOUNT,
    case when REVENUESPLIT.DESIGNATIONID is null then
      MEMBERSHIPLEVEL.NAME
    else
      dbo.UFN_DESIGNATION_BUILDNAME(REVENUESPLIT.DESIGNATIONID)
    end as DESIGNATIONNAME,
    DCE.MATCHEDREVENUEID,
    DCE.AMOUNT as MATCHEDAMOUNT,
    dbo.UFN_DESIGNATION_BUILDNAME(DCE.DESIGNATIONID) MATCHEDDESIGNATIONNAME,
    null as PARENTID,
    REVENUE.TRANSACTIONTYPECODE,
    DCE.BASECURRENCYID
  from
    dbo.DONORCHALLENGEENCUMBERED DCE
  inner join
    dbo.REVENUESPLIT on REVENUESPLIT.ID = DCE.REVENUESPLITID
  inner join
    dbo.REVENUE on REVENUE.ID = REVENUESPLIT.REVENUEID
  inner join
    dbo.CONSTITUENT on CONSTITUENT.ID = REVENUE.CONSTITUENTID
  left join
    dbo.MEMBERSHIPTRANSACTION on MEMBERSHIPTRANSACTION.REVENUESPLITID = REVENUESPLIT.ID
  left join
    dbo.MEMBERSHIPLEVEL on MEMBERSHIPLEVEL.ID = MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID
  where
    DCE.DONORCHALLENGEID = @ID
    and REVENUE.DATE between @STARTDATE and @ENDDATE
    and DCE.STATUSTYPECODE = 1
    and REVENUESPLIT.APPLICATIONCODE <> 2
union all    
  select
    DCE.ID,
    DCE.REVENUESPLITID,
    PAYMENT.ID as REVENUEID,
    PAYMENT.DATE,
    CONSTITUENT.NAME,
    CONSTITUENT.LOOKUPID,
    case
        when @BASECURRENCYID = PAYMENTSPLIT.TRANSACTIONCURRENCYID
            then PAYMENTSPLIT.TRANSACTIONAMOUNT
        else dbo.UFN_REVENUESPLIT_GETAMOUNTINCURRENCY(PAYMENTSPLIT.ID, @BASECURRENCYID)
    end as AMOUNT,
    dbo.UFN_DESIGNATION_BUILDNAME(PAYMENTSPLIT.DESIGNATIONID) DESIGNATIONNAME,
    DCE.MATCHEDREVENUEID,
    DCE.AMOUNT as MATCHEDAMOUNT,
    dbo.UFN_DESIGNATION_BUILDNAME(DCE.DESIGNATIONID) MATCHEDDESIGNATIONNAME,
    (select top 1 REVENUESPLIT.ID 
    from dbo.INSTALLMENTSPLITPAYMENT
      inner join dbo.INSTALLMENTSPLIT 
        on INSTALLMENTSPLITPAYMENT.INSTALLMENTSPLITID = INSTALLMENTSPLIT.ID
      inner join dbo.REVENUESPLIT 
        on INSTALLMENTSPLIT.PLEDGEID = REVENUESPLIT.REVENUEID and INSTALLMENTSPLIT.DESIGNATIONID = REVENUESPLIT.DESIGNATIONID
      where INSTALLMENTSPLITPAYMENT.PAYMENTID = PAYMENTSPLIT.ID) PARENTID,
    PAYMENT.TRANSACTIONTYPECODE,
    DCE.BASECURRENCYID
  from
    dbo.DONORCHALLENGEENCUMBERED DCE
  inner join dbo.REVENUESPLIT  PAYMENTSPLIT
    on PAYMENTSPLIT.ID = DCE.REVENUESPLITID
  inner join dbo.REVENUE PAYMENT
    on PAYMENT.ID = PAYMENTSPLIT.REVENUEID
  inner join
    dbo.CONSTITUENT on CONSTITUENT.ID = PAYMENT.CONSTITUENTID
  where
    DCE.DONORCHALLENGEID = @ID
    and DCE.STATUSTYPECODE = 1 
    and PAYMENTSPLIT.APPLICATIONCODE = 2
    and PAYMENT.DATE between @STARTDATE and @ENDDATE
  order by
    DATE desc, AMOUNT desc