73 lines
2.6 KiB
Python
73 lines
2.6 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details
|
|
|
|
from datetime import datetime
|
|
from dateutil.relativedelta import relativedelta
|
|
from odoo.tests import Form, tagged
|
|
from freezegun import freeze_time
|
|
|
|
from .common import TestIndustryFsmCommon
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestAutoCreateFsmProject(TestIndustryFsmCommon):
|
|
|
|
def test_default_project_fsm_subtasks(self):
|
|
_, fsm_project_B = self.env['project.project'].create([
|
|
{
|
|
'name': 'Field Service A',
|
|
'is_fsm': True,
|
|
'company_id': self.env.company.id,
|
|
'allow_timesheets': True,
|
|
'sequence': 100,
|
|
},
|
|
{
|
|
'name': 'Field Service B',
|
|
'is_fsm': True,
|
|
'company_id': self.env.company.id,
|
|
'allow_timesheets': True,
|
|
'sequence': 200,
|
|
}
|
|
])
|
|
task = self.env['project.task'].create({
|
|
'name': 'Fsm task',
|
|
'project_id': fsm_project_B.id,
|
|
'partner_id': self.partner.id,
|
|
})
|
|
subtask = self.env['project.task'].with_context(
|
|
fsm_mode=True,
|
|
default_parent_id=task.id,
|
|
default_project_id=task.project_id.id
|
|
).create({
|
|
'name': 'Fsm subtask',
|
|
'partner_id': self.partner.id,
|
|
})
|
|
self.assertEqual(subtask.project_id, fsm_project_B)
|
|
|
|
@freeze_time("2025-05-12")
|
|
def test_task_fsm_without_calendar(self):
|
|
fsm_project = self.env['project.project'].create({
|
|
'name': 'Field Service A',
|
|
'is_fsm': True,
|
|
'company_id': self.env.company.id,
|
|
})
|
|
employee = self.env['hr.employee'].create({
|
|
'name': 'Test Employee', 'user_id': self.env.user.id,
|
|
})
|
|
employee.resource_id.write({'calendar_id': False})
|
|
now = datetime.combine(datetime.now(), datetime.min.time())
|
|
|
|
# first save
|
|
task_form = Form(self.env['project.task'], view="project.view_task_form2")
|
|
task_form.name = 'test task'
|
|
task_form.project_id = fsm_project
|
|
task_form.partner_id = self.partner
|
|
task_form.user_ids = self.env.user
|
|
task_form.planned_date_begin = False
|
|
task_form.date_deadline = False
|
|
task_form.save()
|
|
|
|
# second save
|
|
task_form.planned_date_begin = now
|
|
task_form.date_deadline = now + relativedelta(days=1)
|
|
task = task_form.save()
|
|
self.assertEqual(task.allocated_hours, 8.0, "the task allocated hours should be 8.0")
|