Files

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