Skip to Content
Menu
This question has been flagged

I am trying to build a condition where the store has a s_start_date and s_end_date.

The employee working for the store also has a start_date and end_date.

Let's assume:

Case1------------

store_name: store 1
s_start_date = 12/01/2019, s_end_date = 12/30/2019
Employee_name: Emp1
start_date = 12/01/2019, end_date = 12/20/2019 #Expected
start_date = 11/01/2019, end_date = 01/20/2020 #It should throw an error as the dates are out of store contract.

case 2-----------------
The condition here is only one employee is needed at a single store

store_name: store 1
s_start_date = 12/01/2019, s_end_date = 12/30/2019
Employee_name: Emp1
start_date = 12/01/2019, end_date = 12/20/2019 #Expected

Employee_name: Emp2
start_date = 12/21/2019, end_date = 12/30/2019 #Expected
start_date = 12/05/2019, end_date = 12/17/2019 #Should throw an error saying that employee already exist for the time frame

Please find the attached code for your reference .​

class wv_location(models.Model):

_name= "wv.location"

storel_name = fields.Char(string="Store Name")
s_start_date = fields.Date('Store Start Date', required=True, index=True)
s_end_date = fields.Date('Store End Date', constrains="_check_date")
emp_loc_id = fields.One2many('wv.emp.location', 'employee_loc_id', string="Employees")

@api.constrains('s_start_date','s_end_date')
def _check_date(self):
if self.s_start_date > self.s_end_date:
raise ValidationError('End date must be greater than start date')

------------------------------------------------------------------------------

class wv_emp_location(models.Model):

_name = "wv.emp.location"

employee_id = fields.Many2one('hr.employee', 'Employee', ondelete='cascade')
employee_loc_id = fields.Many2one('wv.location', 'Employee Location', ondelete='cascade')
start_date = fields.Date('Start Date', tracking=True, default=fields.Date.context_today, constrains="_check_unique_date")
end_date = fields.Date('End Date', tracking=True, default=fields.Date.context_today, constrains="_check_date")

@api.constrains('start_date','end_date')
def _check_date(self):
if self.start_date > self.end_date:
raise ValidationError('End date must be greater than start date')

--------------------------------------------------------------------------------

Please let me know if you need more information on this.

Thank you

Avatar
Discard
Related Posts Replies Views Activity
0
Apr 24
562
0
Dec 19
3496
5
Dec 19
2489
0
Aug 19
4
5
Aug 19
1784