Hi,

in my store, we have articles with 7% VAT (books) and 19% VAT (say, DVDs). The shipping cost should always be 4,90 EUR for the end customer and just the absolute amount of VAT should vary.

An example:

  • 1 DVD for 54.90 EUR (incl. 8.77 EUR VAT)
  • 1 book for 9.80 EUR (incl. 0.64 EUR VAT)
  • subtotal: 64.70 EUR (incl. 9.41 EUR VAT)

After adding the shipping, we should arrive at 69.60 EUR (=64.70 + 4.90) and then compute the absolute VAT contained within the total amount.

However, the current behavior of selecting "Apply MwSt. proportional to rates used on items in the order" for the shipping is as follows:

  • 1 DVD for 54.90 EUR (incl. 8.77 EUR VAT)
  • 1 book for 9.80 EUR (incl. 0.64 EUR VAT)
  • subtotal: 64.70 EUR (incl. 9.41 EUR VAT)

Then the different VATs are applied to the 4.90 EUR such that we end up at 5.73 EUR, i.e. the total amount is 70.43 EUR. This is undesired at our place.

In short, I guess, one should be able to say "shipping fee includes VAT" (which leads to the desired behavior in our case) and "shipping fee excludes VAT" (which is the current behavior). Is this option already available somewhere? If not, I think it should be.

Thanks
Tobias

Comments

maen’s picture

Hi, the same problem was seen by us. So we don't take uc_vat, instead we take uc_vat_with_taxonomy.
Look at this thread, and tell me there some bugs if you find any ...
http://www.ubercart.org/issue/15097/conditionally_tax_products_based_tax...

tpfeiffer’s picture

I guess, the same behavior occures with coupons, just the other way around: a 5.00 EUR coupon will give a discount of 4.20 EUR only. This is not a good thing, as I promised a 5 EUR discount to my customers. The workaround of storing a value of 5.95 EUR also does not work, as articles with a different VAT will then make this a 5.56 EUR discount.
This behavior was observed with uc_vat 6.x-1.1, but also with 6.x-1.2. Any idea how to fix this?

maen’s picture

Test our module. We're Germans too!

tpfeiffer’s picture

StatusFileSize
new49.15 KB
new24.85 KB
new1.55 KB

maen: I didn't test your module, as I found a workaround (see below). I'm not overly happy with testing modules of such a complexity, in particular if there is no drupal.org project page or the like.

------------

The situation in which I wrote the above code was as follows:

  • All prices displayed to the customer include VAT, either 19% or 7%. Also shipping costs should stay constant, while the tax contained therein varies according to what's in the shopping cart.
  • With uc_vat-6.x-1.1 and a custom module to compute this shipping tax, the situation was fine. An upgrade to uc_vat-6.x-1.2 that promised to contain the functionality from our custom module, did actually not; at least not for our situation. (That was what I actually reported as a bug.) Thus I reverted to 6.x-1.1, to our previous working state.
  • Now I wanted to use uc_coupon, i.e., I want to give clients a 5 EUR coupon on the VAT-including price, i.e. the end result for the customer should be a total (incl. VAT) that is reduced by exactly 5 EUR.
  • Using uc_coupon-6.x-1.6 did not work, as described in comment #2, because uc_coupon will not reduce the tax, i.e. the discount is only given on $price-$tax.

My solution to this is as follows:

  • Create a coupon with a value of 4.20 EUR.
  • Make coupons taxed by 19% and make it apply only to 19%-taxed products. (The latter is no technical issue, but rather a legal one.)
  • Apply the attached patch to uc_vat-6.x-1.1 and uc_coupon-6.x-1.6.

This will lead to a correct display of the subtotal in the cart (if you disable the VAT being shown, see cart.png), in the cart pane on the checkout page (see checkout.png), and on the invoice. Just the term "subtotal" contains two different values on the checkout page, but I guess that's an uncorrelated issue.

I am pretty much aware that in particular the patch is not the best way to solve this issue. However, uc_taxes, uc_vat and uc_coupon are too complex for me to find "the right" solution, probably including some "give discount on tax as well" checkboxes etc.

Tobias