Very nice to be able to have calendar function back
In regards to customization for reports and filtering, I found that as soon as I added a custom field (project) to the main timesheets doctype, it broke the custom report and calendar functionality.
Calendar
Traceback (most recent call last):
File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 55, in application
response = frappe.handler.handle()
File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 19, in handle
execute_cmd(cmd)
File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 36, in execute_cmd
ret = frappe.call(method, **frappe.form_dict)
File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 879, in call
return fn(*args, **newargs)
File "/home/frappe/frappe-bench/apps/erpnext/erpnext/projects/doctype/timesheet/timesheet.py", line 312, in get_events
}, as_dict=True, update={"allDay": 0})
File "/home/frappe/frappe-bench/apps/frappe/frappe/database.py", line 137, in sql
self._cursor.execute(query, values)
File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/MySQLdb/cursors.py", line 205, in execute
self.errorhandler(self, exc, value)
File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
OperationalError: (1052, "Column 'project' in field list is ambiguous")
Report Builder :
Traceback (most recent call last):
File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 55, in application
response = frappe.handler.handle()
File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 19, in handle
execute_cmd(cmd)
File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 36, in execute_cmd
ret = frappe.call(method, **frappe.form_dict)
File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 879, in call
return fn(*args, **newargs)
File "/home/frappe/frappe-bench/apps/frappe/frappe/desk/reportview.py", line 16, in get
data = compress(execute(**args))
File "/home/frappe/frappe-bench/apps/frappe/frappe/desk/reportview.py", line 21, in execute
return DatabaseQuery(doctype).execute(*args, **kwargs)
File "/home/frappe/frappe-bench/apps/frappe/frappe/model/db_query.py", line 79, in execute
result = self.build_and_run()
File "/home/frappe/frappe-bench/apps/frappe/frappe/model/db_query.py", line 103, in build_and_run
return frappe.db.sql(query, as_dict=not self.as_list, debug=self.debug, update=self.update)
File "/home/frappe/frappe-bench/apps/frappe/frappe/database.py", line 148, in sql
self._cursor.execute(query)
File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/MySQLdb/cursors.py", line 205, in execute
self.errorhandler(self, exc, value)
File "/home/frappe/frappe-bench/env/local/lib/python2.7/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
OperationalError: (1054, "Unknown column 'tabTimesheet Detail.name as 'Timesheet Detail:name'' in 'field list'")
On a different note, how is the workflow for timesheets supposed to work if employees are entering daily, projects are being billed day of completion, and payroll hours are processed bi-weekly. If an employee just “saves” the timesheet as a draft, it allows them to add to it day by day, to make use of the whole table idea, but doesn’t allow for payroll processing until the project gets billed.
If an employee’s timesheet gets submitted by the manager at payroll processing, hours for projects that have been ended and been billed in between that time, could be wrong, or changed.
If an employee’s timesheet gets submitted everyday, payroll processing and project billing can happen any day, but, its basically just using it as a timelog again, but without the ability to batch. We are currently trying this approach, but are really missing the ability to print TLB with notes corresponding to a particular projects invoice.
If Timesheets could do that from list menu without paginatation, or if it was possible to bundle timesheets into one, I’d be happy with that