Odoo18-Base/addons/hr_expense/tests/test_expenses_tax.py

79 lines
3.2 KiB
Python
Raw Permalink Normal View History

2025-03-10 10:52:11 +07:00
# -*- coding: utf-8 -*-
from odoo import Command
from odoo.addons.hr_expense.tests.common import TestExpenseCommon
from odoo.tests import tagged
@tagged('post_install', '-at_install')
class TestExpensesTax(TestExpenseCommon):
def test_tax_is_used_when_in_transactions(self):
''' Ensures that a tax is set to used when it is part of some transactions '''
# Account.move is one type of transaction
tax_expense = self.env['account.tax'].create({
'name': 'test_is_used_expenses',
'amount': '100',
'include_base_amount': True,
})
self.env['hr.expense'].create({
'name': 'Test Tax Used',
'employee_id': self.expense_employee.id,
'product_id': self.product_c.id,
'total_amount_currency': 350.00,
'tax_ids': [Command.set(tax_expense.ids)]
})
tax_expense.invalidate_model(fnames=['is_used'])
self.assertTrue(tax_expense.is_used)
def test_expense_by_company_with_caba_tax(self):
"""When using cash basis tax in an expense paid by the company, the transition account should not be used."""
caba_tag = self.env['account.account.tag'].create({
'name': 'Cash Basis Tag Final Account',
'applicability': 'taxes',
})
caba_transition_account = self.env['account.account'].create({
'name': 'Cash Basis Tax Transition Account',
'account_type': 'asset_current',
'code': '131001',
})
caba_tax = self.env['account.tax'].create({
'name': 'Cash Basis Tax',
'tax_exigibility': 'on_payment',
'amount': 15,
'cash_basis_transition_account_id': caba_transition_account.id,
'invoice_repartition_line_ids': [
Command.create({
'factor_percent': 100,
'repartition_type': 'base',
}),
Command.create({
'factor_percent': 100,
'repartition_type': 'tax',
'tag_ids': caba_tag.ids,
}),
]
})
expense_sheet = self.env['hr.expense.sheet'].create({
'name': 'Company Cash Basis Expense Report',
'employee_id': self.expense_employee.id,
'payment_mode': 'company_account',
'approval_state': 'approve',
'expense_line_ids': [Command.create({
'name': 'Company Cash Basis Expense',
'product_id': self.product_c.id,
'payment_mode': 'company_account',
'total_amount': 20.0,
'employee_id': self.expense_employee.id,
'tax_ids': [Command.set(caba_tax.ids)],
})]
})
expense_sheet.action_sheet_move_create()
moves = expense_sheet.account_move_ids
tax_lines = moves.line_ids.filtered(lambda line: line.tax_line_id == caba_tax)
self.assertNotEqual(tax_lines.account_id, caba_transition_account, "The tax should not be on the transition account")
self.assertEqual(tax_lines.tax_tag_ids, caba_tag, "The tax should still retrieve its tags")