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
)