USP_RECOGNITIONCREDITS_ADDBASEDONMGCPREFERENCES

Add matching gift recognition credits based on preference.

Parameters

Parameter Parameter Type Mode Description
@SPLITS xml IN
@APPLICATIONID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN
@REVENUEGIVENANONYMOUSLY bit IN

Definition

Copy


CREATE procedure dbo.USP_RECOGNITIONCREDITS_ADDBASEDONMGCPREFERENCES
(
  @SPLITS xml,
  @APPLICATIONID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @CURRENTDATE datetime = null,
  @REVENUEGIVENANONYMOUSLY bit = null
)
as
begin
    declare @AUTOADDMGPAYMENTCREDITTODONOR bit;
    declare @PAYMENTDEFAULTCREDITTYPEID uniqueidentifier;
    declare @MGPAYMENTAPPLYRECOGNITIONTYPECODE tinyint;

    declare @AUTOADDMGPAYMENTCREDITTOMATCHINGORG bit;
    declare @MATCHINGORGPAYMENTDEFAULTCREDITTYPEID uniqueidentifier;

    if @REVENUEGIVENANONYMOUSLY = null
        set @REVENUEGIVENANONYMOUSLY = 0;

    select 
        @AUTOADDMGPAYMENTCREDITTODONOR = ADDRECOGNITIONCREDITSONMGPAYMENTAPPLY,
        @PAYMENTDEFAULTCREDITTYPEID = 
            case MGPAYMENTAPPLYRECOGNITIONTYPECODE
                when 0 then PAYMENTREVENUERECOGNITIONTYPECODEID
                when 1 then null
            end,
        @MGPAYMENTAPPLYRECOGNITIONTYPECODE = MGPAYMENTAPPLYRECOGNITIONTYPECODE,
        @AUTOADDMGPAYMENTCREDITTOMATCHINGORG = ADDRECOGNITIONCREDITSTOMATCHINGORGONMGPAYMENTAPPLY,
        @MATCHINGORGPAYMENTDEFAULTCREDITTYPEID = MATCHINGORGPAYMENTREVENUERECOGNITIONTYPECODEID
    from
        dbo.MATCHINGGIFTPREFERENCEINFO;

  declare @DEFAULTANONYMOUSRECOGNITION bit = 0;

  --Select the value for default anonymous recognition setting

  select @DEFAULTANONYMOUSRECOGNITION = DEFAULTANONYMOUSRECOGNITION
  from dbo.RECOGNITIONDEFAULT

    if @AUTOADDMGPAYMENTCREDITTODONOR = 1
    begin
        declare @ORIGINALDONORID uniqueidentifier;
        declare @ORIGINALDONATIONDATE datetime;
        declare @ORIGINALGIFTID uniqueidentifier;

        select
            @ORIGINALDONORID = REVENUE.CONSTITUENTID,
            @ORIGINALDONATIONDATE = REVENUE.DATE,
            @ORIGINALGIFTID = REVENUE.ID
        from
            dbo.REVENUE
        inner join 
            dbo.REVENUEMATCHINGGIFT on REVENUEMATCHINGGIFT.MGSOURCEREVENUEID = REVENUE.ID
        where
            REVENUEMATCHINGGIFT.ID = @APPLICATIONID
            and (@REVENUEGIVENANONYMOUSLY = 0 or @DEFAULTANONYMOUSRECOGNITION = 1)

        --Make sure there's actually a donor to recognize (i.e., it's not an unapplied matching gift, 

        --the original donor wasn't anonymous, etc.)

        if @ORIGINALDONORID is not null
        begin
            --JamesWill 2010-11-05 WI105002 Respect the matching gift preferences setting for how to create recognitions

            if @MGPAYMENTAPPLYRECOGNITIONTYPECODE = 0
            begin
                exec dbo.USP_RECOGNITIONCREDIT_ADDDEFAULTSFORMGSPLITS @SPLITS, @ORIGINALDONORID, @ORIGINALDONATIONDATE, @PAYMENTDEFAULTCREDITTYPEID, @CHANGEAGENTID, @CURRENTDATE;
            end

            if @MGPAYMENTAPPLYRECOGNITIONTYPECODE = 1
            begin
                exec dbo.USP_RECOGNITIONCREDIT_ADDTOGROUPMEMBERS @SPLITS, @ORIGINALDONORID, @ORIGINALDONATIONDATE, @ORIGINALGIFTID, @PAYMENTDEFAULTCREDITTYPEID, @CHANGEAGENTID, @CURRENTDATE, 1;
            end
        end
    end

    if @AUTOADDMGPAYMENTCREDITTOMATCHINGORG = 1
    begin
        declare @MATCHINGORGID uniqueidentifier
        declare @PAYMENTDATE datetime

        select
            @MATCHINGORGID = REVENUE.CONSTITUENTID,
            @PAYMENTDATE = REVENUE.DATE
        from 
            dbo.INSTALLMENTSPLITPAYMENT 
            inner join dbo.REVENUESPLIT on REVENUESPLIT.ID = INSTALLMENTSPLITPAYMENT.PAYMENTID
            inner join dbo.REVENUE on REVENUE.ID = REVENUESPLIT.REVENUEID
        where
            INSTALLMENTSPLITPAYMENT.PLEDGEID = @APPLICATIONID
            and (REVENUE.GIVENANONYMOUSLY = 0 or @DEFAULTANONYMOUSRECOGNITION = 1)

        --Make sure there's actually a donor to recognize (i.e., it's not an unapplied matching gift, 

        --the matching org wasn't anonymous, etc.)

        if @MATCHINGORGID is not null
        begin
            exec dbo.USP_RECOGNITIONCREDIT_ADDDEFAULTSFORMGSPLITS @SPLITS, @MATCHINGORGID, @PAYMENTDATE, @MATCHINGORGPAYMENTDEFAULTCREDITTYPEID, @CHANGEAGENTID, @CURRENTDATE;
        end
    end

end