[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:
Kartik Chavda
2022-08-04 18:35:11 +02:00
committed by Prakash Prajapati
parent 02d485779f
commit 873dd773c0
2 changed files with 15 additions and 6 deletions
+9 -4
View File
@@ -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
+6 -2
View File
@@ -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