From 9af18685271eeac41e14cd5cee8c67f53efba0eb Mon Sep 17 00:00:00 2001 From: projectsodoo Date: Thu, 7 Jan 2021 14:54:56 +0530 Subject: [PATCH] updated domain, profit --- cor_custom/models/analytic.py | 45 ++++++++++++++++++++++++++++++ cor_custom/models/project.py | 18 +++++++----- cor_custom/views/analytic_view.xml | 11 ++++++++ cor_custom/views/project_view.xml | 4 +-- planning/models/planning.py | 4 +-- project_forecast/i18n/he_IL .po | 0 project_maintenance/i18n/he_IL.po | 0 7 files changed, 71 insertions(+), 11 deletions(-) mode change 100644 => 100755 project_forecast/i18n/he_IL .po mode change 100644 => 100755 project_maintenance/i18n/he_IL.po diff --git a/cor_custom/models/analytic.py b/cor_custom/models/analytic.py index 8d4c801..4fe75d0 100755 --- a/cor_custom/models/analytic.py +++ b/cor_custom/models/analytic.py @@ -14,7 +14,52 @@ class AccountAnalyticLine(models.Model): start_time = fields.Float(string='Start Time', digits=(16, 2)) end_time = fields.Float(string='End Time', digits=(16, 2)) + unit_amount = fields.Float('Duration', default=0.0) + @api.onchange('employee_id') + def _onchange_employee_id(self): + 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_forecast', '=', True)]).ids + emp_project_ids = self.env['project.project'].search( + [('privacy_visibility', 'in', ('employees', 'portal')), ('allow_forecast', '=', True)]).ids + project_ids = self.env['project.project'].search( + [('privacy_visibility', '=', 'followers'), ('allow_forecast', '=', 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] + emp_all_project_ids = manager_id + emp_project_ids + project_ids + consul_project_ids + domain = [('id', 'in', list(set(emp_all_project_ids)))] + result = { + 'domain': {'project_id': domain}, + } + return result + + @api.onchange('project_id') + def _onchange_project_id(self): + domain = [] if not self.project_id else [('project_id', '=', self.project_id.id)] + manager_id = [] + user_ids = [] + consul_project_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] + if self.project_id and self.project_id.user_id: + manager_id = self.env['hr.employee'].search([('user_id', '=', self.project_id.user_id.id)]).ids + if self.project_id and self.project_id.privacy_visibility in ('employees', 'portal'): + user_ids = self.env['hr.employee'].search([('user_id', '!=', False)]).ids + if self.project_id and self.project_id.privacy_visibility == 'followers': + user_ids = self.env['hr.employee'].search( + [('user_id', 'in', self.project_id.allowed_internal_user_ids.ids)]).ids + project_all_emp_ids = manager_id + user_ids + consul_project_ids + result = { + 'domain': {'task_id': domain, 'employee_id': [('id', 'in', project_all_emp_ids)]}, + } + if self.project_id != self.task_id.project_id: + # reset task when changing project + self.task_id = False + return result _sql_constraints = [ ('check_start_time_lower_than_24', 'CHECK(start_time <= 24)', 'You cannot have a start hour greater than 24'), diff --git a/cor_custom/models/project.py b/cor_custom/models/project.py index 27cc04b..c09dd24 100755 --- a/cor_custom/models/project.py +++ b/cor_custom/models/project.py @@ -41,12 +41,12 @@ class Project(models.Model): start_date = fields.Date(string='Start Date') end_date = fields.Date(string='End Date') - budgeted_hours = fields.Float(string='Total Budgeted Hours', compute='_compute_consultant_timesheet_hours') + budgeted_hours = fields.Float(string='Total Budgeted Hours', compute='_compute_calc') budgeted_revenue = fields.Float(string='Budgeted Revenue', digits=(16, 2)) expenses_per = fields.Float(string='Expenses (%)', digits=(16, 2)) expenses_amt = fields.Float(string='Expenses Amount', digits=(16, 2)) cost = fields.Float("Total Revenue", compute='onchange_compute_values', store=True) - consultant_cost = fields.Float("Actual Cost", compute='_compute_consultant_timesheet_hours') + consultant_cost = fields.Float("Actual Cost", compute='_compute_calc') other_expenses = fields.Float(string='Other Expenses', related='expenses_amt') total_expenses = fields.Float(string='Total Expenses', digits=(16, 2), compute='_compute_calc', store=True) hourly_rate = fields.Float("Hourly Rate", default=0.0) @@ -64,7 +64,8 @@ class Project(models.Model): manager_hour = fields.Float(string='Manager Hour') employee_hour = fields.Float(string='Employee Hour') - def _compute_consultant_timesheet_hours(self): + @api.depends('cost', 'expenses_amt', 'budgeted_revenue') + def _compute_calc(self): print('222222222222') for record in self: consultant_cost = 0.0 @@ -76,8 +77,11 @@ class Project(models.Model): record.budgeted_hours = hour total_exp = record.consultant_cost + record.expenses_amt record.total_expenses = total_exp - if record.budgeted_hours > 0.0: - record.hourly_rate = (record.budgeted_revenue / record.budgeted_hours) + profit_amt = record.budgeted_revenue - total_exp + record.profit_amt = profit_amt + if record.profit_amt > 0 and record.budgeted_revenue > 0: + record.profit_per = (record.profit_amt / record.budgeted_revenue) * 100 + @api.depends('manager_per', 'hour_distribution') def compute_percentage_hours(self): @@ -115,7 +119,7 @@ class Project(models.Model): if self.budgeted_hours > 0.0: self.hourly_rate = (self.budgeted_revenue / self.budgeted_hours) - @api.depends('cost', 'expenses_amt', 'budgeted_revenue') + """@api.depends('cost', 'expenses_amt', 'budgeted_revenue') def _compute_calc(self): for record in self: total_exp = record.consultant_cost + record.expenses_amt @@ -123,7 +127,7 @@ class Project(models.Model): profit_amt = record.budgeted_revenue - total_exp record.profit_amt = profit_amt if record.profit_amt > 0 and record.budgeted_revenue > 0: - record.profit_per = (record.profit_amt / record.budgeted_revenue) * 100 + record.profit_per = (record.profit_amt / record.budgeted_revenue) * 100""" @api.depends('sale_line_employee_ids') def onchange_compute_values(self): diff --git a/cor_custom/views/analytic_view.xml b/cor_custom/views/analytic_view.xml index a03a447..117f463 100755 --- a/cor_custom/views/analytic_view.xml +++ b/cor_custom/views/analytic_view.xml @@ -15,6 +15,17 @@ --> + + Analytic line + account.analytic.line + + + + + + + + account.analytic.line.tree.hr_timesheet_inherit1 account.analytic.line diff --git a/cor_custom/views/project_view.xml b/cor_custom/views/project_view.xml index bdbf97d..c0007f3 100755 --- a/cor_custom/views/project_view.xml +++ b/cor_custom/views/project_view.xml @@ -6,11 +6,11 @@ project.project -
+ diff --git a/planning/models/planning.py b/planning/models/planning.py index f590aa0..6e88d55 100755 --- a/planning/models/planning.py +++ b/planning/models/planning.py @@ -321,8 +321,8 @@ class Planning(models.Model): ) else: name = '%s - %s %s' % ( - start_datetime.date(), - end_datetime.date(), + datetime.strftime(start_datetime.date(), "%d/%m/%Y"), + datetime.strftime(end_datetime.date(), "%d/%m/%Y"), name ) diff --git a/project_forecast/i18n/he_IL .po b/project_forecast/i18n/he_IL .po old mode 100644 new mode 100755 diff --git a/project_maintenance/i18n/he_IL.po b/project_maintenance/i18n/he_IL.po old mode 100644 new mode 100755