79 lines
3.2 KiB
Python
79 lines
3.2 KiB
Python
|
# -*- 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")
|