USP_DATALIST_R68ONLINESUBMISSIONDATAFORPROCESS

Parameters

Parameter Parameter Type Mode Description
@CONTEXTID uniqueidentifier IN

Definition

Copy


      CREATE procedure dbo.USP_DATALIST_R68ONLINESUBMISSIONDATAFORPROCESS
                                (
                                    @CONTEXTID uniqueidentifier
                                )
                with execute as owner
                                as
                                    set nocount on;

                                        declare @TABLENAME nvarchar(255);
                                        declare @ISSPONSORSHIP bit = 0;
                                        declare @SQL nvarchar(4000);

                                     select 
                                    @TABLENAME = TABLENAME
                                from dbo.BUSINESSPROCESSOUTPUT 
                                where BUSINESSPROCESSSTATUSID = @CONTEXTID 
                                    and TABLEKEY = 'R68_OUTPUT';

                                        select @ISSPONSORSHIP = R68.RUNGIFTAIDSPONSORSHIPSONLY
                                        from dbo.R68ONLINESUBMISSIONPARAMETERS
                                        inner join dbo.R68 on R68ONLINESUBMISSIONPARAMETERS.R68PROCESSID = R68.ID
                                        where R68ONLINESUBMISSIONPARAMETERS.ID = @CONTEXTID

                                    if @ISSPONSORSHIP = 0
                                        begin
                                                set @SQL = 'select '

                                                    --determine whether there is an ALIAS

                                                    --for KEYNAME

                                                    + 'case '
                                                        --when the tax declaration specifies an alias to use

                                                        + 'when ALIASES.ID is not null 
                                                            then cast(ALIASES.KEYNAME as nvarchar(35))  '
                                                        --when there is no alias specified use the constituent name as before

                                                        + 'else
                                                            cast(CONSTITUENT.KEYNAME as nvarchar(35)) 
                                                       end as KEYNAME, '
                                                    --for FIRSTNAME

                                                    + 'case '
                                                        --when the tax declaration specifies an alias to use

                                                        + 'when ALIASES.ID is not null 
                                                            then cast(ALIASES.FIRSTNAME as nvarchar(35)) '
                                                        --when there is no alias specified use the constituent name as before

                                                        + 'else
                                                            cast(CONSTITUENT.FIRSTNAME as nvarchar(35)) 
                                                       end as FIRSTNAME, '                    

                                                     --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 HOUSE,

                                                    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,

                                                        max(R68TABLE.DATE) as DATE, 
                                                        sum(AMOUNTRECEIVED) as AMOUNT,
                                                        min(R68TABLE.DATE) as EARLIESTDATE,
                                                        case
                                                            when not SPECIFICADDRESS.ID is null and SPECIFICCOUNTRY.ISO3166 = ''GB'' then 0
                                                            when SPECIFICADDRESS.ID is null and PRIMARYCOUNTRY.ISO3166 = ''GB'' then 0
                                                            else 1
                                                        end as ISOVERSEAS
                                                    from dbo.' + @TABLENAME + ' as R68TABLE'
                                                    + ' inner join dbo.FINANCIALTRANSACTIONLINEITEM ON FINANCIALTRANSACTIONLINEITEM.ID = R68TABLE.REVENUESPLITID '
                                                    + ' inner join dbo.FINANCIALTRANSACTION ON FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID '
                                                    + ' inner join dbo.CONSTITUENT on FINANCIALTRANSACTION.CONSTITUENTID = CONSTITUENT.ID'
                                                    + ' left join dbo.UFN_SITEID_MAPFROM_REVENUESPLITID_BULK() [REVENUESPLITSITE] on [REVENUESPLITSITE].ID = [R68TABLE].REVENUESPLITID
                                                        cross apply 
                              (select top 1
                                [DECLARATIONS].ID,
                                TAXDECLARATION.ADDRESSID,
                                TAXDECLARATION.ALIASID
                              from 
                                dbo.UFN_DECLARATIONS_GET([R68TABLE].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 FINANCIALTRANSACTION.DELETEDON is null '
                                                + ' group by FINANCIALTRANSACTION.CONSTITUENTID, CONSTITUENT.KEYNAME, CONSTITUENT.FIRSTNAME, ALIASES.ID, ALIASES.KEYNAME, ALIASES.FIRSTNAME,
                                                    SPECIFICADDRESS.ID, PRIMARYCOUNTRY.ISO3166, PRIMARYADDRESS.ADDRESSBLOCK, PRIMARYADDRESS.DESCRIPTION, PRIMARYADDRESS.POSTCODE,
                                                    SPECIFICCOUNTRY.ISO3166,SPECIFICADDRESS.ADDRESSBLOCK, SPECIFICADDRESS.DESCRIPTION, SPECIFICADDRESS.POSTCODE'
                                                + ' order by DATE'
                                        end
                                        else
                                        begin
                                                set @SQL = 'select '

                                                    --determine whether there is an ALIAS

                                                    --for KEYNAME

                                                    + 'case '
                                                        --when the tax declaration specifies an alias to use

                                                        + 'when ALIASES.ID is not null 
                                                            then cast(ALIASES.KEYNAME as nvarchar(35))  '
                                                        --when there is no alias specified use the constituent name as before

                                                        + 'else
                                                            cast(CONSTITUENT.KEYNAME as nvarchar(35)) 
                                                       end as KEYNAME, '
                                                    --for FIRSTNAME

                                                    + 'case '
                                                        --when the tax declaration specifies an alias to use

                                                        + 'when ALIASES.ID is not null 
                                                            then cast(ALIASES.FIRSTNAME as nvarchar(35)) '
                                                        --when there is no alias specified use the constituent name as before

                                                        + 'else
                                                            cast(CONSTITUENT.FIRSTNAME as nvarchar(35)) 
                                                       end as FIRSTNAME, '                    

                                                    --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 HOUSE,

                                                    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,

                                                        max(R68TABLE.DATE) as DATE, 
                                                        sum(AMOUNTRECEIVED) as AMOUNT,
                                                        min(R68TABLE.DATE) as EARLIESTDATE,
                                                        case
                                                            when not SPECIFICADDRESS.ID is null and SPECIFICCOUNTRY.ISO3166 = ''GB'' then 0
                                                            when SPECIFICADDRESS.ID is null and PRIMARYCOUNTRY.ISO3166 = ''GB'' then 0
                                                            else 1
                                                        end as ISOVERSEAS
                                                    from dbo.' + @TABLENAME + ' as R68TABLE'
                                                    + ' inner join dbo.FINANCIALTRANSACTIONLINEITEM ON FINANCIALTRANSACTIONLINEITEM.ID = R68TABLE.REVENUESPLITID '
                                                    + ' inner join dbo.FINANCIALTRANSACTION ON FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID '
                                                    + ' inner join dbo.CONSTITUENT on FINANCIALTRANSACTION.CONSTITUENTID = CONSTITUENT.ID'
                                                    + ' left join dbo.UFN_SITEID_MAPFROM_REVENUESPLITID_BULK() [REVENUESPLITSITE] on [REVENUESPLITSITE].ID = [R68TABLE].REVENUESPLITID
                                                        outer apply '
                              + '(select top 1 '
                              + '[DECLARATIONS].ID, '
                              + 'TAXDECLARATION.ADDRESSID, '
                              + 'TAXDECLARATION.ALIASID '
                              + 'from '
                               + 'dbo.UFN_DECLARATIONS_GET([R68TABLE].DATE, [REVENUESPLITSITE].SITEID, FINANCIALTRANSACTION.CONSTITUENTID) [DECLARATIONS]
                                left join dbo.TAXDECLARATION on TAXDECLARATION.ID = [DECLARATIONS].ID
                              order by TAXDECLARATION.DATECHANGED DESC) [VALIDDECLARATIONS]
                            left join dbo.TAXDECLARATION on TAXDECLARATION.ID = [VALIDDECLARATIONS].ID
                            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 FINANCIALTRANSACTION.DELETEDON is null '
                                                + ' group by FINANCIALTRANSACTION.CONSTITUENTID, CONSTITUENT.KEYNAME, CONSTITUENT.FIRSTNAME, ALIASES.ID, ALIASES.KEYNAME, ALIASES.FIRSTNAME, 
                                                        SPECIFICADDRESS.ID, PRIMARYCOUNTRY.ISO3166, PRIMARYADDRESS.ADDRESSBLOCK, PRIMARYADDRESS.DESCRIPTION, PRIMARYADDRESS.POSTCODE,
                                                        SPECIFICCOUNTRY.ISO3166,SPECIFICADDRESS.ADDRESSBLOCK, SPECIFICADDRESS.DESCRIPTION, SPECIFICADDRESS.POSTCODE'
                                                 + ' order by DATE'
                                        end

                                        exec sp_executesql @SQL