Merge pull request #32219 from nabinhait/bank-clearnance-perm-issue

fix: No permission to read doctype
diff --git a/erpnext/accounts/doctype/account/account.py b/erpnext/accounts/doctype/account/account.py
index 2610c86..9dff116 100644
--- a/erpnext/accounts/doctype/account/account.py
+++ b/erpnext/accounts/doctype/account/account.py
@@ -37,7 +37,7 @@
 	def autoname(self):
 		from erpnext.accounts.utils import get_autoname_with_number
 
-		self.name = get_autoname_with_number(self.account_number, self.account_name, None, self.company)
+		self.name = get_autoname_with_number(self.account_number, self.account_name, self.company)
 
 	def validate(self):
 		from erpnext.accounts.utils import validate_field_number
diff --git a/erpnext/accounts/doctype/cost_center/cost_center.py b/erpnext/accounts/doctype/cost_center/cost_center.py
index 31055c3..e8b34bb 100644
--- a/erpnext/accounts/doctype/cost_center/cost_center.py
+++ b/erpnext/accounts/doctype/cost_center/cost_center.py
@@ -16,7 +16,7 @@
 		from erpnext.accounts.utils import get_autoname_with_number
 
 		self.name = get_autoname_with_number(
-			self.cost_center_number, self.cost_center_name, None, self.company
+			self.cost_center_number, self.cost_center_name, self.company
 		)
 
 	def validate(self):
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index f61e8ac..c5eb7d8 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -1037,7 +1037,7 @@
 
 	frappe.db.set_value("Cost Center", docname, "cost_center_name", cost_center_name.strip())
 
-	new_name = get_autoname_with_number(cost_center_number, cost_center_name, docname, company)
+	new_name = get_autoname_with_number(cost_center_number, cost_center_name, company)
 	if docname != new_name:
 		frappe.rename_doc("Cost Center", docname, new_name, force=1, merge=merge)
 		return new_name
@@ -1060,16 +1060,14 @@
 			)
 
 
-def get_autoname_with_number(number_value, doc_title, name, company):
+def get_autoname_with_number(number_value, doc_title, company):
 	"""append title with prefix as number and suffix as company's abbreviation separated by '-'"""
-	if name:
-		name_split = name.split("-")
-		parts = [doc_title.strip(), name_split[len(name_split) - 1].strip()]
-	else:
-		abbr = frappe.get_cached_value("Company", company, ["abbr"], as_dict=True)
-		parts = [doc_title.strip(), abbr.abbr]
+	company_abbr = frappe.get_cached_value("Company", company, "abbr")
+	parts = [doc_title.strip(), company_abbr]
+
 	if cstr(number_value).strip():
 		parts.insert(0, cstr(number_value).strip())
+
 	return " - ".join(parts)
 
 
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 584266d..5659ad0 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -6,6 +6,7 @@
 from frappe import ValidationError, _, msgprint
 from frappe.contacts.doctype.address.address import get_address_display
 from frappe.utils import cint, cstr, flt, getdate
+from frappe.utils.data import nowtime
 
 from erpnext.accounts.doctype.budget.budget import validate_expense_against_budget
 from erpnext.accounts.party import get_party_details
@@ -289,12 +290,16 @@
 				# Get outgoing rate based on original item cost based on valuation method
 
 				if not d.get(frappe.scrub(ref_doctype)):
+					posting_time = self.get("posting_time")
+					if not posting_time and self.doctype == "Purchase Order":
+						posting_time = nowtime()
+
 					outgoing_rate = get_incoming_rate(
 						{
 							"item_code": d.item_code,
 							"warehouse": d.get("from_warehouse"),
 							"posting_date": self.get("posting_date") or self.get("transation_date"),
-							"posting_time": self.get("posting_time"),
+							"posting_time": posting_time,
 							"qty": -1 * flt(d.get("stock_qty")),
 							"serial_no": d.get("serial_no"),
 							"batch_no": d.get("batch_no"),