diff --git a/cor_custom/models/project.py b/cor_custom/models/project.py
index 9e9eb42..3b85e57 100755
--- a/cor_custom/models/project.py
+++ b/cor_custom/models/project.py
@@ -317,6 +317,28 @@ class InheritProjectProductEmployeeMap(models.Model):
role = fields.Selection([('Manager', 'Manager'),
('Employee', 'Employee'), ], string="Role", default="Employee")
distribution_per = fields.Float("%")
+ start_date = fields.Date(string="Start Date")
+ end_date = fields.Date(string="End Date")
+
+ _sql_constraints = [
+ ('uniqueness_employee', 'CHECK(1=1)', 'An employee cannot be selected more than once in the mapping. Please remove duplicate(s) and try again.'),
+ ]
+
+ @api.constrains('start_date', 'end_date')
+ def _check_dates(self):
+ for val in self:
+ if val.end_date < val.start_date:
+ raise ValidationError(_('Start date must be earlier than end date.'))
+ domain = [
+ ('start_date', '<=', val.end_date),
+ ('end_date', '>=', val.start_date),
+ ('project_id', '=', val.project_id.id),
+ ('employee_id', '=', val.employee_id.id),
+ ('id', '!=', val.id)
+ ]
+ res = self.search_count(domain)
+ if res > 0:
+ raise ValidationError(_('Same Consultant can not have 2 same date that overlaps on same day!'))
@api.onchange('employee_id')
def onchange_employee_price(self):
@@ -327,10 +349,22 @@ class InheritProjectProductEmployeeMap(models.Model):
def _compute_timesheet_hour(self):
for val in self:
- self._cr.execute('''SELECT project_id, employee_id, SUM(unit_amount) FROM account_analytic_line
- where project_id = %(project_id)s and employee_id = %(employee_id)s
- GROUP BY project_id, employee_id''',
- {'project_id': val.project_id._origin.id, 'employee_id': val.employee_id.id, })
+ date_clause = ""
+ query_params = [val.project_id._origin.id, val.employee_id.id]
+ if val.start_date:
+ date_clause += "and start_datetime >= %s"
+ query_params.append(val.start_date)
+ if val.end_date:
+ date_clause += " and end_datetime <= %s"
+ query_params.append(val.end_date)
+ query = """SELECT project_id, employee_id, SUM(unit_amount) FROM account_analytic_line
+ where project_id = %s and employee_id = %s {date_clause}
+ GROUP BY project_id, employee_id""".format(date_clause=date_clause)
+ self.env.cr.execute(query, query_params)
+ #self._cr.execute('''SELECT project_id, employee_id, SUM(unit_amount) FROM account_analytic_line
+ #where project_id = %(project_id)s and employee_id = %(employee_id)s
+ #GROUP BY project_id, employee_id''',
+ # {'project_id': val.project_id._origin.id, 'employee_id': val.employee_id.id, })
res = self._cr.fetchone()
if res and res[2]:
val.timesheet_hour = res[2]
diff --git a/cor_custom/views/project_view.xml b/cor_custom/views/project_view.xml
index 879ad51..2cd64ce 100755
--- a/cor_custom/views/project_view.xml
+++ b/cor_custom/views/project_view.xml
@@ -70,6 +70,8 @@
+
+