diff --git a/cor_custom/models/analytic.py b/cor_custom/models/analytic.py
index d263d23..744bbfa 100755
--- a/cor_custom/models/analytic.py
+++ b/cor_custom/models/analytic.py
@@ -16,6 +16,7 @@ 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)
+ parent_project = fields.Many2one('project.project', string='Parent Project', related='project_id.parent_project', readonly=True)
@api.onchange('employee_id')
def _onchange_employee_id(self):
diff --git a/cor_custom/models/project.py b/cor_custom/models/project.py
index af6d059..0857af9 100755
--- a/cor_custom/models/project.py
+++ b/cor_custom/models/project.py
@@ -41,6 +41,7 @@ class Project(models.Model):
date_start = fields.Date(string='Start Date')
date = fields.Date(string='End Date', index=True, tracking=True)
+ timesheet_hour = fields.Float(string='Total Timesheet Hours', compute='_compute_calc', store=True)
budgeted_hours = fields.Float(string='Total Budgeted Hours', compute='_compute_calc')
budgeted_hours2 = fields.Float(string='Total Budgeted Hours')
budgeted_revenue = fields.Float(string='Budgeted Revenue', digits=(16, 2))
@@ -92,7 +93,6 @@ class Project(models.Model):
self.sale_line_employee_ids.create({'project_id': self._origin.id,
'employee_id': employee})"""
-
def _onchange_calculate_timesheet_hours(self):
self.consultant_timesheet_hrs = [(6, 0, False)]
if self._origin.id:
@@ -104,8 +104,8 @@ class Project(models.Model):
if res:
for rec in res:
self.consultant_timesheet_hrs.create({'project_id': rec[0],
- 'employee_id': rec[1],
- 'timesheet_hour': rec[2]})
+ 'employee_id': rec[1],
+ 'timesheet_hour': rec[2]})
@api.depends('cost', 'expenses_amt', 'budgeted_revenue')
def _compute_calc(self):
@@ -113,16 +113,20 @@ class Project(models.Model):
consultant_cost = 0.0
actual_revenue = 0.0
hour = 0.0
+ timesheet_hour = 0.0
for rec in record.sale_line_employee_ids:
consultant_cost = consultant_cost + rec.consultant_cost
actual_revenue = actual_revenue + rec.actual_revenue
hour = hour + rec.budgeted_qty
+ timesheet_hour = timesheet_hour + rec.timesheet_hour
if record.pricing_type == 'fixed_rate':
for rec in record.consultant_timesheet_hrs:
consultant_cost = consultant_cost + rec.consultant_cost
+ timesheet_hour = timesheet_hour + rec.timesheet_hour
record.consultant_cost = consultant_cost
record.actual_revenue = actual_revenue
record.budgeted_hours = hour
+ record.timesheet_hour = timesheet_hour
total_exp = record.consultant_cost + record.expenses_amt
record.total_expenses = total_exp
profit_amt = record.budgeted_revenue - total_exp
@@ -134,7 +138,6 @@ class Project(models.Model):
if record.project_type == 'hours_no_limit' and record.budgeted_hours2 > 0.0:
record.hourly_rate = (record.budgeted_revenue / record.budgeted_hours2)
-
@api.depends('manager_per', 'hour_distribution')
def compute_percentage_hours(self):
for record in self:
@@ -145,7 +148,6 @@ class Project(models.Model):
# if self.manager_per > 100:
# raise ValidationError(_("Percentage should be less than or equal to 100"))
-
@api.onchange('budgeted_revenue', 'expenses_per')
def onchange_expenses_per(self):
if self.budgeted_revenue > 0 and self.expenses_per > 0:
@@ -197,16 +199,23 @@ class ProjectConsultantTimesheetHrs(models.Model):
project_id = fields.Many2one('project.project', "Project")
employee_id = fields.Many2one('hr.employee')
- employee_price = fields.Float(string="Consultant Price", compute='_compute_consultant_timesheet_cost', default=0.0)
+ employee_price = fields.Float(string="Consultant Price", default=0.0)
timesheet_hour = fields.Float("Timesheet Hour", default=0.0)
consultant_cost = fields.Float("Actual Cost", compute='_compute_consultant_timesheet_cost', default=0.0)
+ @api.onchange('employee_id')
+ def onchange_employee_price(self):
+ if self.employee_id:
+ self.employee_price = self.employee_id.timesheet_cost
+ else:
+ self.employee_price = 0.0
+
def _compute_consultant_timesheet_cost(self):
for val in self:
- if val.employee_id.timesheet_cost:
- val.employee_price = val.employee_id.timesheet_cost
- else:
- val.employee_price = 0.0
+ # if val.employee_id.timesheet_cost:
+ # val.employee_price = val.employee_id.timesheet_cost
+ # else:
+ # val.employee_price = 0.0
if val.timesheet_hour and val.employee_id.timesheet_cost:
val.consultant_cost = val.timesheet_hour * val.employee_id.timesheet_cost
else:
@@ -220,7 +229,7 @@ class InheritProjectProductEmployeeMap(models.Model):
budgeted_uom = fields.Many2one('uom.uom', string='Budgeted UOM', related='sale_line_id.product_uom', readonly=True)
# budgeted_uom = fields.Many2one('uom.uom', string='Budgeted UOM', related='timesheet_product_id.uom_id', readonly=True)
timesheet_hour = fields.Float("Timesheet Hour", compute='_compute_timesheet_hour', default=0.0)
- employee_price = fields.Monetary(string="Consultant Price", related="employee_id.timesheet_cost", readonly=True)
+ employee_price = fields.Monetary(string="Consultant Price")
budgeted_hour_week = fields.Float("Budgeted Hours per week", compute='_compute_budgeted_hour_week')
price_unit = fields.Float("Hourly Rate")
currency_id = fields.Many2one('res.currency', string="Currency", compute='_compute_price_unit', store=True,
@@ -235,6 +244,13 @@ class InheritProjectProductEmployeeMap(models.Model):
('Employee', 'Employee'), ], string="Role", default="Employee")
distribution_per = fields.Float("%")
+ @api.onchange('employee_id')
+ def onchange_employee_price(self):
+ if self.employee_id:
+ self.employee_price = self.employee_id.timesheet_cost
+ else:
+ self.employee_price = 0.0
+
def _compute_timesheet_hour(self):
for val in self:
self._cr.execute('''SELECT project_id, employee_id, SUM(unit_amount) FROM account_analytic_line
@@ -292,6 +308,7 @@ class InheritProjectProductEmployeeMap(models.Model):
# line.price_unit = 0
line.currency_id = False
+
class CustomProjectTags(models.Model):
""" Tags of project's tasks """
_name = "custom.project.tags"
@@ -301,4 +318,4 @@ class CustomProjectTags(models.Model):
_sql_constraints = [
('name_uniq', 'unique (name)', "Tag name already exists!"),
- ]
\ No newline at end of file
+ ]
diff --git a/cor_custom/views/analytic_view.xml b/cor_custom/views/analytic_view.xml
index 2961d11..101f44e 100755
--- a/cor_custom/views/analytic_view.xml
+++ b/cor_custom/views/analytic_view.xml
@@ -24,6 +24,9 @@
+
@@ -47,6 +50,9 @@
+
+
+
diff --git a/cor_custom/views/project_view.xml b/cor_custom/views/project_view.xml
index 96850c2..8fb2358 100755
--- a/cor_custom/views/project_view.xml
+++ b/cor_custom/views/project_view.xml
@@ -125,8 +125,8 @@
attrs="{'column_invisible': [('parent.sale_order_id', '=', False)]}"/>-->
+
-
@@ -157,6 +157,7 @@
attrs="{'invisible': [('project_type','!=','hours_in_consultant')]}"/>
+