Files
enterprise-addons/account_budget/tests/common.py
T

129 lines
5.2 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
from odoo.fields import Command
class TestAccountBudgetCommon(AccountTestInvoicingCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
# ==== Products ====
cls.product_a = cls.env['product.product'].create({
'name': 'product_a',
'standard_price': 100.0,
'supplier_taxes_id': False
})
cls.product_b = cls.env['product.product'].create({
'name': 'product_b',
'standard_price': 100.0,
'supplier_taxes_id': False
})
# ==== Analytic accounts ====
cls.analytic_plan_projects = cls.env['account.analytic.plan'].create({'name': 'Projects'})
cls.analytic_plan_departments = cls.env['account.analytic.plan'].create({'name': 'Departments test'})
cls.project_column_name = cls.analytic_plan_projects._column_name()
cls.department_column_name = cls.analytic_plan_departments._column_name()
cls.analytic_account_partner_a = cls.env['account.analytic.account'].create({
'name': 'analytic_account_partner_a',
'partner_id': cls.partner_a.id,
'plan_id': cls.analytic_plan_projects.id,
})
cls.analytic_account_partner_b = cls.env['account.analytic.account'].create({
'name': 'analytic_account_partner_b',
'partner_id': cls.partner_b.id,
'plan_id': cls.analytic_plan_projects.id,
})
cls.analytic_account_administratif = cls.env['account.analytic.account'].create({
'name': 'analytic_account_administratif',
'plan_id': cls.analytic_plan_departments.id,
})
cls.analytic_account_administratif_2 = cls.env['account.analytic.account'].create({
'name': 'analytic_account_administratif_2',
'plan_id': cls.analytic_plan_departments.id,
})
# ==== Budget Analytic ====
cls.budget_analytic_revenue = cls.env['budget.analytic'].create({
'name': 'Budget 2019: Revenue',
'date_from': '2019-01-01',
'date_to': '2019-12-31',
'budget_type': 'revenue',
'state': 'draft',
'user_id': cls.env.ref('base.user_admin').id,
'budget_line_ids': [
Command.create({
'budget_amount': 35000,
cls.project_column_name: cls.analytic_account_partner_a.id,
}),
Command.create({
'budget_amount': 10000,
cls.project_column_name: cls.analytic_account_partner_b.id,
}),
Command.create({
cls.project_column_name: cls.analytic_account_partner_b.id,
cls.department_column_name: cls.analytic_account_administratif.id,
'budget_amount': 10000.0,
}),
]
})
cls.budget_analytic_expense = cls.env['budget.analytic'].create({
'name': 'Budget 2019: Expense',
'date_from': '2019-01-01',
'date_to': '2019-12-31',
'budget_type': 'expense',
'state': 'draft',
'user_id': cls.env.ref('base.user_admin').id,
'budget_line_ids': [
Command.create({
'budget_amount': 55000,
cls.project_column_name: cls.analytic_account_partner_a.id,
}),
Command.create({
'budget_amount': 9000,
cls.project_column_name: cls.analytic_account_partner_b.id,
}),
Command.create({
cls.project_column_name: cls.analytic_account_partner_b.id,
cls.department_column_name: cls.analytic_account_administratif.id,
'budget_amount': 10000.0,
}),
]
})
cls.budget_analytic_both = cls.env['budget.analytic'].create({
'name': 'Budget 2019: Both',
'date_from': '2019-01-01',
'date_to': '2019-12-31',
'budget_type': 'both',
'state': 'draft',
'user_id': cls.env.ref('base.user_admin').id,
'budget_line_ids': [
Command.create({
'budget_amount': 20000,
cls.project_column_name: cls.analytic_account_partner_a.id,
}),
Command.create({
'budget_amount': 5000,
cls.project_column_name: cls.analytic_account_partner_b.id,
}),
Command.create({
cls.project_column_name: cls.analytic_account_partner_b.id,
cls.department_column_name: cls.analytic_account_administratif.id,
'budget_amount': 10000.0,
}),
]
})
def assertBudgetLine(self, budget_line, *, achieved):
budget_line.invalidate_recordset(['achieved_amount'])
self.assertRecordValues(budget_line, [{'achieved_amount': achieved}])