| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -18,7 +18,11 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					# | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					############################################################################## | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					from datetime import datetime | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					from AptUrl.Helpers import _ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					from odoo import models, fields, api | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					from odoo.exceptions import UserError | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					class ProjectTaskTimeSheet(models.Model): | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -51,33 +55,34 @@ class ProjectTaskTimer(models.Model): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    def toggle_start(self): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for record in self: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            record.task_timer = not record.task_timer | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        project_obj = self.env['project.task'].search([]) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        for data in project_obj: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            if self.task_timer: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            print("self.task_timer") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                if data.user_id.id == self.user_id.id and data.task_timer == False: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    print("success") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    raise UserError(_('you cannot start timer for more than one task at the same time')) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            elif self.task_timer: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                self.write({'is_user_working': True}) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                time_line = self.env['account.analytic.line'] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                print(time_line, "time_line") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                for time_sheet in self: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    time_line.create({ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    'name': self.env.user.name + ': ' + time_sheet.name, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        'name': self.env.user.name + ':' + time_sheet.name, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        'task_id': time_sheet.id, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        'user_id': self.env.user.id, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        'project_id': time_sheet.project_id.id, | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        'date_start': datetime.now(), | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    }) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                break | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            else: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                self.write({'is_user_working': False}) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                time_line_obj = self.env['account.analytic.line'] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            print(time_line_obj, "time_line_obj") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                domain = [('task_id', 'in', self.ids), ('date_end', '=', False)] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                for time_line in time_line_obj.search(domain): | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                print(time_line, "else") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    time_line.write({'date_end': fields.Datetime.now()}) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    if time_line.date_end: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        diff = fields.Datetime.from_string(time_line.date_end) - fields.Datetime.from_string( | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                            time_line.date_start) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    print(len(time_line) - 1, "time_line - 1") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    # if time_line == len(time_line) - 1: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    print(len(time_line), "-----------------------") | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        time_line.timer_duration = round(diff.total_seconds() / 60.0, 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                        time_line.unit_amount = round(diff.total_seconds() / (60.0 * 60.0), 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    else: | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |