2018-01-16 06:58:15 +01:00
|
|
|
# -*- coding: utf-8 -*-
|
2018-01-16 11:34:37 +01:00
|
|
|
# Part of Odoo, Flectra. See LICENSE file for full copyright and licensing details.
|
2018-01-16 06:58:15 +01:00
|
|
|
|
2018-01-16 11:34:37 +01:00
|
|
|
from flectra.tests import common
|
2018-01-16 06:58:15 +01:00
|
|
|
|
|
|
|
|
|
|
|
class CommonTest(common.SavepointCase):
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def setUpClass(cls):
|
|
|
|
super(CommonTest, cls).setUpClass()
|
|
|
|
|
|
|
|
# Create payable account for the expense
|
|
|
|
user_type = cls.env.ref('account.data_account_type_payable')
|
|
|
|
cls.account_payable = cls.env['account.account'].create({
|
|
|
|
'code': 'X1111',
|
|
|
|
'name': 'HR Expense - Test Payable Account',
|
|
|
|
'user_type_id': user_type.id,
|
|
|
|
'reconcile': True
|
|
|
|
})
|
|
|
|
|
|
|
|
# Create expenses account for the expense
|
|
|
|
user_type = cls.env.ref('account.data_account_type_expenses')
|
|
|
|
cls.account_expense = cls.env['account.account'].create({
|
|
|
|
'code': 'X2120',
|
|
|
|
'name': 'HR Expense - Test Purchase Account',
|
|
|
|
'user_type_id': user_type.id
|
|
|
|
})
|
|
|
|
|
|
|
|
# User groups
|
|
|
|
user_group_employee = cls.env.ref('base.group_user')
|
|
|
|
user_group_manager = cls.env.ref('hr_expense.group_hr_expense_manager')
|
|
|
|
|
|
|
|
# User and Employee Data
|
|
|
|
Users = cls.env['res.users'].with_context({'no_reset_password': True, 'mail_create_nosubscribe': True, 'mail_create_nolog': True})
|
|
|
|
cls.user_employee = Users.create({
|
|
|
|
'name': 'Johnny Employee',
|
|
|
|
'login': 'john',
|
|
|
|
'email': 'john@example.com',
|
|
|
|
'notification_type': 'email',
|
|
|
|
'groups_id': [(6, 0, [user_group_employee.id])],
|
|
|
|
})
|
|
|
|
cls.user_manager = Users.create({
|
|
|
|
'name': 'Robert Manager',
|
|
|
|
'login': 'rob',
|
|
|
|
'email': 'rob@example.com',
|
|
|
|
'notification_type': 'email',
|
|
|
|
'groups_id': [(6, 0, [user_group_manager.id])],
|
|
|
|
})
|
|
|
|
cls.employee = cls.env['hr.employee'].create({
|
|
|
|
'name': 'Johnny Employee',
|
|
|
|
'address_home_id': cls.user_employee.partner_id.id,
|
|
|
|
'address_id': cls.user_employee.partner_id.id,
|
|
|
|
})
|
|
|
|
cls.user_manager.partner_id.write({'property_account_payable_id': cls.account_payable.id})
|
|
|
|
cls.user_employee.partner_id.write({'property_account_payable_id': cls.account_payable.id})
|
|
|
|
|
|
|
|
# Expense Products
|
|
|
|
cls.product_ordered_cost = cls.env['product.product'].create({
|
|
|
|
'name': "Ordered at cost",
|
|
|
|
'standard_price': 8,
|
|
|
|
'list_price': 10,
|
|
|
|
'type': 'consu',
|
|
|
|
'invoice_policy': 'order',
|
|
|
|
'expense_policy': 'cost',
|
|
|
|
'default_code': 'CONSU-ORDERED1',
|
|
|
|
'service_type': 'manual',
|
|
|
|
'taxes_id': False,
|
|
|
|
'property_account_expense_id': cls.account_expense.id,
|
|
|
|
})
|
|
|
|
|
|
|
|
cls.product_deliver_cost = cls.env['product.product'].create({
|
|
|
|
'name': "Delivered at cost",
|
|
|
|
'standard_price': 8,
|
|
|
|
'list_price': 10,
|
|
|
|
'type': 'consu',
|
|
|
|
'invoice_policy': 'delivery',
|
|
|
|
'expense_policy': 'cost',
|
|
|
|
'default_code': 'CONSU-DELI1',
|
|
|
|
'service_type': 'manual',
|
|
|
|
'taxes_id': False,
|
|
|
|
'property_account_expense_id': cls.account_expense.id,
|
|
|
|
})
|
|
|
|
|
|
|
|
cls.product_order_sales_price = cls.env['product.product'].create({
|
|
|
|
'name': "Ordered at sales price",
|
|
|
|
'standard_price': 8,
|
|
|
|
'list_price': 10,
|
|
|
|
'type': 'consu',
|
|
|
|
'invoice_policy': 'order',
|
|
|
|
'expense_policy': 'sales_price',
|
|
|
|
'default_code': 'CONSU-ORDERED2',
|
|
|
|
'service_type': 'manual',
|
|
|
|
'taxes_id': False,
|
|
|
|
'property_account_expense_id': cls.account_expense.id,
|
|
|
|
})
|
|
|
|
|
|
|
|
cls.product_deliver_sales_price = cls.env['product.product'].create({
|
|
|
|
'name': "Delivered at sales price",
|
|
|
|
'standard_price': 8,
|
|
|
|
'list_price': 10,
|
|
|
|
'type': 'consu',
|
|
|
|
'invoice_policy': 'delivery',
|
|
|
|
'expense_policy': 'sales_price',
|
|
|
|
'default_code': 'CONSU-DELI2',
|
|
|
|
'service_type': 'manual',
|
|
|
|
'taxes_id': False,
|
|
|
|
'property_account_expense_id': cls.account_expense.id,
|
|
|
|
})
|
|
|
|
|
|
|
|
cls.product_no_expense = cls.env['product.product'].create({
|
|
|
|
'name': "No expense",
|
|
|
|
'standard_price': 8,
|
|
|
|
'list_price': 10,
|
|
|
|
'type': 'consu',
|
|
|
|
'invoice_policy': 'delivery',
|
|
|
|
'expense_policy': 'no',
|
|
|
|
'default_code': 'CONSU-NO',
|
|
|
|
'service_type': 'manual',
|
|
|
|
'taxes_id': False,
|
|
|
|
'property_account_expense_id': cls.account_expense.id,
|
|
|
|
})
|
|
|
|
|
|
|
|
# Expense report
|
|
|
|
cls.journal = cls.env['account.journal'].create({
|
|
|
|
'name': 'Purchase Journal - Test',
|
|
|
|
'code': 'HRTPJ',
|
|
|
|
'type': 'purchase',
|
|
|
|
'company_id': cls.env.user.company_id.id,
|
|
|
|
})
|
|
|
|
cls.expense_sheet = cls.env['hr.expense.sheet'].create({
|
|
|
|
'name': 'Expense for Johnny Employee',
|
|
|
|
'employee_id': cls.employee.id,
|
|
|
|
'journal_id': cls.journal.id,
|
|
|
|
})
|