Want to get vat-amounts in invoice table
It should be fairly simple then:

SELECT 
    [HJ-Admin].tblVatRates.fldVatID
    , [HJ-Admin].tblVatRates.fldVatRate
    , SUM([HJ-Admin].tblInvoiceDetail.fldLineTotal * [HJ-Admin].tblVatRates.fldVatRate / 100) AS fldVatTotalAmount
FROM [HJ-Admin].tblVatRates 
LEFT OUTER JOIN [HJ-Admin].tblInvoiceDetail ON [HJ-Admin].tblVatRates.fldVatID = [HJ-Admin].tblInvoiceDetail.fldVatRateID
GROUP BY 
    [HJ-Admin].tblVatRates.fldVatID
    , [HJ-Admin].tblVatRates.fldVatRate


or with a total rows as well:

SELECT 
    [HJ-Admin].tblVatRates.fldVatID
    , [HJ-Admin].tblVatRates.fldVatRate
    , SUM([HJ-Admin].tblInvoiceDetail.fldLineTotal * [HJ-Admin].tblVatRates.fldVatRate / 100) AS fldVatTotalAmount
FROM [HJ-Admin].tblVatRates 
LEFT OUTER JOIN [HJ-Admin].tblInvoiceDetail ON [HJ-Admin].tblVatRates.fldVatID = [HJ-Admin].tblInvoiceDetail.fldVatRateID
GROUP BY 
    [HJ-Admin].tblVatRates.fldVatID
    , [HJ-Admin].tblVatRates.fldVatRate
WITH ROLLUP


Or with the grouping that you are after (only an overall total row, no totals per grouping level):

SELECT 
    [HJ-Admin].tblVatRates.fldVatID
    , [HJ-Admin].tblVatRates.fldVatRate
    , SUM([HJ-Admin].tblInvoiceDetail.fldLineTotal * [HJ-Admin].tblVatRates.fldVatRate / 100) AS fldVatTotalAmount
FROM [HJ-Admin].tblVatRates 
LEFT OUTER JOIN [HJ-Admin].tblInvoiceDetail ON [HJ-Admin].tblVatRates.fldVatID = [HJ-Admin].tblInvoiceDetail.fldVatRateID
GROUP BY GROUPING SETS(
        ([HJ-Admin].tblVatRates.fldVatID, [HJ-Admin].tblVatRates.fldVatRate)
        , ()
    )


With InvoiceID:

SELECT 
    [HJ-Admin].tblVatRates.fldVatID
    , [HJ-Admin].tblVatRates.fldVatRate
    , SUM([HJ-Admin].tblInvoiceDetail.fldLineTotal * [HJ-Admin].tblVatRates.fldVatRate / 100) AS fldVatTotalAmount
FROM [HJ-Admin].tblVatRates 
LEFT OUTER JOIN [HJ-Admin].tblInvoiceDetail ON [HJ-Admin].tblVatRates.fldVatID = [HJ-Admin].tblInvoiceDetail.fldVatRateID
WHERE [HJ-Admin].tblInvoiceDetail.fldInvoiceID = @intInvoiceID
GROUP BY GROUPING SETS(
            ([HJ-Admin].tblVatRates.fldVatID, [HJ-Admin].tblVatRates.fldVatRate)
            , ()
        )


Try to put the InvoiceID into the where, will be more performant.

If you want to also include all non matching rows from the tblVatRate table:

WITH Inv AS (
    SELECT 
        r.fldVatID
        , r.fldVatRate
        , SUM(i.fldLineTotal * r.fldVatRate / 100) AS fldVatTotalAmount
    FROM [HJ-Admin].tblVatRates r
    INNER JOIN [HJ-Admin].tblInvoiceDetail i ON r.fldVatID = i.fldVatRateID
    WHERE i.fldInvoiceID = @intInvoiceID
    GROUP BY GROUPING SETS(
                (r.fldVatID, r.fldVatRate)
                , ()
            )
)
SELECT ISNULL(i.fldVatID,@intInvoiceID) AS 'fldVatRateID', r.fldVatRate, SUM(ISNULL(i.fldVatTotalAmount,0)) AS 'fldTotalVat'
FROM [HJ-Admin].tblVatRates r
LEFT OUTER JOIN Inv i ON r.fldVatRate = i.fldVatRate
GROUP BY GROUPING SETS(
                (r.fldVatID, r.fldVatRate, i.fldVatID)
                , ()
            )