USP_REPORT_R68REFUNDS
Returns the data necessary for the R68 Refund report.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BUSINESSPROCESSSTATUSID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_REPORT_R68REFUNDS
(
@BUSINESSPROCESSSTATUSID uniqueidentifier
)
with execute as owner
as
set nocount on;
declare @TABLENAME nvarchar(255);
declare @REPORTTYPE nvarchar(10);
declare @SQL nvarchar(max);
begin try
select
@TABLENAME = TABLENAME
from dbo.BUSINESSPROCESSOUTPUT
where BUSINESSPROCESSSTATUSID = @BUSINESSPROCESSSTATUSID
and TABLEKEY = 'R68REFUNDS_OUTPUT';
if dbo.UFN_R68_HASPENDINGRECORDS(@BUSINESSPROCESSSTATUSID) = 0
set @REPORTTYPE = 'Committed';
else
set @REPORTTYPE = 'Preview';
set @SQL = N'
with DECLARATIONS_CTE as (
select
R68REFUNDDETAILS.ID as REFUNDDETAILSID,
DECLARATIONS.ID as TAXDECLARATIONID,
row_number() over (partition by R68REFUNDDETAILS.ID order by DECLARATIONS.DATETAXDECLARATIONCHANGED desc) as ROWNUM
from
dbo.' + @TABLENAME;
set @SQL = @SQL + N' as R68REFUNDDETAILS
join
dbo.FINANCIALTRANSACTIONLINEITEM ON FINANCIALTRANSACTIONLINEITEM.ID = R68REFUNDDETAILS.REVENUESPLITID
join
dbo.FINANCIALTRANSACTION ON FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
left join
dbo.UFN_DECLARATIONS_GETWITHCCRN_BULK() DECLARATIONS
on
DECLARATIONS.CONSTITUENTID = FINANCIALTRANSACTION.CONSTITUENTID and
DECLARATIONS.CHARITYCLAIMREFERENCENUMBER = R68REFUNDDETAILS.ORIGINALCHARITYCLAIMREFERENCENUMBER and
DECLARATIONS.DECLARATIONSTARTS <= R68REFUNDDETAILS.MAXGIFTDATEFROMORIGINALCLAIM and
DECLARATIONS.DECLARATIONENDS >= R68REFUNDDETAILS.MAXGIFTDATEFROMORIGINALCLAIM
)
select
--determine whether there is an ALIAS
case
--when the tax declaration specifies an alias to use
when ALIASES.ID is not null then ALIASES.NAME
--when there is no alias specified use the constituent name as before
else dbo.UFN_CONSTITUENT_BUILDNAME(FINANCIALTRANSACTION.CONSTITUENTID)
end as NAME,
ORIGINALTAXCLAIMNUMBER,
MAXGIFTDATEFROMORIGINALCLAIM,
TOTALGIFTAMOUNTFROMORIGINALCLAIM,
TOTALTAXCLAIMAMOUNTFROMORIGINALCLAIM,
ORIGINALGIFTAMOUNT SPLITAMOUNT,
case
when ORIGINALTRANSITIONALTAXCLAIMAMOUNT = 0 then ORIGINALBASETAXCLAIMAMOUNT
when dbo.UFN_REVENUESPLITGIFTAID_TRANSITIONALREFLIEFEXPIRED(REVENUESPLITID, INCLUDETRANSITIONALAMOUNTCODE) = 0 then ORIGINALBASETAXCLAIMAMOUNT + ORIGINALTRANSITIONALTAXCLAIMAMOUNT
else ORIGINALBASETAXCLAIMAMOUNT
end * -1 REFUNDAMOUNT,
case REFUNDSOURCECODE
when 0 then ''Eligibility changed''
when 1 then ''Manually refunded''
when 2 then ''Application adjusted''
when 3 then ''Application deleted''
when 4 then ''Charity claim reference number changed''
end as REFUNDSOURCE,
@REPORTTYPEIN as REPORTTYPE,
--determine the address to use
case
--when the tax declaration specifies an address to use
when SPECIFICADDRESS.ID is not null and SPECIFICCOUNTRY.ISO3166 = ''GB''
then cast(dbo.UFN_ADDRESS_GETADDRESSLINE(1, SPECIFICADDRESS.ADDRESSBLOCK) as nvarchar(50))
when SPECIFICADDRESS.ID is not null
then cast(SPECIFICADDRESS.DESCRIPTION as nvarchar(50))
--when there is no address specified on the tax declaration use the primary address as previously
when PRIMARYCOUNTRY.ISO3166 = ''GB''
then cast(dbo.UFN_ADDRESS_GETADDRESSLINE(1, PRIMARYADDRESS.ADDRESSBLOCK) as nvarchar(50))
else cast(PRIMARYADDRESS.DESCRIPTION as nvarchar(50))
end as ADDRESSBLOCK,
case
--when the tax declaration specifies an address use this for the postcode
when SPECIFICADDRESS.ID is not null and SPECIFICCOUNTRY.ISO3166 = ''GB''
then SPECIFICADDRESS.POSTCODE
when SPECIFICADDRESS.ID is not null
then null
--when there is no address specified on the tax declaration use the postcode on hte primary address
when PRIMARYCOUNTRY.ISO3166 = ''GB''
then PRIMARYADDRESS.POSTCODE
else null
end as POSTCODE
from
dbo.' + @TABLENAME
set @SQL = @SQL + N' as [OUTPUT]
join
dbo.FINANCIALTRANSACTIONLINEITEM ON FINANCIALTRANSACTIONLINEITEM.ID = [OUTPUT].REVENUESPLITID
join
dbo.FINANCIALTRANSACTION ON FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
left join
DECLARATIONS_CTE on DECLARATIONS_CTE.REFUNDDETAILSID = [OUTPUT].ID and DECLARATIONS_CTE.ROWNUM = 1
left join
dbo.TAXDECLARATION on TAXDECLARATION.ID = DECLARATIONS_CTE.TAXDECLARATIONID
left join
dbo.ALIAS ALIASES on ALIASES.ID = TAXDECLARATION.ALIASID
left join
dbo.[ADDRESS] PRIMARYADDRESS on PRIMARYADDRESS.CONSTITUENTID = [FINANCIALTRANSACTION].CONSTITUENTID and PRIMARYADDRESS.ISPRIMARY = 1
left join
dbo.[ADDRESS] SPECIFICADDRESS on SPECIFICADDRESS.ID = TAXDECLARATION.ADDRESSID
left join
dbo.COUNTRY PRIMARYCOUNTRY on PRIMARYADDRESS.COUNTRYID = PRIMARYCOUNTRY.ID
left join
dbo.COUNTRY SPECIFICCOUNTRY on SPECIFICADDRESS.COUNTRYID = SPECIFICCOUNTRY.ID
where
dbo.FINANCIALTRANSACTION.DELETEDON is NULL
order by NAME'
exec sp_executesql @SQL, N'@REPORTTYPEIN nvarchar(10)', @REPORTTYPEIN = @REPORTTYPE;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch