| # 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() |