mirror of
https://github.com/bringout/oca-ocb-accounting.git
synced 2026-04-18 08:42:01 +02:00
Initial commit: Accounting packages
This commit is contained in:
commit
4ef34c2317
2661 changed files with 1709616 additions and 0 deletions
|
|
@ -0,0 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import test_tax
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from odoo.addons.account.tests.test_tax import TestTaxCommon
|
||||
from odoo.tests import tagged
|
||||
|
||||
|
||||
@tagged('post_install', '-at_install')
|
||||
class TestTaxPython(TestTaxCommon):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(TestTaxPython, cls).setUpClass()
|
||||
cls.python_tax = cls.env['account.tax'].create({
|
||||
'name': 'Python TAx',
|
||||
'amount_type': 'code',
|
||||
'amount': 0.0,
|
||||
'python_compute': 'result = ((price_unit * quantity) - ((price_unit * quantity) / 1.12)) * 0.5',
|
||||
'sequence': 1,
|
||||
})
|
||||
|
||||
def test_tax_python_basic(self):
|
||||
res = self.python_tax.compute_all(130.0)
|
||||
self._check_compute_all_results(
|
||||
136.96, # 'total_included'
|
||||
130.0, # 'total_excluded'
|
||||
[
|
||||
# base , amount | seq | amount | incl | incl_base
|
||||
# --------------------------------------------------
|
||||
(130.0, 6.96), # | 1 | 6% | t |
|
||||
# --------------------------------------------------
|
||||
],
|
||||
res
|
||||
)
|
||||
|
||||
def test_tax_python_price_include(self):
|
||||
self.python_tax.price_include = True
|
||||
res = self.python_tax.compute_all(130.0)
|
||||
self._check_compute_all_results(
|
||||
130, # 'total_included'
|
||||
123.04, # 'total_excluded'
|
||||
[
|
||||
# base , amount | seq | amount | incl | incl_base
|
||||
# ---------------------------------------------------
|
||||
(123.04, 6.96), # | 1 | 6% | t |
|
||||
# ---------------------------------------------------
|
||||
],
|
||||
res
|
||||
)
|
||||
|
||||
python_tax_2 = self.python_tax.copy()
|
||||
res = (self.python_tax + python_tax_2).compute_all(130.0)
|
||||
self._check_compute_all_results(
|
||||
130, # 'total_included'
|
||||
116.08, # 'total_excluded'
|
||||
[
|
||||
# base , amount | seq | amount | incl | incl_base
|
||||
# ---------------------------------------------------
|
||||
(116.08, 6.96), # | 1 | 6% | t |
|
||||
(116.08, 6.96), # | 1 | 6% | t |
|
||||
# ---------------------------------------------------
|
||||
],
|
||||
res
|
||||
)
|
||||
|
||||
def test_price_included_multi_taxes_with_python_tax_1(self):
|
||||
""" Test multiple price-included taxes with a Python code tax applied last
|
||||
to ensure the total matches the price, and cached tax didn't bypassing the rounding correction.
|
||||
"""
|
||||
tax_12_percent = self.env['account.tax'].create({
|
||||
'name': "Tax 12%",
|
||||
'amount_type': 'percent',
|
||||
'amount': 12.0,
|
||||
'price_include': True,
|
||||
'include_base_amount': False,
|
||||
'sequence': 1, # Ensure this tax is applied first
|
||||
})
|
||||
|
||||
tax_python = self.env['account.tax'].create({
|
||||
'name': "Python Tax",
|
||||
'amount_type': 'code',
|
||||
'python_compute': "result = 22.503",
|
||||
'price_include': True,
|
||||
'include_base_amount': False,
|
||||
'sequence': 2, # Ensure this tax is applied after the 12% tax
|
||||
})
|
||||
|
||||
taxes = tax_12_percent + tax_python
|
||||
res = taxes.compute_all(516.00)
|
||||
|
||||
self._check_compute_all_results(
|
||||
516.0, # total_included
|
||||
440.63, # total_excluded
|
||||
[
|
||||
(440.63, 52.87),
|
||||
(440.63, 22.5),
|
||||
],
|
||||
res
|
||||
)
|
||||
|
||||
def test_price_included_multi_taxes_with_python_tax_2(self):
|
||||
tax_python = self.env['account.tax'].create({
|
||||
'name': "Python Tax",
|
||||
'amount_type': 'code',
|
||||
'python_compute': "result = 5",
|
||||
'price_include': True,
|
||||
'include_base_amount': True,
|
||||
'sequence': 1, # Ensure this tax is applied first
|
||||
})
|
||||
|
||||
tax_12_percent = self.env['account.tax'].create({
|
||||
'name': "Tax 12%",
|
||||
'amount_type': 'percent',
|
||||
'amount': 15.0,
|
||||
'price_include': True,
|
||||
'include_base_amount': False,
|
||||
'sequence': 2, # Ensure this tax is applied after the 12% tax
|
||||
})
|
||||
|
||||
taxes = tax_python + tax_12_percent
|
||||
res = taxes.compute_all(100.00)
|
||||
|
||||
self._check_compute_all_results(
|
||||
total_included=100.0,
|
||||
total_excluded=81.96,
|
||||
taxes=[
|
||||
(81.96, 5.0),
|
||||
(86.96, 13.04),
|
||||
],
|
||||
res=res,
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue