Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Global discounts mess up the taxes #14371

Closed
multiwebinc opened this issue Nov 17, 2016 · 11 comments
Closed

Global discounts mess up the taxes #14371

multiwebinc opened this issue Nov 17, 2016 · 11 comments

Comments

@multiwebinc
Copy link

Impacted versions: 10.0 nightly installed 2016-11-16

Steps to reproduce: Set up a POS. Follow the instructions here to add a discount item.

Current behavior: The discounts do not discount the tax amount. The customer pays the same final amount, but the store owner will end up paying more tax than what they should.

Expected behavior: Discounts should also discount the taxes.

Video/Screenshot link (optional):

Description
Description
Description

For example, if we have $54 in sales at 23% taxes, that means $12.42 in taxes. If we add a 50% discount it should be $27 in discount amount and $6.21 reduction in taxes, however it instead adds a $33.21 discount to the products and no discount to the taxes.

If I add the taxes to the discount product it messes things up just as bad:

Description

As you can see here, the taxes are correctly discounted, however the client only pays $25.57 instead of $33.21.

This is how I would expect it to look: Description (however it appears this can only be done by entering the discounts in manually).

@jayo2005
Copy link

I have noticed this also. Did you find a fix for it?

@multiwebinc
Copy link
Author

@jayo2005 Unfortunately no. The only way I found is to disable global discounts and discount each item individually, which then calculates prices correctly.

@Yenthe666
Copy link
Collaborator

@jorenvo could you have a look at this?

@jayo2005
Copy link

@Yenthe666 and @jorenvo any update on this as it makes global discounts unusable.

@jorenvo
Copy link
Contributor

jorenvo commented Feb 22, 2017

A global discount won't change taxes (unless you configure a tax on the discount product, but that just makes things more complicated). I think it's the correct way to deal with this use case. Otherwise you would somehow have to split whatever your global discount is over all other order lines in your order. If you want to not have this issue you can either change the unit price on the order line or specify a discount percentage on the order line.

@jorenvo jorenvo closed this as completed Feb 22, 2017
@jorenvo jorenvo changed the title Percent discounts mess up the taxes Global discounts mess up the taxes Feb 22, 2017
@multiwebinc
Copy link
Author

@jorenvo I don't get it. Why close it if it's still broken?

@jorenvo
Copy link
Contributor

jorenvo commented Feb 22, 2017

Because I don't think there's a problem. How else would you handle a global discount like this? What if you have multiple orderlines and a global discount of $1? How would you split the discount? If for your use case the result is incorrect and you want taxes to decrease as well then you can refer to previous comment for ways to do that.

@multiwebinc
Copy link
Author

multiwebinc commented Feb 22, 2017

@jorenvo

How else would you handle a global discount like this?

I don't know the ins and outs of the program well enough to say, but I would assume you just take the sum of all order lines before and after taxes and add the respective discount percent amounts to the totals before and after taxes respectively. I don't think the use case is really THAT specific. It's a restaurant where the taxes are not included and there may be times we want to offer percent discounts. If the restaurant owner is having to pay more taxes than what's necessary, that's an issue. Why not just leave it open in case there's someone else that wants to work on it some day?

What if you have multiple orderlines and a global discount of $1? How would you split the discount?

There is already a setting that says whether the discount amount should have tax. If the discount item includes tax, the discount amount should be $1 plus tax. If not, then $1.

@jayo2005
Copy link

jayo2005 commented Feb 22, 2017

If you want to not have this issue you can either change the unit price on the order line or specify a discount percentage on the order line.

I don't see the point in having a Global discount if you have to do this.

The prices on the POS are set to include taxes. I sell two products both $1149.99 total $2299.98. Tax is $300 at 15%. I apply a 10% discount and taxes are still $300. As a shop owner I've given a discount but I will end up paying more taxes than I should because of this. Over a 6 month period the amount of Tax that I would overpay would be enormous. You can only pay TAX on the money you receive. Ive never seen a POS system approach a global discount or total amount discount is this way. It just does not make sense.

@randyraharjo93
Copy link

I am definitely agree with this, Discount should always be counted before taxes. So that the taxes will be reduced also. No one updating this?

@treviser
Copy link

treviser commented Aug 12, 2018

According to my understanding Odoo's instructions are not correct. The global discount product must have a tax rate set. And there is the problem. A sales order can contain multiple order lines with different tax rates. To be absolutely correct from a legal tax perspective, the discount tax amount should be proportionally allocated to total amounts for each tax rate.

Example:

  • net order line amount: EUR 50, tax rate 10%, gross amount EUR 55
  • net order line amount EUR 100, tax rate 20%, gross amount EUR 120
  • net global discount EUR -20
    The applicable tax amount for the discount should be: (50/(50+100) * net global discount * tax rate 10% + (100/(50+100) * net global discount * tax rate 20%
    Usually you would like to offer a gross discount, the calculation then gets slightly more difficult, but that's the proper way to handle it.

Solutions:

  1. Create a function, which correctly calculates and allocates taxes from the global order to the discount
  2. create discount products for each tax rate and allocate the discount amounts manually
  3. do not use global discounts

If you are sure you only have one applicable tax rate, then use a discount product with this tax rate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants