|  | @ -28,16 +28,37 @@ class RoomCheckin(models.Model): | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |     name = fields.Char(string='Check-In Reference', required=True, copy=False, readonly=True, |  |  |     name = fields.Char(string='Check-In Reference', required=True, copy=False, readonly=True, | 
			
		
	
		
		
			
				
					|  |  |                        default=lambda self: _('New')) |  |  |                        default=lambda self: _('New')) | 
			
		
	
		
		
			
				
					
					|  |  |     rm_id = fields.Many2one('room.reservation.line', domain="[('reservation_id','=',reservation_id)]", string="Room No",required=True) |  |  |     rm_ids = fields.Many2many('room.reservation.line', | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |     reservation_id = fields.Many2one('room.reservation', string='Reservation ',required=True, |  |  |                               domain="[('reservation_id','=',reservation_id)]", | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  |                               string="Room No", | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                               required=True) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     reservation_id = fields.Many2one('room.reservation', string='Reservation ', required=True, | 
			
		
	
		
		
			
				
					|  |  |                                      domain="[('state','=','confirm')]") |  |  |                                      domain="[('state','=','confirm')]") | 
			
		
	
		
		
			
				
					
					|  |  |     state = fields.Selection([('draft', 'Draft'),('done', 'Done')], |  |  |     state = fields.Selection([('draft', 'Draft'), ('done', 'Done')], | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |                              default='draft') |  |  |                              default='draft') | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     @api.onchange('reservation_id') | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     def _rm_ids(self): | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         res_line = [] | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         if self.reservation_id.reservation_line_ids: | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             for line in self.reservation_id.reservation_line_ids: | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 if line.room_id.status == 'book': | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     res_line.append(line.id) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         return {'domain': {'rm_ids': [('id', 'in', res_line)]}} | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |     def action_checkin(self): |  |  |     def action_checkin(self): | 
			
		
	
		
		
			
				
					
					|  |  |         self.rm_id.room_id.write({'status': 'occupied'}) |  |  |         for rec in self.rm_ids: rec.room_id.write({'status': 'occupied'}) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  |         state = self.reservation_id.reservation_line_ids.mapped('room_id') | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         rs_flag = True | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         for rec in state: | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             if rec.status == 'occupied': | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 rs_flag = True | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             else: | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 rs_flag = False | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 break | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         if rs_flag: | 
			
		
	
		
		
			
				
					|  |  |             self.reservation_id.write({'state': 'occupied'}) |  |  |             self.reservation_id.write({'state': 'occupied'}) | 
			
		
	
		
		
			
				
					
					|  |  |         self.state='done' |  |  |         self.state = 'done' | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |     @api.model |  |  |     @api.model | 
			
		
	
		
		
			
				
					|  |  |     def create(self, vals): |  |  |     def create(self, vals): | 
			
		
	
	
		
		
			
				
					|  | @ -51,26 +72,40 @@ class RoomCheckout(models.Model): | 
			
		
	
		
		
			
				
					|  |  |     _name = "room.checkout" |  |  |     _name = "room.checkout" | 
			
		
	
		
		
			
				
					|  |  |     _description = 'Room Checkout' |  |  |     _description = 'Room Checkout' | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |     name = fields.Char(string='Check-Out Reference',required=True, copy=False, readonly=True, |  |  |     name = fields.Char(string='Check-Out Reference', required=True, copy=False, readonly=True, | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					|  |  |                        default=lambda self: _('New')) |  |  |                        default=lambda self: _('New')) | 
			
		
	
		
		
			
				
					
					|  |  |     rm_id = fields.Many2one('room.reservation.line', domain="[('reservation_id','=',reservation_id)]", string="Room No",required=True) |  |  |     rm_ids = fields.Many2many('room.reservation.line', domain="[('reservation_id','=',reservation_id)]", | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |     reservation_id = fields.Many2one('room.reservation', string='Reservation', domain="[('state','=','occupied')]",required=True) |  |  |                               string="Room No", | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  |                               required=True) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     reservation_id = fields.Many2one('room.reservation', string='Reservation', domain="[('state','=','occupied')]", | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                                      required=True) | 
			
		
	
		
		
			
				
					|  |  |     state = fields.Selection([('draft', 'Draft'), ('done', 'Done')], |  |  |     state = fields.Selection([('draft', 'Draft'), ('done', 'Done')], | 
			
		
	
		
		
			
				
					|  |  |                              default='draft') |  |  |                              default='draft') | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     @api.onchange('reservation_id') | 
			
		
	
		
		
			
				
					|  |  |  |  |  |     def _rm_ids(self): | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         res_line = [] | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         if self.reservation_id.reservation_line_ids: | 
			
		
	
		
		
			
				
					|  |  |  |  |  |             for line in self.reservation_id.reservation_line_ids: | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                 if line.room_id.status == 'occupied': | 
			
		
	
		
		
			
				
					|  |  |  |  |  |                     res_line.append(line.id) | 
			
		
	
		
		
			
				
					|  |  |  |  |  |         return {'domain': {'rm_ids': [('id', 'in', res_line)]}} | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |     def action_checkout(self): |  |  |     def action_checkout(self): | 
			
		
	
		
		
			
				
					
					|  |  |         self.rm_id.room_id.write({'status': 'available'}) |  |  |         for rec in self.rm_ids: rec.room_id.write({'status': 'available'}) | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |         reserv_line = self.env['room.reservation.line'].sudo().search([('reservation_id', '=', self.reservation_id.id)]) |  |  |         state = self.reservation_id.reservation_line_ids.mapped('room_id') | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |         status = 'available' |  |  |         rs_flag = True | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |         for rec in reserv_line: |  |  |         for rec in state: | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |             if rec.room_id.status == 'available': |  |  |             if rec.status == 'available': | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |                 break |  |  |                 rs_flag = True | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |             else: |  |  |             else: | 
			
		
	
		
		
			
				
					
					|  |  |                 status = 'occupied' |  |  |                 rs_flag = False | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |         if status == 'available': |  |  |                 break | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					|  |  |  |  |  |         if rs_flag: | 
			
		
	
		
		
			
				
					|  |  |             self.reservation_id.write({'state': 'done'}) |  |  |             self.reservation_id.write({'state': 'done'}) | 
			
		
	
		
		
			
				
					|  |  |         self.state = 'done' |  |  |         self.state = 'done' | 
			
		
	
		
		
			
				
					|  |  | 
 |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					|  |  |     @api.model |  |  |     @api.model | 
			
		
	
		
		
			
				
					|  |  |     def create(self, vals): |  |  |     def create(self, vals): | 
			
		
	
		
		
			
				
					|  |  |         if vals.get('name', _('New')) == _('New'): |  |  |         if vals.get('name', _('New')) == _('New'): | 
			
		
	
	
		
		
			
				
					|  | 
 |