diff --git a/cor_custom/models/project.py b/cor_custom/models/project.py
index caa4e0f..8c1729f 100755
--- a/cor_custom/models/project.py
+++ b/cor_custom/models/project.py
@@ -41,7 +41,7 @@ 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', digits=(16, 2))
+ budgeted_hours = fields.Float(string='Total Budgeted Hours')
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))
@@ -49,7 +49,7 @@ class Project(models.Model):
consultant_cost = fields.Float("Actual Cost", compute='_compute_consultant_timesheet_hours')
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, readonly=1)
+ hourly_rate = fields.Float("Hourly Rate", default=0.0)
hourly_rate2 = fields.Float("Hourly Ratee")
budgeted_hour_week = fields.Float("Budgeted Hours(per week)", compute='onchange_compute_values', store=True)
profit_amt = fields.Float(string='Profit Amount', digits=(16, 2), compute='_compute_calc', store=True)
@@ -97,6 +97,20 @@ class Project(models.Model):
expense_amount = self.budgeted_revenue * (self.expenses_per / 100)
self.expenses_amt = expense_amount
+ @api.onchange('budgeted_revenue', 'sale_line_employee_ids')
+ def onchange_budgeted_hour(self):
+ self.sale_line_employee_ids._compute_total_cost()
+ hour = 0.0
+ for rec in self.sale_line_employee_ids:
+ hour = hour + rec.budgeted_qty
+ print('TTTTTTTTTTTTTTT', hour, rec.budgeted_qty)
+ print('SSSSSSSSS', hour)
+ self.budgeted_hours = hour
+ print('TTTTTTTTTTTTTTT', hour)
+ print('UUUUUUUUUUU', self.budgeted_hours)
+ if self.budgeted_hours > 0.0:
+ self.hourly_rate = (self.budgeted_revenue / self.budgeted_hours)
+
@api.depends('cost', 'expenses_amt', 'budgeted_revenue')
def _compute_calc(self):
for record in self:
@@ -107,30 +121,30 @@ class Project(models.Model):
if record.profit_amt > 0 and record.budgeted_revenue > 0:
record.profit_per = (record.profit_amt / record.budgeted_revenue) * 100
- @api.depends('sale_line_employee_ids', 'budgeted_hours')
+ @api.depends('sale_line_employee_ids')
def onchange_compute_values(self):
for record in self:
- hour = 0.0
+ # hour = 0.0
cost = 0.0
budgeted_hour_week = 0.0
for rec in record.sale_line_employee_ids:
- hour = hour + rec.budgeted_qty
+ # hour = hour + rec.budgeted_qty
cost = cost + rec.cost
budgeted_hour_week = budgeted_hour_week + rec.budgeted_hour_week
if record.project_type == 'hours_in_consultant':
record.cost = cost
- record.budgeted_hours = hour
- #if hour > 0.0:
- #record.hourly_rate = (cost / hour)
- else:
- record.cost = record.budgeted_hours * record.hourly_rate
+ # record.budgeted_hours = hour
+ # if hour > 0.0:
+ # record.hourly_rate = (cost / hour)
+ # else:
+ # record.cost = record.budgeted_hours * record.hourly_rate
record.budgeted_hour_week = budgeted_hour_week
class InheritProjectProductEmployeeMap(models.Model):
_inherit = 'project.sale.line.employee.map'
- budgeted_qty = fields.Float(string='Budgeted Hours', store=True)
+ budgeted_qty = fields.Float(string='Budgeted Hours')
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)
@@ -140,15 +154,14 @@ class InheritProjectProductEmployeeMap(models.Model):
currency_id = fields.Many2one('res.currency', string="Currency", compute='_compute_price_unit', store=True,
readonly=False)
sale_line_id = fields.Many2one('sale.order.line', "Service", domain=[('is_service', '=', True)])
- cost = fields.Float("Cost", compute='_compute_total_cost', default=0.0, store=True)
- consultant_cost = fields.Float("Actual Cost", compute='_compute_total_cost')
+ cost = fields.Float("Cost", default=0.0, store=True)
+ consultant_cost = fields.Float("Actual Cost")
hour_distribution = fields.Selection(related='project_id.hour_distribution')
role = fields.Selection([('Manager', 'Manager'),
('Employee', 'Employee'), ], string="Role", default="Employee")
distribution_per = fields.Float("%")
-
def _compute_timesheet_hour(self):
for val in self:
self._cr.execute('''SELECT project_id, employee_id, SUM(unit_amount) FROM account_analytic_line
@@ -160,8 +173,8 @@ class InheritProjectProductEmployeeMap(models.Model):
val.timesheet_hour = res[2]
else:
val.timesheet_hour = 0.0
- #Run another method
- #val.project_id.onchange_compute_values()
+ # Run another method
+ # val.project_id.onchange_compute_values()
def _compute_budgeted_hour_week(self):
for val in self:
@@ -170,20 +183,24 @@ class InheritProjectProductEmployeeMap(models.Model):
else:
val.budgeted_hour_week = 0
+ @api.onchange('project_id.budgeted_revenue', 'price_unit', 'distribution_per', 'employee_id', 'role')
def _compute_total_cost(self):
for val in self:
if val.project_id.project_type == 'hours_in_consultant':
if val.hour_distribution == 'Percentage':
if val.role == 'Manager':
- val.cost = val.project_id.budgeted_revenue * (val.project_id.manager_per/100) * (val.distribution_per/100)
+ val.cost = val.project_id.budgeted_revenue * (val.project_id.manager_per / 100) * (
+ val.distribution_per / 100)
else:
- val.cost = val.project_id.budgeted_revenue * (val.project_id.employee_per/100) * (val.distribution_per/100)
+ val.cost = val.project_id.budgeted_revenue * (val.project_id.employee_per / 100) * (
+ val.distribution_per / 100)
if val.price_unit > 0.0:
- val.budgeted_qty = val.cost/val.price_unit
+ val.budgeted_qty = val.cost / val.price_unit
else:
val.cost = 0.0
- #val.cost = val.budgeted_qty * val.price_unit
+ # val.cost = val.budgeted_qty * val.price_unit
val.consultant_cost = val.timesheet_hour * val.employee_price
+ #self.project_id.onchange_budgeted_hour()
@api.depends('sale_line_id', 'sale_line_id.price_unit', 'timesheet_product_id')
def _compute_price_unit(self):
diff --git a/cor_custom/views/project_view.xml b/cor_custom/views/project_view.xml
index 865408f..bdbf97d 100755
--- a/cor_custom/views/project_view.xml
+++ b/cor_custom/views/project_view.xml
@@ -107,10 +107,8 @@
-
-
+
+