UFN_GIFTAIDREVENUESPLIT_GETTAXCLAIMELIGIBILITYSTATUS_INLINE

Returns tax claim eligibility statuses for revenue splits.

Return

Return Type
table

Definition

Copy


            -- NOTE:  Any changes here should also be made in 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()
            returns table
            as
            return
            (
                select
                    REVENUESPLITID,
                    ELIGIBILITY,
                    DATETAXDECLARATIONCHANGED
                from
                (
                    select
                        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,
                        row_number() over (partition by FINANCIALTRANSACTIONLINEITEM.ID order by ISSPONSORSHIP desc, ISCOVENANT desc, DOESNOTPAYSTAXDECLARATION.ID desc, PAYSTAXDECLARATION.ID asc) as ROWNUM
                    from dbo.FINANCIALTRANSACTIONLINEITEM inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                    inner join
                    (
                        select
                            FINANCIALTRANSACTION.ID,
                            case
                                when FINANCIALTRANSACTION.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
                ) as ALLDECLARATIONS
                where
                    ROWNUM = 1
            )