Goal
The goal of this patch is to have support for taxable subscription services, such as Cloud subscriptions, without breaking donations already used by Development Fund.
See the specs for the VAT calculations here: https://developer.blender.org/T86492 for details.
Implementation details
pyvat is used to calculate VAT charge types and rates for subscriptions.
Because VAT calculations actually affect the price displayed to the customer, something has to store the "original" price.
For the lack of better alternative, Subscription.price is now considered the "original" price. This means that a subscription can generate an order with a price that differs from the subscription's price, because tax is subtracted from the Subscription.price: this will happen when a reverse-charge applies to subscription's customer.
All the newly added or renamed tax fields remain shared and have the same meaning across the models.
Examples of how this looks in the WIP Cloud's checkout:
