59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
 | |
| # License: GNU General Public License v3. See license.txt
 | |
| 
 | |
| import webnotes
 | |
| 
 | |
| def execute():
 | |
| 	# convert timesheet details to time logs
 | |
| 	webnotes.reload_doc("projects", "doctype", "time_log")
 | |
| 	
 | |
| 	# copy custom fields
 | |
| 	custom_map = {"Timesheet":[], "Timesheet Detail":[]}
 | |
| 	for custom_field in webnotes.conn.sql("""select * from `tabCustom Field` where 
 | |
| 		dt in ('Timesheet', 'Timesheet Detail')""", as_dict=True):
 | |
| 		custom_map[custom_field.dt].append(custom_field.fieldname)
 | |
| 		custom_field.doctype = "Custom Field"
 | |
| 		custom_field.dt = "Time Log"
 | |
| 		custom_field.insert_after = None
 | |
| 		try:
 | |
| 			cf = webnotes.bean(custom_field).insert()
 | |
| 		except Exception, e:
 | |
| 			# duplicate custom field
 | |
| 			pass
 | |
| 	
 | |
| 	for name in webnotes.conn.sql_list("""select name from tabTimesheet"""):
 | |
| 		ts = webnotes.bean("Timesheet", name)
 | |
| 		
 | |
| 		for tsd in ts.doclist.get({"doctype":"Timesheet Detail"}):
 | |
| 			if not webnotes.conn.exists("Project", tsd.project_name):
 | |
| 				tsd.project_name = None
 | |
| 			if not webnotes.conn.exists("Task", tsd.task_id):
 | |
| 				tsd.task_id = None
 | |
| 				
 | |
| 			tl = webnotes.bean({
 | |
| 				"doctype": "Time Log",
 | |
| 				"status": "Draft",
 | |
| 				"from_time": ts.doc.timesheet_date + " " + tsd.act_start_time,
 | |
| 				"to_time": ts.doc.timesheet_date + " " + tsd.act_end_time,
 | |
| 				"activity_type": tsd.activity_type,
 | |
| 				"task": tsd.task_id,
 | |
| 				"project": tsd.project_name,
 | |
| 				"note": ts.doc.notes,
 | |
| 				"file_list": ts.doc.file_list,
 | |
| 				"_user_tags": ts.doc._user_tags,
 | |
| 				"owner": ts.doc.owner,
 | |
| 				"creation": ts.doc.creation,
 | |
| 				"modified_by": ts.doc.modified_by
 | |
| 			})
 | |
| 			
 | |
| 			for key in custom_map["Timesheet"]:
 | |
| 				tl.doc.fields[key] = ts.doc.fields.get(key)
 | |
| 
 | |
| 			for key in custom_map["Timesheet Detail"]:
 | |
| 				tl.doc.fields[key] = tsd.fields.get(key)
 | |
| 			
 | |
| 			tl.make_controller()
 | |
| 			tl.controller.set_status()
 | |
| 			tl.controller.calculate_total_hours()
 | |
| 			tl.doc.insert()
 |