1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/industry_fsm_sale/tests/common.py
2024-12-10 09:04:09 +07:00

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()