Have you looked at the function I mention in the task? It uses one query to fetch both level 1 and level 2 tax rules, then loops through them, calculating the amount for each. No I didn't look at the pricing presenter, but it must of course follow the progression you list. When the taxes are retrieved in the right order getTotal() does it in this form:
price = sum(items)
level1_amount = price * level1_rate
tax_total = level1_amount
level2_amount = (price + tax_total ) * level2_rate
tax_total += level2_amount
total = price + tax_total
This is a super simple fix. Just needed to add an order by to make such the rules are fetched in the right order.
Could use more details on what this means exactly