diff --git a/cor_custom/models/project.py b/cor_custom/models/project.py index 3366378..0b3d597 100755 --- a/cor_custom/models/project.py +++ b/cor_custom/models/project.py @@ -191,13 +191,32 @@ class Project(models.Model): # if self.manager_per > 100: # raise ValidationError(_("Percentage should be less than or equal to 100")) + # Validation for distributed percentage + @api.onchange('sale_line_employee_ids') + def onchange_validation_distribution_percentage(self): + if self.sale_line_employee_ids: + manager_total = 0.0 + employee_total = 0.0 + for rec in self.sale_line_employee_ids: + if rec.distribution_per > 100: + raise ValidationError(_("Percentage should be less than or equal to 100")) + if rec.role == 'Manager': + manager_total = manager_total + rec.distribution_per + if manager_total > 100: + raise ValidationError(_("Manager Distribution Percentage should be less than or equal to 100")) + else: + employee_total = employee_total + rec.distribution_per + if employee_total > 100: + raise ValidationError(_("Employee Distribution 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: expense_amount = self.budgeted_revenue * (self.expenses_per / 100) self.expenses_amt = expense_amount - @api.onchange('budgeted_revenue', 'sale_line_employee_ids') + @api.onchange('budgeted_revenue', 'sale_line_employee_ids', 'manager_per') def onchange_budgeted_hour(self): self.sale_line_employee_ids._compute_total_cost() hour = 0.0 @@ -327,15 +346,19 @@ class InheritProjectProductEmployeeMap(models.Model): else: val.budgeted_hour_week = 0 - @api.onchange('project_id.budgeted_revenue', 'price_unit', 'distribution_per', 'employee_id', 'role') + @api.onchange('project_id.budgeted_revenue', 'price_unit', 'distribution_per', 'employee_id', 'role', 'manager_per') def _compute_total_cost(self): for val in self: if val.project_id.project_type == 'hours_in_consultant': + print('111111111111') if val.hour_distribution == 'Percentage': + print('22222222222222') if val.role == 'Manager': + print('3333333333') val.cost = val.project_id.budgeted_revenue * (val.project_id.manager_per / 100) * ( val.distribution_per / 100) else: + print('44444444444444') val.cost = val.project_id.budgeted_revenue * (val.project_id.employee_per / 100) * ( val.distribution_per / 100) if val.price_unit > 0.0: