USP_REPORT_R68
Returns the data necessary for the R68 report.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@BUSINESSPROCESSSTATUSID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_REPORT_R68
(
@BUSINESSPROCESSSTATUSID uniqueidentifier
)
with execute as owner
as
set nocount on;
declare @TABLENAME nvarchar(255);
declare @COUNT integer;
declare @REPORTTYPE nvarchar(10);
declare @SQL nvarchar(4000);
declare @ISSPONSORSHIP bit = 0;
begin try
select
@TABLENAME = TABLENAME
from dbo.BUSINESSPROCESSOUTPUT
where BUSINESSPROCESSSTATUSID = @BUSINESSPROCESSSTATUSID
and TABLEKEY = 'R68_OUTPUT';
if dbo.UFN_R68_HASPENDINGRECORDS(@BUSINESSPROCESSSTATUSID) = 0
set @REPORTTYPE = 'Committed';
else
set @REPORTTYPE = 'Preview';
select @ISSPONSORSHIP = R68.RUNGIFTAIDSPONSORSHIPSONLY
from dbo.R68ONLINESUBMISSIONPARAMETERS
inner join dbo.R68 on R68ONLINESUBMISSIONPARAMETERS.R68PROCESSID = R68.ID
where R68ONLINESUBMISSIONPARAMETERS.ID = @BUSINESSPROCESSSTATUSID;
if @ISSPONSORSHIP = 0
begin
set @SQL = '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,
max(OUTPUT.DATE) as DATE,
sum(AMOUNTRECEIVED) as AMOUNTRECEIVED,
sum(AMOUNTCLAIMED) as AMOUNTCLAIMED,
@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 + ' as OUTPUT '
+ 'join dbo.FINANCIALTRANSACTIONLINEITEM ON FINANCIALTRANSACTIONLINEITEM.ID = output.REVENUESPLITID '
+ 'join dbo.FINANCIALTRANSACTION ON FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID '
+ 'left join dbo.UFN_SITEID_MAPFROM_REVENUESPLITID_BULK() [REVENUESPLITSITE] on [REVENUESPLITSITE].ID = [OUTPUT].REVENUESPLITID
cross apply
(select top 1
[DECLARATIONS].ID,
TAXDECLARATION.ALIASID,
TAXDECLARATION.ADDRESSID
from
dbo.UFN_DECLARATIONS_GET([OUTPUT].DATE, [REVENUESPLITSITE].SITEID, [FINANCIALTRANSACTION].CONSTITUENTID) [DECLARATIONS]
left join dbo.TAXDECLARATION on TAXDECLARATION.ID = [DECLARATIONS].ID
order by TAXDECLARATION.DATECHANGED DESC) [VALIDDECLARATIONS]
left join dbo.ALIAS ALIASES on ALIASES.ID=VALIDDECLARATIONS.ALIASID
left join dbo.ADDRESS PRIMARYADDRESS on PRIMARYADDRESS.CONSTITUENTID = FINANCIALTRANSACTION.CONSTITUENTID and PRIMARYADDRESS.ISPRIMARY = 1
left join dbo.ADDRESS SPECIFICADDRESS on SPECIFICADDRESS.ID = VALIDDECLARATIONS.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
group by FINANCIALTRANSACTION.CONSTITUENTID, ALIASES.ID, ALIASES.NAME, SPECIFICADDRESS.ID, PRIMARYADDRESS.ADDRESSBLOCK,PRIMARYADDRESS.POSTCODE,PRIMARYCOUNTRY.ISO3166,PRIMARYADDRESS.DESCRIPTION,
SPECIFICADDRESS.ADDRESSBLOCK,SPECIFICADDRESS.POSTCODE,SPECIFICCOUNTRY.ISO3166,SPECIFICADDRESS.DESCRIPTION
order by NAME;'
end
else
begin
set @SQL = '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,
max(OUTPUT.DATE) as DATE,
sum(AMOUNTRECEIVED) as AMOUNTRECEIVED,
sum(AMOUNTCLAIMED) as AMOUNTCLAIMED,
@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 + ' as OUTPUT '
+ 'join dbo.FINANCIALTRANSACTIONLINEITEM ON FINANCIALTRANSACTIONLINEITEM.ID = output.REVENUESPLITID '
+ 'join dbo.FINANCIALTRANSACTION ON FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID '
+ 'left join dbo.UFN_SITEID_MAPFROM_REVENUESPLITID_BULK() [REVENUESPLITSITE] on [REVENUESPLITSITE].ID = [OUTPUT].REVENUESPLITID
outer apply
(select top 1
[DECLARATIONS].ID,
TAXDECLARATION.ALIASID,
TAXDECLARATION.ADDRESSID
from
dbo.UFN_DECLARATIONS_GET([OUTPUT].DATE, [REVENUESPLITSITE].SITEID, [FINANCIALTRANSACTION].CONSTITUENTID) [DECLARATIONS]
left join dbo.TAXDECLARATION on TAXDECLARATION.ID = [DECLARATIONS].ID
order by TAXDECLARATION.DATECHANGED DESC) [VALIDDECLARATIONS]
left join dbo.ALIAS ALIASES on ALIASES.ID=VALIDDECLARATIONS.ALIASID
left join dbo.ADDRESS PRIMARYADDRESS on PRIMARYADDRESS.CONSTITUENTID = FINANCIALTRANSACTION.CONSTITUENTID and PRIMARYADDRESS.ISPRIMARY = 1
left join dbo.ADDRESS SPECIFICADDRESS on SPECIFICADDRESS.ID = VALIDDECLARATIONS.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
group by FINANCIALTRANSACTION.CONSTITUENTID, ALIASES.ID, ALIASES.NAME, SPECIFICADDRESS.ID, PRIMARYADDRESS.ADDRESSBLOCK,PRIMARYADDRESS.POSTCODE,PRIMARYCOUNTRY.ISO3166,PRIMARYADDRESS.DESCRIPTION,
SPECIFICADDRESS.ADDRESSBLOCK,SPECIFICADDRESS.POSTCODE,SPECIFICCOUNTRY.ISO3166,SPECIFICADDRESS.DESCRIPTION
order by NAME;'
end
exec sp_executesql @SQL, N'@REPORTTYPEIN nvarchar(10)', @REPORTTYPEIN = @REPORTTYPE;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch