Non consultant allocation updated

This commit is contained in:
root 2022-08-19 14:38:19 +05:30
parent 171fb20227
commit e9afb65eb4
2 changed files with 27 additions and 4 deletions

View File

@ -15,7 +15,7 @@ class ProjectConsultantHrs(models.Model):
_order = 'employee_id, end_date desc'
project_id = fields.Many2one('project.project', string="Project", required=True)
employee_id = fields.Many2one('hr.employee', string="Consultant", required=True)
employee_id = fields.Many2one('hr.employee', string="Consultant", required=False)
start_date = fields.Date('Start Date', required=True)
end_date = fields.Date('End Date', required=True)
percentage = fields.Float("Budgeted Percentage (%)")
@ -33,6 +33,13 @@ class ProjectConsultantHrs(models.Model):
@api.constrains('employee_id', 'percentage')
def _check_percent(self):
for val in self:
if not val.employee_id and val.percentage:
rec2 = val.search([('employee_id','=',False),('project_id','=',val.project_id.id)])
#print("rec2", rec2)
per2 = [r2.percentage for r2 in rec2]
#print("perccccccc22222222", per2)
if sum(per2) > 100:
raise ValidationError(_('Non Consultant total percentage should not be greater than 100'))
if val.employee_id and val.percentage:
rec = val.search([('employee_id','=',val.employee_id.id),('project_id','=',val.project_id.id)])
per = [r.percentage for r in rec]

View File

@ -21,7 +21,8 @@ class ProjectMultiBudgetAssign(models.TransientModel):
record = self.env['project.project'].browse(res_id)
lines = []
emp_id = []
for rec in record.sale_line_employee_ids:
non_emp_id = 0
for i, rec in enumerate(record.sale_line_employee_ids):
cons = {}
all_cons = self.env['project.consultant.hrs'].search([('employee_id','=',rec.employee_id.id),('project_id','=',rec.project_id.id)])
all_per = [v.percentage for v in all_cons]
@ -29,6 +30,13 @@ class ProjectMultiBudgetAssign(models.TransientModel):
emp_id.append(rec.employee_id.id)
cons.update({'employee_id': rec.employee_id.id, 'emp_map_id':rec.id, 'project_id':res_id})
lines.append((0, 0, cons))
non_cons = self.env['project.consultant.hrs'].search([('employee_id','=',False),('project_id', '=', rec.project_id.id)])
non_cons_per = [non_con.percentage for non_con in non_cons]
if sum(non_cons_per) < 100 and non_emp_id == 0:
non_emp_id += 1
non_cons_data = {}
non_cons_data.update({'employee_id': False, 'emp_map_id':False, 'project_id': res_id})
lines.append((0, 0, non_cons_data))
if record and (not record.pricing_type == 'employee_rate' or not record.project_type == 'hours_in_consultant'):
raise ValidationError(_('Not applicable for this project type '))
if not lines:
@ -77,8 +85,8 @@ class ProjectMultiBudgetAssignLine(models.TransientModel):
line_id = fields.Many2one('project.multi.budget.assign', string="Line ID", required=True)
project_id = fields.Many2one('project.project', string="Project", required=True)
emp_map_id = fields.Many2one('project.sale.line.employee.map', string="Consultant Map", required=True)
employee_id = fields.Many2one('hr.employee', string="Consultant", required=True)
emp_map_id = fields.Many2one('project.sale.line.employee.map', string="Consultant Map", required=False)
employee_id = fields.Many2one('hr.employee', string="Consultant", required=False)
budgeted_qty = fields.Float(string='Budgeted Hours', related="emp_map_id.budgeted_qty")
all_percentage = fields.Float("Total Allocated %", compute='_compute_allocation')
rem_percentage = fields.Float("Total Unallocated %", compute='_compute_allocation')
@ -105,6 +113,14 @@ class ProjectMultiBudgetAssignLine(models.TransientModel):
val.all_percentage = all_per
val.rem_percentage = 100 - all_per
val.remaining = 100 - all_per
elif val.project_id and not val.employee_id:
non_cons = self.env['project.consultant.hrs'].search([('employee_id','=',False),('project_id','=',val.project_id.id)])
non_all_per = 0
for res2 in non_cons:
non_all_per += res2.percentage
val.all_percentage = non_all_per
val.rem_percentage = 100 - non_all_per
val.remaining = 100 - non_all_per
else:
val.all_percentage = 0
val.rem_percentage = 0