App Versions
{
"erpnext": "15.27.1",
"frappe": "15.29.1",
"hrms": "15.22.1"
}
Route
Form/Timesheet/new-timesheet-nohsfdypow
Traceback
Traceback (most recent call last):
File "apps/frappe/frappe/app.py", line 115, in application
response = frappe.api.handle(request)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/api/__init__.py", line 49, in handle
data = endpoint(**arguments)
^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/api/v1.py", line 36, in handle_rpc_call
return frappe.handler.handle()
^^^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/handler.py", line 49, in handle
data = execute_cmd(cmd)
^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/handler.py", line 85, in execute_cmd
return frappe.call(method, **frappe.form_dict)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/__init__.py", line 1768, in call
return fn(*args, **newargs)
^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/desk/form/save.py", line 39, in savedocs
doc.save()
File "apps/frappe/frappe/model/document.py", line 337, in save
return self._save(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/model/document.py", line 359, in _save
return self.insert()
^^^^^^^^^^^^^
File "apps/frappe/frappe/model/document.py", line 291, in insert
self.run_before_save_methods()
File "apps/frappe/frappe/model/document.py", line 1091, in run_before_save_methods
self.run_method("validate")
File "apps/frappe/frappe/model/document.py", line 962, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/model/document.py", line 1322, in composer
return composed(self, method, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/model/document.py", line 1304, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^
File "apps/frappe/frappe/model/document.py", line 959, in fn
return method_object(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "apps/erpnext/erpnext/projects/doctype/timesheet/timesheet.py", line 26, in validate
self.set_status()
File "apps/hrms/hrms/overrides/employee_timesheet.py", line 14, in set_status
if self.salary_slip:
^^^^^^^^^^^^^^^^
AttributeError: 'EmployeeTimesheet' object has no attribute 'salary_slip'
Request Data
{
"type": "POST",
"args": {
"doc": "{\"docstatus\":0,\"doctype\":\"Timesheet\",\"name\":\"new-timesheet-nohsfdypow\",\"__islocal\":1,\"__unsaved\":1,\"owner\":\"kavya.bommadevara@nstarxinc.com\",\"naming_series\":\"TS-.YYYY.-\",\"company\":\"NStarX India Pvt Ltd\",\"exchange_rate\":1,\"status\":\"Open\",\"currency\":\"INR\",\"time_logs\":[{\"docstatus\":0,\"doctype\":\"Timesheet Detail\",\"name\":\"new-timesheet-detail-tnakrexxyc\",\"__islocal\":1,\"__unsaved\":1,\"owner\":\"kavya.bommadevara@nstarxinc.com\",\"completed\":0,\"is_billable\":0,\"billing_amount\":0,\"costing_amount\":400,\"parent\":\"new-timesheet-nohsfdypow\",\"parentfield\":\"time_logs\",\"parenttype\":\"Timesheet\",\"idx\":1,\"project\":\"PROJ-0002\",\"activity_type\":\"Development\",\"billing_rate\":100,\"costing_rate\":50,\"base_billing_rate\":100,\"base_costing_rate\":50,\"base_billing_amount\":0,\"base_costing_amount\":400,\"from_time\":\"2024-09-05 11:57:15\",\"to_time\":\"2024-09-05 19:57:15\",\"hours\":8}],\"total_hours\":8,\"total_billable_amount\":0,\"total_billable_hours\":0,\"total_costing_amount\":400,\"employee\":\"HR-EMP-00002\",\"employee_name\":\"Bommadevara Kavyabharathi\",\"custom_nstarx_empid\":\"NSX_0375\",\"department\":null,\"custom_timesheet_approver\":\" amol.patalay@nstarxinc.com\",\"parent_project\":\"PROJ-0002\"}",
"action": "Save"
},
"btn": {
"jQuery370075724167709218391": {
"events": {
"click": [
{
"type": "click",
"origType": "click",
"guid": 1098,
"namespace": ""
}
]
}
}
},
"freeze": true,
"headers": {},
"error_handlers": {},
"url": "/api/method/frappe.desk.form.save.savedocs",
"request_id": null
}
Response Data
{
"exception": "AttributeError: 'EmployeeTimesheet' object has no attribute 'salary_slip'",
"exc_type": "AttributeError",
"_exc_source": "hrms (app)"
}