UFN_GIFTAIDREVENUESPLIT_GETTAXCLAIMELIGIBILITYSTATUS_INLINE_2

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@REVENUESPLITID uniqueidentifier IN

Definition

Copy


                        -- NOTE:  Any changes here should also be made in UFN_GIFTAIDREVENUESPLIT_GETTAXCLAIMELIGIBILITYSTATUS_INLINE, UFN_VALIDDECLARATION, or (depending on which

            -- section is changed) UFN_GIFTAIDREVENUESPLIT_GETTAXCLAIMELIGIBILITYSTATUS.

            /* 
                ELIGIBILITY 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
            */
            CREATE function dbo.UFN_GIFTAIDREVENUESPLIT_GETTAXCLAIMELIGIBILITYSTATUS_INLINE_2
                        (
                                @REVENUESPLITID uniqueidentifier
                        )
            returns table
            as
            return
            (
                select
                    REVENUESPLITID,
                    ELIGIBILITY,
                    DATETAXDECLARATIONCHANGED
                from
                (
                    select top 1
                        FINANCIALTRANSACTIONLINEITEM.ID as REVENUESPLITID,
                        case
                            when REVENUESPLITGIFTAID.ISSPONSORSHIP = 1 then 4
                            when REVENUESPLITGIFTAID.ISCOVENANT = 1 then 3
                            -- Need to check DOESNOTPAYSTAXDECLARATION.ID in case this is a payment to an event with different

                            -- sites that could potentially have different CCRNs.  In all other cases, if PAYSTAXDECLARATION.ID is 

                            -- set then DOESNOTPAYSTAXDECLARATION.ID should be null since conflicting declarations with overlapping

                            -- dates aren't permitted for the same CCRN.

                            when PAYSTAXDECLARATION.ID is not null and DOESNOTPAYSTAXDECLARATION.ID is null then 2
                            when DOESNOTPAYSTAXDECLARATION.ID is not null then 1
                            else 0
                        end ELIGIBILITY,
                        (
                            select 
                                max(DATETAXDECLARATIONCHANGED)
                            from dbo.UFN_DECLARATIONS_GET(REVENUEWITHCALCULATEDDATE.[DATE], REVENUESPLITSITE.SITEID, REVENUEWITHCALCULATEDDATE.CONSTITUENTID)
                        ) as DATETAXDECLARATIONCHANGED  
                    from dbo.FINANCIALTRANSACTIONLINEITEM 
                                        inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                    inner join
                    (
                        select
                            FINANCIALTRANSACTION.ID,
                            case
                                when TYPECODE = 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 as [DATE],
                            FINANCIALTRANSACTION.CONSTITUENTID
                        from dbo.FINANCIALTRANSACTION
                        left join dbo.REVENUESCHEDULE on REVENUESCHEDULE.ID = FINANCIALTRANSACTION.ID
                    ) as REVENUEWITHCALCULATEDDATE on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = REVENUEWITHCALCULATEDDATE.ID
                    inner join dbo.REVENUESPLITGIFTAID on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITGIFTAID.ID
                    left join dbo.UFN_SITEID_MAPFROM_REVENUESPLITID_BULK() as REVENUESPLITSITE on REVENUESPLITSITE.ID = FINANCIALTRANSACTIONLINEITEM.ID
                    outer apply
                    (
                        select
                            ID
                        from dbo.UFN_DECLARATIONS_GET(REVENUEWITHCALCULATEDDATE.[DATE], REVENUESPLITSITE.SITEID, REVENUEWITHCALCULATEDDATE.CONSTITUENTID)
                        where PAYSTAXCODE = 1
                    ) PAYSTAXDECLARATION
                    outer apply
                    (
                        select
                            ID
                        from dbo.UFN_DECLARATIONS_GET(REVENUEWITHCALCULATEDDATE.[DATE], REVENUESPLITSITE.SITEID, REVENUEWITHCALCULATEDDATE.CONSTITUENTID)
                        where PAYSTAXCODE = 0
                    ) DOESNOTPAYSTAXDECLARATION
                        where
                            FINANCIALTRANSACTIONLINEITEM.ID = @REVENUESPLITID
                        order by
                            ISSPONSORSHIP desc
                            ISCOVENANT desc ,
                            DOESNOTPAYSTAXDECLARATION.ID desc
                            PAYSTAXDECLARATION.ID asc
                ) as ALLDECLARATIONS
            )