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
)