forked from Mapan/odoo17e
111 lines
3.9 KiB
Python
111 lines
3.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details
|
|
|
|
from odoo import Command
|
|
from odoo.tests.common import TransactionCase
|
|
from odoo.addons.sale_timesheet.tests.common import TestCommonSaleTimesheet
|
|
|
|
|
|
class TestFsmFlowCommon(TransactionCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestFsmFlowCommon, cls).setUpClass()
|
|
|
|
cls.employee_user2 = cls.env['hr.employee'].create({
|
|
'name': 'Employee User 2',
|
|
'hourly_cost': 15,
|
|
})
|
|
|
|
cls.employee_user3 = cls.env['hr.employee'].create({
|
|
'name': 'Employee User 2',
|
|
'hourly_cost': 15,
|
|
})
|
|
|
|
cls.project_user = cls.env['res.users'].create({
|
|
'name': 'Armande Project_user',
|
|
'login': 'Armande',
|
|
'email': 'armande.project_user@example.com',
|
|
'groups_id': [(6, 0, [cls.env.ref('industry_fsm.group_fsm_user').id])]
|
|
})
|
|
|
|
cls.fsm_project = cls.env['project.project'].create({
|
|
'name': 'Field Service',
|
|
'is_fsm': True,
|
|
'allow_billable': True,
|
|
'allow_timesheets': True,
|
|
'company_id': cls.env.company.id,
|
|
})
|
|
|
|
cls.partner_1 = cls.env['res.partner'].create({'name': 'A Test Partner 1'})
|
|
|
|
cls.task = cls.env['project.task'].with_context({'mail_create_nolog': True}).create({
|
|
'name': 'Fsm task',
|
|
'user_ids': cls.project_user,
|
|
'project_id': cls.fsm_project.id})
|
|
|
|
cls.service_product_ordered = cls.env['product.product'].create({
|
|
'name': 'Individual Workplace',
|
|
'list_price': 885.0,
|
|
'type': 'service',
|
|
'invoice_policy': 'order',
|
|
'taxes_id': False,
|
|
})
|
|
|
|
cls.service_product_delivered = cls.env['product.product'].create({
|
|
'name': 'Acoustic Bloc Screens',
|
|
'list_price': 2950.0,
|
|
'type': 'service',
|
|
'invoice_policy': 'delivery',
|
|
'taxes_id': False,
|
|
})
|
|
|
|
cls.consu_product_delivered = cls.env['product.product'].create({
|
|
'name': 'Consommable product delivery',
|
|
'list_price': 40,
|
|
'type': 'consu',
|
|
'invoice_policy': 'delivery',
|
|
})
|
|
|
|
cls.consu_product_ordered = cls.env['product.product'].create({
|
|
'name': 'Consommable product ordered',
|
|
'list_price': 50.5,
|
|
'type': 'consu',
|
|
'invoice_policy': 'order',
|
|
})
|
|
|
|
cls.service_timesheet = cls.env['product.product'].create({
|
|
'name': 'service timesheet',
|
|
'detailed_type': 'service',
|
|
'service_policy': 'delivered_timesheet',
|
|
})
|
|
|
|
|
|
class TestFsmFlowSaleCommon(TestFsmFlowCommon, TestCommonSaleTimesheet):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super(TestFsmFlowSaleCommon, cls).setUpClass()
|
|
cls.fsm_project_employee_rate = cls.fsm_project.copy({
|
|
'partner_id': cls.partner_1.id,
|
|
'tasks': False,
|
|
'timesheet_product_id': cls.product_order_timesheet2.id,
|
|
'analytic_account_id': cls.analytic_account_sale.id,
|
|
'sale_line_employee_ids': [
|
|
Command.create({
|
|
'employee_id': cls.employee_user.id,
|
|
'timesheet_product_id': cls.product_order_timesheet1.id,
|
|
}),
|
|
Command.create({
|
|
'employee_id': cls.employee_user2.id,
|
|
'timesheet_product_id': cls.product_delivery_timesheet1.id,
|
|
}),
|
|
Command.create({
|
|
'employee_id': cls.employee_user3.id,
|
|
'timesheet_product_id': cls.product_delivery_timesheet2.id,
|
|
})
|
|
]
|
|
})
|
|
# Compute the _compute_price_id, because this one is not trigger because of the _compute_sale_line_id of this same model in this module.
|
|
cls.fsm_project_employee_rate.sale_line_employee_ids._compute_price_unit()
|