Commit Graph
37 Commits
Author SHA1 Message Date
Nicolas Martinelli fa60131f9c [FIX] account: wrong computation with currency rounding 0.05
- Create a tax:
  5%
  Included in price
- Set the currency rounding of the company to 0.05 (e.g. CHF)
- Create the following invoice
  Prod 1, 1 unit,  5.0 CHF, tax 5%
  Prod 2, 1 unit, 10.0 CHF, tax 5%
  Prod 3, 1 unit, 50.0 CHF, tax 5%

The total amount of the invoice is 64.95 CHF instead of 65.00 CHF, even
in a 'Round per line' configuration.

It happens because `compute_all` rounds the amounts following the number
of digits of the currency instead of using the `rounding` field.

Note that there is a discrepancy between the POS computation and the
Account computation: the POS already uses the `rounding` field instead
of the number of digits:

https://github.com/odoo/odoo/blob/80073c5430f0ab562dfc27572c108114161ebb25/addons/point_of_sale/static/src/js/models.js#L1855-L1991

opw-2341566

X-original-commit: 94353ebd6b47a286157f0559b194ff03ea49ff68
2020-10-14 17:24:31 +00:00
Nicolas Martinelli ebac669b2e [FIX] account: tax rounding error
- Create Tax 0:
  Percentage
  Amount: 0
  Tax Included
  Tax Group 0
- Create Tax 8:
  Percentage
  Amount: 8
  Tax Included
  Tax Group 8
- Create a customer invoice with one line
  Quantity: 8.0
  Price Unit: 15.55
  Taxes: Tax 8, Tax 0 (order is important)

The tax amounts are:
  Tax 8: 9.22
  Tax 0: -0.01

If the taxes are inverted, the tax amounts
  Tax 8: 9.21
  Tax 0: 0.00

The difference is due to the rounding of the 8% tax done differently. In
the second case, the computation of the 8% tax goes through:

https://github.com/odoo/odoo/blob/8c5cd335a57c20ed5faa6b7c7630c296c1f2a5cf/addons/account/models/account.py#L1480

In the first case, the amount is recomputed in:

https://github.com/odoo/odoo/blob/8c5cd335a57c20ed5faa6b7c7630c296c1f2a5cf/addons/account/models/account.py#L1483

The rounding is different in both cases, leading to an inconsistency.

When the tax amount is zero, there is no need to save the amount in
`total_included_checkpoints`.

opw-2306676

closes odoo/odoo#55812

X-original-commit: e2776e188070221ef465a864bd2cb8dcfc971e14
Signed-off-by: Jorge Pinna Puissant (jpp) <jpp@odoo.com>
2020-08-12 13:42:20 +00:00
Nicolas (vin) 41f119d532 [IMP] account: Misc. improvements
Miscellaneous changes aiming to improve the user experience in the accounting module,
mainly in the journal model and its form view.

Also aim to improve the bank account creation wizard.

Task ID: #2250349

closes odoo/odoo#54494

Related: odoo/upgrade#1546
Related: odoo/enterprise#11862
Signed-off-by: oco-odoo <oco-odoo@users.noreply.github.com>
2020-08-11 12:41:13 +00:00
Nasreddin (bon) 4890661a4a [FIX] account: wrong calculation for 'not included in price' group taxes
Issue

	- Install 'Accounting' app
	- Create tax A and tax B for 5%, make sure they are NOT included in price
	- Create a tax C as a group that includes Tax A and B
	- Go to any bank journal and create a statement line for 100 dlls
	- Click Reconcile
	- Select Manual Operations
	- Select any account
	- Add Tax C
	- Check on 'Tax Included in Price'

	Wrong calculation.

Cause

	Not considering forced 'Tax Included in Price'
	('force_price_include'),when cumulating tax included
	amount.

opw-2280714

closes odoo/odoo#54003

X-original-commit: 523e407e164d96ead0ce836e3dc1a6bb8f258af9
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Signed-off-by: bon-odoo <nboulif@users.noreply.github.com>
2020-07-02 14:25:39 +00:00
Laurent Smet 564a1b94a7 [IMP] account,l10n_fi: Allow custom COA in accounting test suite
- A custom COA could be passed as parameter.
- Merge the invoice setup to the generic suite like it is in master.

forwart-port of https://github.com/odoo/odoo/commit/161498cf8a75d62f9a8e1a17c6dc62a142b85acc

closes odoo/odoo#52378

X-original-commit: c0acebe2c55f7030df3bd10ad8058da6a070aa72
Related: odoo/enterprise#10921
Signed-off-by: Josse Colpaert <jco@openerp.com>
Signed-off-by: Laurent Smet <smetl@users.noreply.github.com>
2020-06-04 06:28:07 +00:00
Nicolas Martinelli eeee58c7ac [FIX] account, point_of_sale: incorrect rounding
- Create a 12% tax, price included
- Create an invoice for a single product @ 52.50

The total is 52.51.

This happens be cause the tax is computed on a non-rounded base amount.

opw-2198712

closes odoo/odoo#48084

X-original-commit: f307c29160675583c1c40ccf0f4452c6a1461cbe
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2020-03-20 09:29:39 +00:00
Nicolas Martinelli 6b666b8840 [FIX] account: error on tax rounding
- Active 'Round Globally'
- Create the tax:
  Amount: 21 %
  Tax Included
- Create the following invoice:
  Line 1: qty 1.0, price 11.90
  Line 2: qty 1.0, price 2.80

The Taxes amount should be 2.56 since we apply a 'Round per line' logic
in case of included taxes.

opw-2181486

closes odoo/odoo#47175

X-original-commit: a55bc67f0797f412c3bd82074c3f8f5d1497bce2
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2020-03-09 09:50:30 +00:00
oco-odoo 31e1322b40 [IMP] account: don't always allow modifying the decimal places of a currency
If accounting entries have already been generated by this currency, we now forbid setting it a lesser number of decimal places (so, higher rounding factor). We also display a warning when increasing the number of decimal places, to make sure the user is aware of the impact it'll have.

closes odoo/odoo#42017

Signed-off-by: Laurent Smet <smetl@users.noreply.github.com>
2020-02-05 11:53:45 +00:00
Laurent Smet eec0b80756 [FIX] account: Fix computation of taxes with round_globally.
-github issue: 14673

closes odoo/odoo#44312

-task: 2007300
X-original-commit: 6d3f3c749dbccc875f67c17ee95086df494044f6
Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
2020-01-30 13:41:55 +00:00
Yannick Tivisse 7935d1ff40 [IMP] account: Avoid multi-executed tests 2019-11-12 11:34:36 +00:00
Yannick Tivisse f44fbdb833 [IMP] account: Clean common tests classes 2019-11-12 11:34:36 +00:00
Yannick Tivisse 064aa955d9 [IMP] account: Adapt tests to work with/without demo data 2019-11-05 13:08:02 +01:00
Laurent Smet b6bf77ead7 [FIX] account: Fix taxes computation
1) Suppose a tax of 21% intracomm +100%, -100% applied on 100.0.
The computed price_excluded was 121.0 instead of 100.0 because the
assumption was made the sum of repartition lines factor was always 100.0%.

After this fix, the amounts are always multiplied by the sum of repartition lines factor
in order to reflect correctly the impact of each repartition lines.

2) The rounding is now working for any kind of repartition lines and the consistency
of tax amount regarding the repartition lines is always ensured.
See use cases described by the tests for more details.

closes odoo/odoo#36082

Signed-off-by: Laurent Smet <smetl@users.noreply.github.com>
2019-08-27 14:36:10 +00:00
Olivier Colson 3936d655c4 [IMP] account, l10n_*: v13 taxes
- Add repartition lines on taxes

- Link account tags directly to account.move.line; remove the tag_ids field from account.tag

- Add a new report engine dedicated to tax reports, directly generating account tags. It is called as an alternate mode of generic tax report, with a dedicated "Use tax grids" toggle.

>> The biggest change lies in the way the new tax report computes its values.
Everything is now aggregated directly using the tags set on the account move lines. Thanks to that,
modifying the configuration of a tax today will not impact the report for the previous periods anymore.
This is a big improvement, as it means the report will keep on reflecting the values that were submitted
to the state before, whatever the configuration change.

- Add an audit char field to account.move.line telling with tax grids are impacted by the line, with the corresponding amount

- Modify the behavior of cash basis taxes: the cash basis account is now used as the transition account, while the regular account given in tax declaration is used to store the final entry (it was the opposite before)

- Modify every l10n_* module in order to keep them consistent with these changes

closes odoo/odoo#32833

Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
2019-05-10 11:52:58 +00:00
Laurent Smet 4523a11bed [FIX] account, point_of_sale: Fix complex taxes computation
The previous _compute_all wasn't able to get the right results in case of complex
taxes computation.

See tests for examples.

task: 39945
2019-05-09 11:56:39 +00:00
David Arnold 0459e9b1c5 [IMP] add unit test 2018-12-03 15:16:32 +00:00
Cédric Snauwaert d3d2612061 [IMP] account: Speed up of some processes
* Reconciliation
    Change the way the reconciliation method was written to optimize performances.
    Remove the "skip_full_reconcile_check" stuff that is more confusing than helping.
* Object creation
    Remove the creation of tax_line from tax_ids in the account_move_line create method.
    Remove a bunch of context that were invalidating the cache way too often

Was PR #21498
Was task 37976
2018-04-27 17:16:03 +02:00
Christophe Monniez b356b19033 [IMP] tests: Add the possibility to tag tests
Purpose: When running tests, all the tests for the installed/updated
files are done. This commit adds a 'tagged' decorator that can be used to
tag tests. Combined with a new 'test-tags' CLI option, it adds the ability
to filter which tests are executed. For example, @tagged('slow') will
add a tag 'slow' to the test. The CLI option 'test-tags="slow"' will
only run tests tagged 'slow'.

One can use prefixes to select cases with tags.
'+' or no prefix means that the tests tagged with this tag are selected
for execution. '-' prefix will exclude the tests tagged with this tag.
Exclusion takes precedence over inclusion.

Also, by default, all Odoo tests cases are tagged 'standard' and with
the technical name of the module.
This means that when selecting tests with the 'test-tags'
parameter, if '-standard' is not specified, all tests tags are
going to be executed.
When tagging tests, one can remove such automatic tag by prefixing the
tag name with '-'. E.g. @tagged('-standard') will remove the standard
tag from the test.

Another example, if one wants to test the 'sale' module alone,
even without adding any 'tagged' decorator thos tests can be selected
like that: --test-tags="sale"

Tests are selected or deselected using a TagsSelector. When instanciated,
 a string is passed with comma separated tests selectors like
'+slow,-standard'. When the 'check' method is called  with a test as argument,
it returns True or False if the test has to be executed or not.
2018-01-18 13:20:37 +01:00
Christophe Simonis a094f6318b [MERGE] forward port branch saas-16 up to 745d00362a 2017-11-16 12:40:36 +01:00
Christophe Simonis ae2cbc7a01 [MERGE] forward port branch 9.0 up to ce818f1f8f 2017-11-10 15:43:49 +01:00
Laurent Smet ce818f1f8f [REVERT] account, point_of_sale: revert complex taxes computation
Reverts:
f85c8843c9
6c996723b2
455b5aaff8
c6a9bab074
6366150484
33d20a2241
47c0cfc6e7
6e46ba7b46
5afb5ecd04
2017-11-10 15:22:45 +01:00
Christophe Simonis bf102b4cbc [MERGE] forward port branch 9.0 up to 6c996723b2 2017-11-03 14:36:22 +01:00
Nicolas Martinelli f85c8843c9 [FIX] account, point_of_sale: tax with fixed amount
- Create a tax:
  Fixed amount: 10
  Price included
- Add it by default to a product costing 100
- In a SO/PO/Invoice, add 2 units of the product

The total price is 210 instead of 200.

opw-779696
2017-11-03 12:57:34 +01:00
Christophe Simonis aaa7566141 [MERGE] forward port branch 9.0 up to 455b5aaff8 2017-11-03 11:42:39 +01:00
Laurent Smet 455b5aaff8 [FIX] account, point_of_sale: fix rounding issues with taxes computation (#20573)
Suppose a tax of 20% with price_included = True and apply this tax on 399.99:
- base = 399.99 / 1.2 = 333.32500000000005
- tax_amount = base * 0.2 = 66.665
- round(base) + round(tax_amount) = 333.33 + 66.67 = 400.0 (!= 399.99: WRONG)

-opw: 777925
2017-11-02 14:02:04 +01:00
Christophe Simonis 786b67ab49 [MERGE] forward port branch 9.0 up to c6a9bab074 2017-10-20 15:14:45 +02:00
Nicolas Martinelli c6a9bab074 [FIX] account: tax included
- Create a tax included of 21 %
- Create a product sold 7.00, set the 21 % tax
- Add the product in a SO

Amount w/o tax: 5.79
Amount tax: 1.22
Total: 7.01

We defer the base rounding to the end of the method so that the rounding
doesn't impact the tax computation of included taxes.

Complement of 6e46ba7b46

opw-777221
2017-10-20 14:36:58 +02:00
Christophe Simonis cbca27d005 [MERGE] forward port branch 9.0 up to d5c0cae60b 2017-10-17 11:42:05 +02:00
Laurent Smet 5afb5ecd04 [FIX] account: fix complex tax computations (multiple price included taxes, etc.)
Suppose the correct computation:

        seq | amount | incl | incl_base |  base  |  amount
        ----------------------------------------------------
          1 |    10% |    t |         t |  100.0 |     10.0
          2 |    10% |      |           |  110.0 |     11.0
          3 |    10% |    t |           |  110.0 |     11.0
          4 |    10% |      |           |  110.0 |     11.0
          5 |    10% |    t |           |  110.0 |     11.0
        ----------------------------------------------------

with an initial amount of 132. Without this commit, the base amount was computed by:

132 / 1.1 / 1.1 = 109.09

instead of:

132 / 1.2 = 110.0

see task: https://www.odoo.com/web#id=34471&view_type=form&model=project.task&action=333&active_id=967&menu_id=4720

Was PR #18275
2017-10-16 11:35:08 +02:00
Christophe Simonis 3bb022d57c [MERGE] forward port branch saas-12 up to 6f8e40c 2016-10-27 18:17:59 +02:00
David Arnold d3de63ec3f [FIX] account: nested group of taxes
When a group of tax is nested inside another group of taxes, the tax
amount and base are wrongly calculated. It is also the case when a tax
is applied after a group of taxes.

This is because the recursive call doesn't reuse the previously
calculated tax amounts and base, but always use the same entry amounts.

The fix introduces this behavior, and moreover makes sure to include the
tax group in the base amount only if it should.

Closes #13995
2016-10-27 14:09:18 +02:00
qdp-odoo 89cbef8540 [FIX/REF] account: set default behavior of apply_taxes to False on creation of account.move.line.
This allows to import acccount.move.line via csv and provide the field 'tax_ids' (which is needed for the tax statement).
This option is now a context's key, replace the key 'dont_apply_taxes' which was now useless
2016-09-16 11:13:51 +02:00
Yannick Tivisse d6e1d41128 [MIG] account: Migrate remaining old API chuncks of code 2016-08-08 12:24:40 +02:00
Denis Ledoux a842199687 [MERGE] forward port of branch saas-6 up to 2616def 2016-01-29 12:29:17 +01:00
Mahendra barad 75d7bbb46e [REF]Account: Refactoring the account, Change some fields name according to new api guidelines
code improvement

code improvement

payment_method to payment_method_id

writeoff_account to writeoff_account_id

property_account_receivable to property_account_receivable_id

property_account_payable to property_account_payable_id

property_account_expense_categ to property_account_expense_categ_id

property_account_income_categ to property_account_income_categ_id

property_account_expense to property_account_expense_id

property_account_income to property_account_income_id

property_account_expense_categ fix

sale_tax to sale_tax_id and default_sale_tax to default_sale_tax_id

purchase_tax to purchase_tax_id and default_purchase_tax to default_purchase_tax_id

ref_companies to ref_companies_ids

property_account_position to property_account_position_id

property_payment_term to property_payment_term_id

property_supplier_payment_term to property_supplier_payment_term_id

bank_accounts_id to bank_accounts_ids

payment_method fix after rebase

user_type after rebase

payment_method fix after rebase

after rebase

invoice to invoice_id

fix payment_method_id after rebase

code improvement

[IMP]user_type to user_type_id

[IMP]property_stock_account_input_categ, property_stock_account_output_categ to _id

[IMP]improve after rebase

[IMP]fix type

[IMP]Account: code improvement
2015-06-23 14:00:43 +02:00
qdp-odoo c04065abd8 [IMP] accounting v9. Yeeeeaah 2015-05-05 17:28:04 +02:00
Georges Racinet 96f20a75fe [TEST] starting unit tests for taxes
bzr revid: gracinet@ishtar.anybox.fr-20121101203935-jbcp6cwikhn56ahm
2012-11-01 21:39:35 +01:00