Here are some suggestions for the implementation of TAXES in Drupal Commerce 8.x, I'm also happy to provide more information, screenshot or screencasts if that would help.

For Australia and most countries that have a GST or VAT retailers always display product prices to their customers inclusive of TAX. E.g. in Australia with a 10% GST Tax we display $24.95 to the customer instead of $22.68

The exception to this is Australian wholesalers (B2B) generally display to their customers ex TAX and add it on at the end.

On the admin side retailers normally have their products created so they can enter in prices inclusive of tax and an option to set whether tax is applicable to the product or not. You could have an auto generated field that show the exTAX Price to the retailer.

Tax Selector

Some products like fresh fruit don’t have tax applied and are sold TAX free.

TAX and Shipping within Country of Business and Outside Country of Business
Retailers that have customer orders being shipped out of the country that the business is located need to be sent exTAX.

Here’s an example using an Australian retailer with a GST Tax of 10%.

Customer orders 24.95 product and has the order shipped to an Australian address, the TAX on the order would be $2.27 and displayed on the order invoice like the below:

1 x Product: $24.95
Subtotal: $24.95
GST Included in Total: $2.27
Total: $24.95

If this same product was ordered and sent out of Australia then the order invoice would like this:

1 x Product: $22.68
Subtotal: $22.68
GST Included in Total: $0
Total: $22.68

Coupons & Discounts
If a product discount is applied to an order then the discount should be reflected in the TAX amount that is on the order. E.g. discount is applied to the subtotal then TAX calculated.

A customer ordering a $24.95 product shipping it to Australia with a $5 discount code would have the below totals on their invoice:

1 x Product: $24.95
Subtotal: $24.95
DISCOUNT: $-5.00
GST Included in Total: $1.81
Total: $19.95

Gift Vouchers
Gift vouchers are a form of money exchange so are not sold inclusive of TAX, they are NOT APPLICABLE TO TAX until the credit is used, and then taxes are applied.

Example of a gift voucher purchase:
1 x GIFT VOUCHER: $50
Subtotal: $50
GST Included in Total: $0
TOTAL: $50

Example of purchasing a $24.95 product using a $50 gift voucher as payment:

1 x Product: $24.95
Subtotal: $24.95
PAYMENT BY GIFT VOUCHER: ($24.95 - $25.05 remaining
GST Included in Total: $2.27
Total: $24.95

Let me know if you guys need any clarification, happy to jump on a video call or provide more information.

CommentFileSizeAuthor
tax-selector-on-products.png4.19 KBtasmaniaman
Support from Acquia helps fund testing for Drupal Acquia logo

Comments

tasmaniaman created an issue. See original summary.

bojanz’s picture

Thanks for the feedback. Most of what you wrote is implemented this way in 1.x already, excluding bugs such as the ones around discount VAT handling (which we're giving a lot of weight to in 2.x).

You can view some of the design considerations behind our new tax system at https://drupalcommerce.org/blog/31036/commerce-2x-stories-taxes

tasmaniaman’s picture

A good read https://drupalcommerce.org/blog/31036/commerce-2x-stories-taxes

Great to hear discounts and taxes are being worked on in 2.x

tasmaniaman’s picture

I've found an issue with commerce_tax (tested on 18/02/2016)

After importing Australian GST, adding a rate then trying to add a rate amount I get a server 500 error and this gets logged into the server log:

PHP Fatal error: Call to a member function addRate() on a non-object in /mnt/gfs/tasmaniamanf8nwqjskr3/livedev/docroot/mystore/web/modules/contrib/commerce/modules/tax/src/Entity/TaxRate.php on line 260 request_id="v-7546455c-d60d-11e5-9ba0-22000af287f1"

It looks like the Rate amounts addition might be saving as a Tax Rate instead of a rate amount?

When you try and delete the broken tax rate you get another server error:

Uncaught PHP Exception Symfony\Component\Routing\Exception\InvalidParameterException: "Parameter "commerce_tax_type" for route "entity.commerce_tax_rate.collection" must match "[^/]++" ("" given) to generate a corresponding URL." at /mnt/gfs/tasmaniamanf8nwqjskr3/livedev/docroot/mystore/web/core/lib/Drupal/Core/Routing/UrlGenerator.php line 199 request_id="v-06e37e86-d60d-11e5-85ed-22000af287f1"

Here's a screencast demo of the problem: http://screencast.com/t/M21ShFjCMOp

tasmaniaman’s picture

Category: Plan » Bug report
bojanz’s picture

Sure, there's plenty of work left there. Patches welcome :)

harings_rob’s picture

Hi,

I have resolved the issues that did not allow you to add tax rate amount.

https://github.com/drupalcommerce/commerce/pull/337

Working on some tests now. But the PR should already be ready to merge.

Tests: https://github.com/drupalcommerce/commerce/pull/338

bojanz’s picture

Category: Bug report » Support request
Status: Active » Fixed

Let's turn this issue back into a support request and close it.

I've merged #337 and opened #2674232: Add test for tax types to track #338 since I'm expanding the test.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.