[IMP] project: set default analytic account and analytic tags in task
Currently, the project's analytic account and analytic tags are not set by default in the task. Technical- - In this task, we have added a demo of analytic tags in the project. - The default_get() method does not call when the demo data is loaded, so the analytic account and analytic tags are not set. So we called default_get() from _load_records_create(). task-2861376 closes odoo/odoo#94144 Related: odoo/enterprise#28656 Signed-off-by: Laurent Stukkens (ltu) <ltu@odoo.com>
This commit is contained in:
committed by
Prakash Prajapati
parent
02d485779f
commit
873dd773c0
@@ -13,9 +13,13 @@ class AccountAnalyticLine(models.Model):
|
||||
_inherit = 'account.analytic.line'
|
||||
|
||||
@api.model
|
||||
def _get_favorite_project_id(self):
|
||||
last_timesheet_ids = self.search([('user_id', '=', self._uid), ('project_id', '!=', False)], limit=5)
|
||||
if len(last_timesheet_ids) == 5 and len(last_timesheet_ids.project_id) == 1:
|
||||
def _get_favorite_project_id(self, employee_id=False):
|
||||
employee_id = employee_id or self.env.user.employee_id.id
|
||||
last_timesheet_ids = self.search([
|
||||
('employee_id', '=', employee_id),
|
||||
('project_id', '!=', False),
|
||||
], limit=5)
|
||||
if len(last_timesheet_ids.project_id) == 1:
|
||||
return last_timesheet_ids.project_id.id
|
||||
return False
|
||||
|
||||
@@ -27,7 +31,8 @@ class AccountAnalyticLine(models.Model):
|
||||
if not self.env.context.get('default_employee_id') and 'employee_id' in field_list and result.get('user_id'):
|
||||
result['employee_id'] = self.env['hr.employee'].search([('user_id', '=', result['user_id']), ('company_id', '=', result.get('company_id', self.env.company.id))], limit=1).id
|
||||
if not self._context.get('default_project_id') and 'project_id' in field_list:
|
||||
favorite_project_id = self._get_favorite_project_id()
|
||||
employee_id = result.get('employee_id', self.env.context.get('default_employee_id', False))
|
||||
favorite_project_id = self._get_favorite_project_id(employee_id)
|
||||
if favorite_project_id:
|
||||
result['project_id'] = favorite_project_id
|
||||
return result
|
||||
|
||||
@@ -1819,8 +1819,9 @@ class Task(models.Model):
|
||||
)
|
||||
if partner_id:
|
||||
vals['partner_id'] = partner_id
|
||||
if vals.get('project_id'):
|
||||
project = self.env['project.project'].browse(vals.get('project_id'))
|
||||
project_id = vals.get('project_id', self.env.context.get('default_project_id'))
|
||||
if project_id:
|
||||
project = self.env['project.project'].browse(project_id)
|
||||
if project.analytic_account_id:
|
||||
vals['analytic_account_id'] = project.analytic_account_id.id
|
||||
if project.analytic_tag_ids:
|
||||
@@ -1902,6 +1903,9 @@ class Task(models.Model):
|
||||
else:
|
||||
for field_name in self._get_recurrence_fields() + ['recurring_task']:
|
||||
vals.pop(field_name, None)
|
||||
project_id = vals.get('project_id')
|
||||
if project_id:
|
||||
self = self.with_context(default_project_id=project_id)
|
||||
return super()._load_records_create(vals_list)
|
||||
|
||||
@api.model_create_multi
|
||||
|
||||
Reference in New Issue
Block a user