Add test for update chart from template
issue7801 review74391002
This commit is contained in:
1 parent
1792996783
commit
1db9ad8285
1 file changed
+158
-8
+158
-8
@@ -41,14 +41,25 @@ def create_chart(company, tax=False):
|
||||
tax.credit_note_account = tax_account
|
||||
tax.save()
|
||||
|
||||
tax_code = TaxCodeTemplate()
|
||||
tax_code.name = 'Tax Code'
|
||||
tax_code.account = template
|
||||
tax_code.save()
|
||||
base_code = TaxCodeTemplate()
|
||||
base_code.name = 'Base Code'
|
||||
base_code.account = template
|
||||
base_code.save()
|
||||
TaxCodeTemplate.create([{
|
||||
'name': 'Tax Code',
|
||||
'account': template,
|
||||
'lines': [('create', [{
|
||||
'operator': '+',
|
||||
'type': 'invoice',
|
||||
'amount': 'tax',
|
||||
'tax': tax.id,
|
||||
}])],
|
||||
}, {
|
||||
'name': 'Base Code',
|
||||
'account': template,
|
||||
'lines': [('create', [{
|
||||
'operator': '+',
|
||||
'type': 'invoice',
|
||||
'amount': 'base',
|
||||
'tax': tax.id,
|
||||
}])],
|
||||
}])
|
||||
|
||||
session_id, _, _ = CreateChart.create()
|
||||
create_chart = CreateChart(session_id)
|
||||
@@ -1062,6 +1073,145 @@ class AccountTestCase(ModuleTestCase):
|
||||
self.assertListEqual(
|
||||
tax_rule.apply(tax, {}), [target_tax.id, tax.id])
|
||||
|
||||
@with_transaction()
|
||||
def test_update_chart(self):
|
||||
'Test all template models are updated when updating chart'
|
||||
pool = Pool()
|
||||
TypeTemplate = pool.get('account.account.type.template')
|
||||
AccountTemplate = pool.get('account.account.template')
|
||||
TaxTemplate = pool.get('account.tax.template')
|
||||
TaxCodeTemplate = pool.get('account.tax.code.template')
|
||||
ModelData = pool.get('ir.model.data')
|
||||
UpdateChart = pool.get('account.update_chart', type='wizard')
|
||||
Type = pool.get('account.account.type')
|
||||
Account = pool.get('account.account')
|
||||
Tax = pool.get('account.tax')
|
||||
TaxCode = pool.get('account.tax.code')
|
||||
|
||||
def check():
|
||||
for type_ in Type.search([]):
|
||||
self.assertEqual(type_.name, type_.template.name)
|
||||
self.assertEqual(
|
||||
type_.balance_sheet, type_.template.balance_sheet)
|
||||
self.assertEqual(
|
||||
type_.income_statement, type_.template.income_statement)
|
||||
self.assertEqual(
|
||||
type_.display_balance, type_.template.display_balance)
|
||||
|
||||
for account in Account.search([]):
|
||||
self.assertEqual(account.name, account.template.name)
|
||||
self.assertEqual(account.code, account.template.code)
|
||||
self.assertEqual(account.type.template, account.template.type)
|
||||
self.assertEqual(account.reconcile, account.template.reconcile)
|
||||
self.assertEqual(account.kind, account.template.kind)
|
||||
self.assertEqual(account.deferral, account.template.deferral)
|
||||
self.assertEqual(
|
||||
account.start_date, account.template.start_date)
|
||||
self.assertEqual(account.end_date, account.template.end_date)
|
||||
self.assertEqual(
|
||||
account.party_required, account.template.party_required)
|
||||
self.assertEqual(
|
||||
account.general_ledger_balance,
|
||||
account.template.general_ledger_balance)
|
||||
self.assertEqual(
|
||||
set(t.template for t in account.taxes),
|
||||
set(t for t in account.template.taxes))
|
||||
|
||||
for tax_code in TaxCode.search([]):
|
||||
self.assertEqual(tax_code.name, tax_code.template.name)
|
||||
self.assertEqual(tax_code.code, tax_code.template.code)
|
||||
for line in tax_code.lines:
|
||||
self.assertEqual(line.code.template, line.template.code)
|
||||
self.assertEqual(line.operator, line.template.operator)
|
||||
self.assertEqual(line.type, line.template.type)
|
||||
self.assertEqual(line.tax.template, line.template.tax)
|
||||
|
||||
for tax in Tax.search([]):
|
||||
self.assertEqual(tax.name, tax.template.name)
|
||||
self.assertEqual(tax.description, tax.template.description)
|
||||
self.assertEqual(tax.type, tax.template.type)
|
||||
self.assertEqual(tax.rate, tax.template.rate)
|
||||
self.assertEqual(tax.amount, tax.template.amount)
|
||||
self.assertEqual(
|
||||
tax.update_unit_price, tax.template.update_unit_price)
|
||||
self.assertEqual(
|
||||
tax.start_date, tax.template.start_date)
|
||||
self.assertEqual(tax.end_date, tax.template.end_date)
|
||||
self.assertEqual(
|
||||
tax.invoice_account.template, tax.template.invoice_account)
|
||||
self.assertEqual(
|
||||
tax.credit_note_account.template,
|
||||
tax.template.credit_note_account)
|
||||
|
||||
company = create_company()
|
||||
with set_company(company):
|
||||
create_chart(company, True)
|
||||
|
||||
self.assertEqual(Type.search([], count=True), 16)
|
||||
self.assertEqual(Account.search([], count=True), 7)
|
||||
self.assertEqual(Tax.search([], count=True), 1)
|
||||
|
||||
check()
|
||||
|
||||
with Transaction().set_user(0):
|
||||
root_type = TypeTemplate(ModelData.get_id(
|
||||
'account', 'account_type_template_minimal_en'))
|
||||
root_type.name = 'Updated Minimal Chart'
|
||||
root_type.save()
|
||||
chart = AccountTemplate(ModelData.get_id(
|
||||
'account', 'account_template_root_en'))
|
||||
new_type = TypeTemplate()
|
||||
new_type.name = 'New Type'
|
||||
new_type.parent = root_type
|
||||
new_type.save()
|
||||
new_account = AccountTemplate()
|
||||
new_account.name = 'New Account'
|
||||
new_account.parent = chart
|
||||
new_account.type = new_type
|
||||
new_account.kind = 'other'
|
||||
new_account.save()
|
||||
updated_tax, = TaxTemplate.search([])
|
||||
updated_tax.name = 'VAT'
|
||||
updated_tax.invoice_account = new_account
|
||||
updated_tax.save()
|
||||
updated_account = AccountTemplate(ModelData.get_id(
|
||||
'account', 'account_template_revenue_en'))
|
||||
updated_account.code = 'REV'
|
||||
updated_account.name = 'Updated Account'
|
||||
updated_account.reconcile = True
|
||||
updated_account.end_date = datetime.date.today()
|
||||
updated_account.taxes = [updated_tax]
|
||||
updated_account.save()
|
||||
new_tax = TaxTemplate()
|
||||
new_tax.name = new_tax.description = '10% VAT'
|
||||
new_tax.type = 'percentage'
|
||||
new_tax.rate = Decimal('0.1')
|
||||
new_tax.account = chart
|
||||
new_tax.invoice_account = new_account
|
||||
new_tax.credit_note_account = new_account
|
||||
new_tax.save()
|
||||
updated_tax_code, = TaxCodeTemplate.search([
|
||||
('name', '=', 'Tax Code'),
|
||||
])
|
||||
updated_tax_code.name = 'Updated Tax Code'
|
||||
updated_tax_code.save()
|
||||
updated_tax_code_line, = updated_tax_code.lines
|
||||
updated_tax_code_line.operator = '-'
|
||||
updated_tax_code_line.save()
|
||||
|
||||
with set_company(company):
|
||||
account, = Account.search([('parent', '=', None)])
|
||||
session_id, _, _ = UpdateChart.create()
|
||||
update_chart = UpdateChart(session_id)
|
||||
update_chart.start.account = account
|
||||
update_chart.transition_update()
|
||||
|
||||
self.assertEqual(Type.search([], count=True), 17)
|
||||
self.assertEqual(Account.search([], count=True), 8)
|
||||
self.assertEqual(Tax.search([], count=True), 2)
|
||||
|
||||
check()
|
||||
|
||||
|
||||
def suite():
|
||||
suite = trytond.tests.test_tryton.suite()
|
||||
|
||||
Reference in new issue
Block a user