fix: error message placeholders and sider issues
diff --git a/erpnext/projects/doctype/timesheet/timesheet.js b/erpnext/projects/doctype/timesheet/timesheet.js
index 9bb9c38..63078ea 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.js
+++ b/erpnext/projects/doctype/timesheet/timesheet.js
@@ -146,10 +146,10 @@
 		frm.set_currency_labels(["base_total_costing_amount", "base_total_billable_amount", "base_total_billed_amount"], base_currency);
 		frm.set_currency_labels(["total_costing_amount", "total_billable_amount", "total_billed_amount"], frm.doc.currency);
 
-		frm.toggle_display(["base_total_costing_amount", "base_total_billable_amount", "base_total_billed_amount"], 
+		frm.toggle_display(["base_total_costing_amount", "base_total_billable_amount", "base_total_billed_amount"],
 			frm.doc.currency != base_currency)
 
-		if (frm.doc?.time_logs.length > 0) {
+		if (frm.doc.time_logs.length > 0) {
 			frm.set_currency_labels(["base_billing_rate", "base_billing_amount", "base_costing_rate", "base_costing_amount"], base_currency, "time_logs");
 			frm.set_currency_labels(["billing_rate", "billing_amount", "costing_rate", "costing_amount"], frm.doc.currency, "time_logs");
 
diff --git a/erpnext/projects/doctype/timesheet/timesheet.py b/erpnext/projects/doctype/timesheet/timesheet.py
index 1ee59ae..d3c21a3 100644
--- a/erpnext/projects/doctype/timesheet/timesheet.py
+++ b/erpnext/projects/doctype/timesheet/timesheet.py
@@ -150,7 +150,7 @@
 
 	def validate_project(self, data):
 		if self.parent_project and self.parent_project != data.project:
-			frappe.throw(_("Row {0}: Project must be same as the one set in the Timesheet: {1}.")).format(data.idx, self.parent_project)
+			frappe.throw(_("Row {0}: Project must be same as the one set in the Timesheet: {1}.").format(data.idx, self.parent_project))
 
 	def validate_overlap_for(self, fieldname, args, value, ignore_validation=False):
 		if not value or ignore_validation:
@@ -221,14 +221,14 @@
 	if from_time and to_time:
 		condition += "AND CAST(tsd.from_time as DATE) BETWEEN %(from_time)s AND %(to_time)s"
 
-	return frappe.db.sql("""SELECT tsd.name as name, 
-				tsd.parent as parent, tsd.billing_hours as billing_hours, 
-				tsd.billing_amount as billing_amount, tsd.activity_type as activity_type, 
+	return frappe.db.sql("""SELECT tsd.name as name,
+				tsd.parent as parent, tsd.billing_hours as billing_hours,
+				tsd.billing_amount as billing_amount, tsd.activity_type as activity_type,
 				tsd.description as description, ts.currency as currency
-			FROM `tabTimesheet Detail` tsd 
-			INNER JOIN `tabTimesheet` ts ON ts.name = tsd.parent  
-			WHERE tsd.parenttype = 'Timesheet' 
-				and tsd.docstatus=1 {0} 
+			FROM `tabTimesheet Detail` tsd
+			INNER JOIN `tabTimesheet` ts ON ts.name = tsd.parent
+			WHERE tsd.parenttype = 'Timesheet'
+				and tsd.docstatus=1 {0}
 				and tsd.is_billable = 1
 				and tsd.sales_invoice is null""".format(condition), {'project': project, 'parent': parent, 'from_time': from_time, 'to_time': to_time}, as_dict=1)
 
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index 3900450..ce40ced 100755
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -734,7 +734,7 @@
 		// if value is blank in report view or project name and name are the same, return as is
 		return value;
 	}
-}
+};
 
 // add description on posting time
 $(document).on('app_ready', function() {