From 1616e3654ebe9873af1528ec34a5ebb97139f7a5 Mon Sep 17 00:00:00 2001 From: Pawan Kumar Date: Mon, 8 Mar 2021 20:55:30 +0530 Subject: [PATCH 1/2] add method for subproject --- cor_custom/models/analytic.py | 4 ++-- cor_custom/views/analytic_view.xml | 17 ++------------- sub_project/__manifest__.py | 1 + sub_project/models/__init__.py | 3 ++- sub_project/models/analytic.py | 32 +++++++++++++++++++++++++++++ sub_project/views/analytic_view.xml | 13 ++++++++++++ 6 files changed, 52 insertions(+), 18 deletions(-) create mode 100755 sub_project/models/analytic.py create mode 100755 sub_project/views/analytic_view.xml diff --git a/cor_custom/models/analytic.py b/cor_custom/models/analytic.py index f2efbc2..0eda290 100755 --- a/cor_custom/models/analytic.py +++ b/cor_custom/models/analytic.py @@ -14,8 +14,8 @@ import dateutil.parser class AccountAnalyticLine(models.Model): _inherit = 'account.analytic.line' - #start_time = fields.Float(string='Start Time', digits=(16, 2)) - #end_time = fields.Float(string='End Time', digits=(16, 2)) + start_time = fields.Float(string='Start Time', digits=(16, 2)) + end_time = fields.Float(string='End Time', digits=(16, 2)) start_datetime = fields.Datetime("Start Time", required=True) end_datetime = fields.Datetime("End Time", required=True) unit_amount = fields.Float('Duration', default=0.0) diff --git a/cor_custom/views/analytic_view.xml b/cor_custom/views/analytic_view.xml index 5957cde..bf620be 100755 --- a/cor_custom/views/analytic_view.xml +++ b/cor_custom/views/analytic_view.xml @@ -21,6 +21,8 @@ + @@ -178,21 +180,6 @@ - - account.analytic.line.search - account.analytic.line - - - - - - - - - - - - account.analytic.line.calendar account.analytic.line diff --git a/sub_project/__manifest__.py b/sub_project/__manifest__.py index ae3332f..1b22b94 100755 --- a/sub_project/__manifest__.py +++ b/sub_project/__manifest__.py @@ -9,6 +9,7 @@ 'license': '', 'depends': ['base', 'project'], 'data': ['views/sub_project.xml', + #'views/analytic_view.xml', 'security/ir.model.access.csv'], 'demo': [''], 'installable': True, diff --git a/sub_project/models/__init__.py b/sub_project/models/__init__.py index d30a3e9..d5082c4 100755 --- a/sub_project/models/__init__.py +++ b/sub_project/models/__init__.py @@ -1 +1,2 @@ -from . import sub_project \ No newline at end of file +from . import sub_project +from . import analytic \ No newline at end of file diff --git a/sub_project/models/analytic.py b/sub_project/models/analytic.py new file mode 100755 index 0000000..4cba857 --- /dev/null +++ b/sub_project/models/analytic.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details + +from odoo import api, exceptions, fields, models, tools, _ +from odoo.exceptions import UserError, AccessError, ValidationError +from odoo.osv import expression +import math +from datetime import datetime, time, timedelta +from odoo.tools.float_utils import float_round +from odoo.tools import DEFAULT_SERVER_DATE_FORMAT, ustr +import dateutil.parser + + +class AccountAnalyticLineSubProject(models.Model): + _inherit = 'account.analytic.line' + + sub_project = fields.Many2many('project.project', 'project_subproject_timesheet_rel', 'project_id', 'id', + domain="[('is_sub_project', '=', True),('parent_project', '=', False)]", + string='Sub Project') + + + + # @api.onchange('project_id') + # def _onchange_parent_project_id(self): + # if self.project_id: + # parent_project = self.env['project.project'].search([('sub_project', '=', self.project_id.id)], limit=1) + # if parent_project: + # self.parent_project = parent_project.id + # else: + # self.parent_project = False + # else: + # self.parent_project = False \ No newline at end of file diff --git a/sub_project/views/analytic_view.xml b/sub_project/views/analytic_view.xml new file mode 100755 index 0000000..2fcb11f --- /dev/null +++ b/sub_project/views/analytic_view.xml @@ -0,0 +1,13 @@ + + + + account.analytic.line.tree.subproject + account.analytic.line + + + + + + + + From 79df1fb760bba2a289b48ef3afc633e9d33065da Mon Sep 17 00:00:00 2001 From: Pawan Kumar Date: Tue, 9 Mar 2021 01:02:02 +0530 Subject: [PATCH 2/2] add code for project to sub-project --- cor_custom/models/analytic.py | 25 +++++++++++++++++++++++++ cor_custom/views/analytic_view.xml | 3 ++- sub_project/__manifest__.py | 4 ++-- sub_project/models/analytic.py | 6 +++--- sub_project/views/analytic_view.xml | 6 +++--- 5 files changed, 35 insertions(+), 9 deletions(-) diff --git a/cor_custom/models/analytic.py b/cor_custom/models/analytic.py index 0eda290..9b31467 100755 --- a/cor_custom/models/analytic.py +++ b/cor_custom/models/analytic.py @@ -20,7 +20,32 @@ class AccountAnalyticLine(models.Model): end_datetime = fields.Datetime("End Time", required=True) unit_amount = fields.Float('Duration', default=0.0) parent_project = fields.Many2one('project.project', related='project_id.parent_project', string='Parent Project') + sub_project = fields.Many2many('project.project', 'project_subproject_timesheet_rel', 'project_id', 'id', + domain="[('is_sub_project', '=', True)]", + string='Sub Project') + # @api.onchange('employee_id') + # def onchange_employee_id(self): + # res = {} + # emp_ids = [emp.employee_id.id for emp in self.project_id.sale_line_employee_ids] + # res['domain'] = {'employee_id': [('id', 'in', emp_ids)]} + # if 'project_id' in self.env.context: + # # if not self.env.context['project_id']: + # # raise UserError(_('Please save record before add a line')) + # if not emp_ids: + # raise UserError(_('Please add consultant at Invoicing tab before add a line')) + # res['domain'] = {'employee_id': [('id', 'in', emp_ids)]} + # return res + + @api.onchange('project_id') + def _onchange_sub_project_id(self): + self.sub_project = False + res = {} + if self.project_id and self.project_id.sub_project: + res['domain'] = {'sub_project': [('id', 'in', self.project_id.sub_project.ids)]} + else: + res['domain'] = {'sub_project': [('id', '=', False)]} + return res def _default_start_datetime(self): return fields.Datetime.to_string(datetime.combine(fields.Datetime.now(), datetime.min.time())) diff --git a/cor_custom/views/analytic_view.xml b/cor_custom/views/analytic_view.xml index bf620be..27d0b17 100755 --- a/cor_custom/views/analytic_view.xml +++ b/cor_custom/views/analytic_view.xml @@ -69,6 +69,7 @@ + @@ -77,7 +78,7 @@ - + diff --git a/sub_project/__manifest__.py b/sub_project/__manifest__.py index 1b22b94..bb4bcb7 100755 --- a/sub_project/__manifest__.py +++ b/sub_project/__manifest__.py @@ -9,10 +9,10 @@ 'license': '', 'depends': ['base', 'project'], 'data': ['views/sub_project.xml', - #'views/analytic_view.xml', + #'views/analytic_view.xml', 'security/ir.model.access.csv'], 'demo': [''], 'installable': True, 'auto_install': False, -} \ No newline at end of file +} diff --git a/sub_project/models/analytic.py b/sub_project/models/analytic.py index 4cba857..7a1efcc 100755 --- a/sub_project/models/analytic.py +++ b/sub_project/models/analytic.py @@ -14,9 +14,9 @@ import dateutil.parser class AccountAnalyticLineSubProject(models.Model): _inherit = 'account.analytic.line' - sub_project = fields.Many2many('project.project', 'project_subproject_timesheet_rel', 'project_id', 'id', - domain="[('is_sub_project', '=', True),('parent_project', '=', False)]", - string='Sub Project') + # sub_project = fields.Many2many('project.project', 'project_subproject_timesheet_rel', 'project_id', 'id', + # domain="[('is_sub_project', '=', True),('parent_project', '=', False)]", + # string='Sub Project') diff --git a/sub_project/views/analytic_view.xml b/sub_project/views/analytic_view.xml index 2fcb11f..aa4612e 100755 --- a/sub_project/views/analytic_view.xml +++ b/sub_project/views/analytic_view.xml @@ -1,13 +1,13 @@ - +