thank you very much for taking care for this topic! Just a few short thoughts on this topic. The flowchart is really good, probably just missing the difference between professional and private customers, but there I am now also not sure.
VAT contrib: IMO there is missing that just professional customers have to provide their VAT number, so the additional condition should be if the customer fills the Company field. This one I still was not in, so more I can't tell ATM.
IMO this should be definitely also the way for Australia, Canada and probably others.
zmoves uc_taxes_alter is a good starting point to achieve most of the things on a module base, but it is far from being complete.
A module's base should be 2 main configurations:
- Are taxes calculated on per order base (like it is) or on per product base (like e.g. the EU needs). This is a rounding issue and just 3 lines somewhere in uc_taxes need to be packed in a if/else statement.
- Display taxes: Show taxes just on checkout or always? I mean really always, e.g. products, teasers, cart, order pages, invoice template, shipping, ... all displayed incl. VAT.
The rest can work through Workflow-ng (and that a "Display Tax" module checks theses settings)
I am looking forward to contribute whatever is useful from the code I produced up to now, best regards,