Skip to main content
2 of 3
deleted 21 characters in body
chirale
  • 209
  • 1
  • 9

You can achieve what you're looking for using some module and disabling others. This explanation is based on Drupal Commerce (7.x).

  1. Uninstall standard Commerce Tax module since it leads to weird results with different VAT if you aren't a Rules master as exposed in this issue on drupal.org.
  2. Install Commerce European Union VAT (commerce_eu_vat) choosing the right country: the module has a good written API and you can adapt it for extra-EU countries easily. Now you can assign product by product the right VAT and even assign a default VAT by product type via "manage fields" on product variations administration. default VAT
  3. Install Discount (commerce_discount) module. You can set discount per product and per order (your case). Create a new discount, e.g. "My funny discount".
  4. Now you can create your per-order discount. Every time you create a new discount it appears on both Discount page and on Pricing rules. Since VAT is sometimes applied before Discount (in my case it was) then you have to change the Rule weight for your new discount. Go to the Pricing rules administration page, search for "My funny discount" > edit > Settings > Weight and give it a negative weight to apply the discount before the VAT. Note: when you override the discount you cannot save it anymore since you've changed the parent Rule. Just revert the rule to make it editable again and then reapply the weight trick. discount weight on Rules
  5. Now you have to hide unwanted components from your price on display: to do this install Commerce price by components (commerce_price_components). On your product type > Manage display you can change your price field widget from "Formatted amount" to "Price by components" and check only Discount and Base price, excluding VAT and other components. edit components

Here the result on checkout:

List item

Hope this helps.

chirale
  • 209
  • 1
  • 9