UFN_GIFTAIDREVENUESPLIT_GETTAXCLAIMELIGIBILITYSTATUS

Returns the tax claim eligibility status of a revenue split.

Return

Return Type
tinyint

Parameters

Parameter Parameter Type Mode Description
@REVENUESPLITID uniqueidentifier IN

Definition

Copy


            /* 
                Status codes:
                    0 - No valid declaration
                    1 - Declaration is not eligible for split
                    2 - Constituent has valid declaration for split
                    3 - Split is covenant gift
                    4 - Split is Gift Aid sponsorship
            */
            -- NOTE:  Any changes here should also be made in UFN_GIFTAIDREVENUESPLIT_GETTAXCLAIMELIGIBILITYSTATUS_INLINE.

            -- TODO:  At some point, this function should be changed to leverage UFN_GIFTAIDREVENUESPLIT_GETTAXCLAIMELIGIBILITYSTATUS_INLINE

            -- so the logic is consolidated but the change would be too disruptive to apply during 

            -- regression.

            CREATE function dbo.UFN_GIFTAIDREVENUESPLIT_GETTAXCLAIMELIGIBILITYSTATUS
            (
                @REVENUESPLITID uniqueidentifier
            )
            returns tinyint
            with execute as caller
            as begin
                declare @ELIGIBILITYSTATUSCODE tinyint;
                set @ELIGIBILITYSTATUSCODE = 0;

                declare @TRANSACTIONTYPECODE tinyint = 0;
                declare @ISCOVENANT bit;
                declare @ISSPONSORSHIP bit;
                select 
                    @TRANSACTIONTYPECODE = FINANCIALTRANSACTION.TYPECODE,
                    @ISCOVENANT = RSGA.ISCOVENANT,
                    @ISSPONSORSHIP = RSGA.ISSPONSORSHIP
                from dbo.FINANCIALTRANSACTION
                inner join dbo.FINANCIALTRANSACTIONLINEITEM RS on FINANCIALTRANSACTION.ID = RS.FINANCIALTRANSACTIONID
                inner join dbo.REVENUESPLITGIFTAID RSGA on RSGA.ID = RS.ID
                where RSGA.ID = @REVENUESPLITID;

                if coalesce(@ISCOVENANT, 0) = 0 and coalesce(@ISSPONSORSHIP, 0) = 0
                begin
                    declare @DATE as datetime
                    declare    @CONSTITUENTID as uniqueidentifier;
                    declare    @DESIGNATIONID as uniqueidentifier;
                    declare    @REGISTRANTID as uniqueidentifier;
                    declare    @MEMBERSHIPID as uniqueidentifier;
                    select 
                        @DATE = case @TRANSACTIONTYPECODE 
                                    when 2 then 
                                        case REVENUESCHEDULE.STATUSCODE
                                            when 0 then 
                                                case
                                                    when REVENUESCHEDULE.NEXTTRANSACTIONDATE > REVENUESCHEDULE.ENDDATE then REVENUESCHEDULE.ENDDATE 
                                                    else REVENUESCHEDULE.NEXTTRANSACTIONDATE
                                                end
                                            else
                                                    coalesce((select DATE from dbo.UFN_RECURRINGGIFT_GETNEXTINSTALLMENTINFO(FINANCIALTRANSACTION.ID, null)), getdate())
                                        end
                                    else FINANCIALTRANSACTION.DATE 
                                end,
                    @CONSTITUENTID = FINANCIALTRANSACTION.CONSTITUENTID,
                    @DESIGNATIONID = REVENUESPLIT_EXT.DESIGNATIONID,
                    @REGISTRANTID = EVENTREGISTRANTPAYMENT.REGISTRANTID,
                    @MEMBERSHIPID = MEMBERSHIPLEVEL.MEMBERSHIPPROGRAMID
                    from dbo.FINANCIALTRANSACTIONLINEITEM 
          inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                    inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
                    left join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = FINANCIALTRANSACTION.ID
                    left join dbo.MEMBERSHIPTRANSACTION on FINANCIALTRANSACTIONLINEITEM.ID = MEMBERSHIPTRANSACTION.REVENUESPLITID
                    left join dbo.MEMBERSHIPLEVEL on MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID = MEMBERSHIPLEVEL.ID
                    left join dbo.EVENTREGISTRANTPAYMENT on FINANCIALTRANSACTIONLINEITEM.ID = EVENTREGISTRANTPAYMENT.PAYMENTID
                    where FINANCIALTRANSACTIONLINEITEM.ID = @REVENUESPLITID;

                    declare @ELIGIBLE tinyint;
                    set @ELIGIBLE = dbo.UFN_VALIDDECLARATION(@DATE,@CONSTITUENTID,@DESIGNATIONID,@REGISTRANTID,@MEMBERSHIPID)

                    if @ELIGIBLE = 2 
                        set @ELIGIBILITYSTATUSCODE = 2;
                    else if @ELIGIBLE = 1 
                        set @ELIGIBILITYSTATUSCODE = 1;
                end
                else if coalesce(@ISCOVENANT, 0) = 1
                begin
                    --covenant gifts and Gift Aid sponsorships are always eligible

                    set @ELIGIBILITYSTATUSCODE = 3;
                end
                else if coalesce(@ISSPONSORSHIP, 0) = 1
                begin
                    --covenant gifts and Gift Aid sponsorships are always eligible

                    set @ELIGIBILITYSTATUSCODE = 4;
                end

                return @ELIGIBILITYSTATUSCODE;                
            end