UFN_REVENUESPLITGIFTAID_GIFTAIDEXPIRED
Returns whether a revenue split record has expired for Gift Aid.
Return
Return Type |
---|
bit |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUESPLITID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_REVENUESPLITGIFTAID_GIFTAIDEXPIRED
(
@REVENUESPLITID uniqueidentifier
)
returns bit
as
begin
declare @EXPIRED bit
set @EXPIRED = 0
declare @TRANSACTIONTYPECODE tinyint, @REVENUEDATE datetime, @TAXCLAIMNUMBER nvarchar(10)
select
@REVENUEDATE = cast(FINANCIALTRANSACTION.DATE as datetime),
@TRANSACTIONTYPECODE = FINANCIALTRANSACTION.TYPECODE,
@TAXCLAIMNUMBER = REVENUESPLITGIFTAID.TAXCLAIMNUMBER
from dbo.FINANCIALTRANSACTIONLINEITEM
inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
left join dbo.REVENUESPLITGIFTAID on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITGIFTAID.ID
where FINANCIALTRANSACTIONLINEITEM.ID = @REVENUESPLITID
and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
and FINANCIALTRANSACTION.DELETEDON is null
and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1
-- Make sure the revenue hasn't expired for Gift Aid support. If the tax claim number is set
-- then the split has been submitted already and so it won't have expired. Also, only Payments
-- are disqualified by this rule since they are only the transaction types submitted on the R68 report.
if coalesce(@TAXCLAIMNUMBER, '') = '' and @TRANSACTIONTYPECODE = 0 -- Payment
begin
declare @CLASSIFICATIONCODE tinyint
set @CLASSIFICATIONCODE = dbo.UFN_REVENUESPLITGIFTAID_GETCHARITYCLASSIFICATION(@REVENUESPLITID)
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
declare @HOWFARBACK int
set @HOWFARBACK = 6
--New rules effective Apr-01-2010 change the claim limit from 6 to 4 years across the board
if @CURRENTDATE >= '2010-04-01'
set @HOWFARBACK = 4
declare @CUTOFFDATE datetime
if @CLASSIFICATIONCODE = 0 -- Charitable trusts
begin
-- Claims by trusts must be made no later than 5 years after April 5th following the end of
-- the tax year (which is April 5th)
if datepart(m, @CURRENTDATE) < 4
-- Handle current date before April
set @CUTOFFDATE = cast((datepart(yyyy, @CURRENTDATE) - (@HOWFARBACK + 1)) as nvarchar(4)) + '-04-06'
else if datepart(m, @CURRENTDATE) = 4 and datepart(d, @CURRENTDATE) < 6
--Handle current date in April before the end of the tax year
set @CUTOFFDATE = cast((datepart(yyyy, @CURRENTDATE) - (@HOWFARBACK + 1)) as nvarchar(4)) + '-04-06'
else
-- Handle all other months
set @CUTOFFDATE = cast((datepart(yyyy, @CURRENTDATE) - @HOWFARBACK) as nvarchar(4)) + '-04-06'
end
else -- Other charities
begin
-- Claims must be made no later than 4 years after then end of the accounting period the revenue
-- belongs to
set @CUTOFFDATE = dateadd(year, -@HOWFARBACK, dbo.UFN_DATE_THISFISCALYEAR_FIRSTDAY(getdate(), 0))
end
if @REVENUEDATE < @CUTOFFDATE
set @EXPIRED = 1
end
return @EXPIRED
end