From 1219140de09a5d3b86ead7d21f2b637a077d0966 Mon Sep 17 00:00:00 2001 From: Pawan Kumar Date: Wed, 13 Jan 2021 16:31:58 +0530 Subject: [PATCH] add value from timesheet --- cor_custom/models/analytic.py | 37 ++++++++++++++++++++++------------- cor_custom/models/project.py | 24 +++++++++++++++++------ 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/cor_custom/models/analytic.py b/cor_custom/models/analytic.py index 04ae087..e222f85 100755 --- a/cor_custom/models/analytic.py +++ b/cor_custom/models/analytic.py @@ -9,6 +9,7 @@ from datetime import datetime, time, timedelta from odoo.tools.float_utils import float_round from odoo.tools import DEFAULT_SERVER_DATE_FORMAT, ustr + class AccountAnalyticLine(models.Model): _inherit = 'account.analytic.line' @@ -21,14 +22,14 @@ class AccountAnalyticLine(models.Model): domain = [] if self.employee_id and self.employee_id.user_id: manager_id = self.env['project.project'].search( - [('user_id', '=', self.employee_id.user_id.id),('allow_timesheets', '=', True)]).ids + [('user_id', '=', self.employee_id.user_id.id), ('allow_timesheets', '=', True)]).ids emp_project_ids = self.env['project.project'].search( - [('privacy_visibility', 'in', ('employees', 'portal')),('allow_timesheets', '=', True)]).ids + [('privacy_visibility', 'in', ('employees', 'portal')), ('allow_timesheets', '=', True)]).ids project_ids = self.env['project.project'].search( - [('privacy_visibility', '=', 'followers'),('allow_timesheets', '=', True), + [('privacy_visibility', '=', 'followers'), ('allow_timesheets', '=', True), ('allowed_internal_user_ids', 'in', self.employee_id.user_id.id)]).ids consul_ids = self.env['project.sale.line.employee.map'].search([('employee_id', '=', self.employee_id.id)]) - consul_project_ids = [val.project_id.id for val in consul_ids] + consul_project_ids = [val.project_id.id for val in consul_ids] emp_all_project_ids = manager_id + emp_project_ids + project_ids + consul_project_ids domain = [('id', 'in', list(set(emp_all_project_ids)))] result = { @@ -44,7 +45,7 @@ class AccountAnalyticLine(models.Model): user_ids = [] consul_project_ids = [] if not self.project_id: - cuser = self.env['hr.employee'].search([('user_id','=', self.env.user.id)]).ids + cuser = self.env['hr.employee'].search([('user_id', '=', self.env.user.id)]).ids if self.project_id: consul_ids = self.env['project.sale.line.employee.map'].search([('project_id', '=', self.project_id.id)]) consul_project_ids = [val.employee_id.id for val in consul_ids] @@ -92,23 +93,23 @@ class AccountAnalyticLine(models.Model): fields_name = dict(zip(fields, index)) res = super(AccountAnalyticLine, self).export_data(fields) for index, val in enumerate(res['datas']): - if fields_name.get('date') >=0: + if fields_name.get('date') >= 0: tdateindex = fields_name.get('date') tdate = res['datas'][index][tdateindex] if tdate: res['datas'][index][tdateindex] = datetime.strftime(tdate, "%d/%m/%Y") - if fields_name.get('task_id') >=0: + if fields_name.get('task_id') >= 0: taskindex = fields_name.get('task_id') ttask = res['datas'][index][taskindex] - if type(ttask)==bool: + if type(ttask) == bool: res['datas'][index][taskindex] = '' - if fields_name.get('start_time') >=0: + if fields_name.get('start_time') >= 0: starttimeindex = fields_name.get('start_time') starttime = float(res['datas'][index][starttimeindex]) if starttime: start_time = tools.format_duration(starttime) res['datas'][index][starttimeindex] = start_time - if fields_name.get('end_time') >=0: + if fields_name.get('end_time') >= 0: endtimeindex = fields_name.get('end_time') endtime = float(res['datas'][index][endtimeindex]) if endtime: @@ -128,12 +129,20 @@ class AccountAnalyticLine(models.Model): remain_hour = rec.budgeted_qty - rec.timesheet_hour if vals.get('unit_amount') > remain_hour: raise ValidationError(_("Your can not fill entry more than Budgeted hours"))""" + if vals.get('employee_id') and vals.get('project_id'): + print('VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV', self, vals.get('employee_id'), vals.get('project_id')) + project = self.env['project.project'].search([('id', '=', vals.get('project_id'))]) + if project: + project.consultant_timesheet_hrs.create({'project_id': vals.get('project_id'), + 'employee_id': vals.get('employee_id'), + 'timesheet_hour': vals.get('unit_amount')}) value = super(AccountAnalyticLine, self).create(vals) + if self.project_id: + self.project_id._compute_consultant_timesheet_hour() + print('WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW') return value - - def write(self, vals): - if vals.get('unit_amount') == 0.0: + if vals.get('unit_amount') == 0.0: raise ValidationError(_("Your can not fill 0.0 hour entry")) - return super().write(vals) \ No newline at end of file + return super().write(vals) diff --git a/cor_custom/models/project.py b/cor_custom/models/project.py index a3fdced..340194e 100755 --- a/cor_custom/models/project.py +++ b/cor_custom/models/project.py @@ -65,9 +65,8 @@ class Project(models.Model): manager_hour = fields.Float(string='Manager Hour') employee_hour = fields.Float(string='Employee Hour') - consultant_timesheet_hrs = fields.One2many('consultant.timesheet.hrs', 'project_id', "Timesheet Hrs", store=True, - copy=False, compute='_compute_consultant_timesheet_hour', - help="Consultant timesheet hours") + consultant_timesheet_hrs = fields.One2many('consultant.timesheet.hrs', 'project_id', "Timesheet Hrs", + copy=False, help="Consultant timesheet hours") @api.depends('cost', 'expenses_amt', 'budgeted_revenue') def _compute_calc(self): @@ -134,14 +133,14 @@ class Project(models.Model): record.cost = cost record.budgeted_hour_week = budgeted_hour_week - @api.depends('pricing_type') + #@api.depends('pricing_type') def _compute_consultant_timesheet_hour(self): for val in self: val.consultant_timesheet_hrs = False if val._origin.id: print('SSSSSSSSSSSSSSSSSSSS', val._origin.id) - self._cr.execute('''SELECT project_id, employee_id, SUM(unit_amount) FROM account_analytic_line where project_id = %(project_id)s - GROUP BY project_id, employee_id''', {'project_id': val._origin.id}) + self._cr.execute('''SELECT project_id, employee_id, SUM(unit_amount) FROM account_analytic_line where project_id = 149 + GROUP BY project_id, employee_id''') res = self._cr.fetchone() print('TTTTTTTTTTTTTT', res) if res: @@ -149,6 +148,8 @@ class Project(models.Model): 'employee_id': res[1], 'timesheet_hour': res[2]}) print('RRRRRRRRRRRRRRRRRRR', create_timesheet) + for rec in create_timesheet: + print('vvvvvvvvvvvv', rec) else: val.consultant_timesheet_hrs = False #val.consultant_timesheet_hrs = False @@ -174,6 +175,17 @@ class ProjectConsultantTimesheetHrs(models.Model): else: val.consultant_cost = 0.0 + """def _compute_timesheet_hour(self): + print('QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ') + for val in self: + if val.project_id._origin.id: + self._cr.execute('''SELECT project_id, employee_id, SUM(unit_amount) FROM account_analytic_line + where project_id = %(project_id)s + GROUP BY project_id, employee_id''', + {'project_id': val.project_id._origin.id}) + res = self._cr.fetchone() + print('99999999999999999999999999999999999', res)""" + class InheritProjectProductEmployeeMap(models.Model): _inherit = 'project.sale.line.employee.map'