[FIX] account_tax_balance: Recompute balance for different dates
parent
274da45690
commit
750918418c
|
@ -6,7 +6,7 @@
|
||||||
{
|
{
|
||||||
"name": "Tax Balance",
|
"name": "Tax Balance",
|
||||||
"summary": "Compute tax balances based on date range",
|
"summary": "Compute tax balances based on date range",
|
||||||
"version": "15.0.1.0.0",
|
"version": "15.0.1.0.1",
|
||||||
"development_status": "Mature",
|
"development_status": "Mature",
|
||||||
"category": "Invoices & Payments",
|
"category": "Invoices & Payments",
|
||||||
"website": "https://github.com/OCA/account-financial-reporting",
|
"website": "https://github.com/OCA/account-financial-reporting",
|
||||||
|
|
|
@ -81,6 +81,12 @@ class AccountTax(models.Model):
|
||||||
ids_with_moves = self._account_tax_ids_with_moves()
|
ids_with_moves = self._account_tax_ids_with_moves()
|
||||||
return [("id", "in", ids_with_moves)]
|
return [("id", "in", ids_with_moves)]
|
||||||
|
|
||||||
|
@api.depends_context(
|
||||||
|
"from_date",
|
||||||
|
"to_date",
|
||||||
|
"company_ids",
|
||||||
|
"target_move",
|
||||||
|
)
|
||||||
def _compute_balance(self):
|
def _compute_balance(self):
|
||||||
for tax in self:
|
for tax in self:
|
||||||
tax.balance_regular = tax.compute_balance(
|
tax.balance_regular = tax.compute_balance(
|
||||||
|
|
|
@ -3,14 +3,17 @@
|
||||||
# Copyright 2019 Andrea Stirpe <a.stirpe@onestein.nl>
|
# Copyright 2019 Andrea Stirpe <a.stirpe@onestein.nl>
|
||||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||||
|
|
||||||
from datetime import datetime
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
from dateutil.rrule import MONTHLY
|
from dateutil.rrule import MONTHLY
|
||||||
|
|
||||||
import odoo
|
import odoo
|
||||||
|
from odoo import fields
|
||||||
from odoo.fields import Date
|
from odoo.fields import Date
|
||||||
from odoo.tests.common import HttpCase
|
from odoo.tests.common import HttpCase
|
||||||
|
|
||||||
|
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
|
||||||
|
|
||||||
|
|
||||||
@odoo.tests.tagged("post_install", "-at_install")
|
@odoo.tests.tagged("post_install", "-at_install")
|
||||||
class TestAccountTaxBalance(HttpCase):
|
class TestAccountTaxBalance(HttpCase):
|
||||||
|
@ -260,3 +263,42 @@ class TestAccountTaxBalance(HttpCase):
|
||||||
tax.refresh()
|
tax.refresh()
|
||||||
self.assertEqual(tax.base_balance, 175.0)
|
self.assertEqual(tax.base_balance, 175.0)
|
||||||
self.assertEqual(tax.balance, 17.5)
|
self.assertEqual(tax.balance, 17.5)
|
||||||
|
|
||||||
|
|
||||||
|
class TestInvoicingBalance(AccountTestInvoicingCommon):
|
||||||
|
def test_balance_recomputation(self):
|
||||||
|
"""Check that balances are computed correctly for different dates."""
|
||||||
|
partner = self.partner_a
|
||||||
|
tax = self.tax_sale_a
|
||||||
|
today = fields.Date.today()
|
||||||
|
self.init_invoice(
|
||||||
|
"in_invoice",
|
||||||
|
partner=partner,
|
||||||
|
invoice_date=today,
|
||||||
|
post=True,
|
||||||
|
amounts=[100],
|
||||||
|
taxes=tax,
|
||||||
|
)
|
||||||
|
tomorrow = today + timedelta(days=1)
|
||||||
|
self.init_invoice(
|
||||||
|
"in_invoice",
|
||||||
|
partner=partner,
|
||||||
|
invoice_date=tomorrow,
|
||||||
|
post=True,
|
||||||
|
amounts=[200],
|
||||||
|
taxes=tax,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Check today's balance
|
||||||
|
self.check_date_balance(tax, today, -15)
|
||||||
|
|
||||||
|
# Check tomorrow's balance
|
||||||
|
self.check_date_balance(tax, tomorrow, -30)
|
||||||
|
|
||||||
|
def check_date_balance(self, tax, date, balance):
|
||||||
|
"""Compare expected balance with tax's balance in specified date."""
|
||||||
|
tax = tax.with_context(
|
||||||
|
from_date=date,
|
||||||
|
to_date=date,
|
||||||
|
)
|
||||||
|
self.assertEqual(tax.balance, balance)
|
||||||
|
|
Loading…
Reference in New Issue