Merge pull request #39305 from GursheenK/naming_series_FY
fix: naming series variable parsing for FY
diff --git a/erpnext/accounts/test/test_utils.py b/erpnext/accounts/test/test_utils.py
index 3cb5e42..c439d4b 100644
--- a/erpnext/accounts/test/test_utils.py
+++ b/erpnext/accounts/test/test_utils.py
@@ -23,6 +23,10 @@
super(TestUtils, cls).setUpClass()
make_test_objects("Address", ADDRESS_RECORDS)
+ @classmethod
+ def tearDownClass(cls):
+ frappe.db.rollback()
+
def test_get_party_shipping_address(self):
address = get_party_shipping_address("Customer", "_Test Customer 1")
self.assertEqual(address, "_Test Billing Address 2 Title-Billing")
@@ -126,6 +130,38 @@
self.assertEqual(len(payment_entry.references), 1)
self.assertEqual(payment_entry.difference_amount, 0)
+ def test_naming_series_variable_parsing(self):
+ """
+ Tests parsing utility used by Naming Series Variable hook for FY
+ """
+ from frappe.custom.doctype.property_setter.property_setter import make_property_setter
+ from frappe.utils import nowdate
+
+ from erpnext.accounts.utils import get_fiscal_year
+ from erpnext.buying.doctype.supplier.test_supplier import create_supplier
+
+ # Configure Supplier Naming in Buying Settings
+ frappe.db.set_default("supp_master_name", "Auto Name")
+
+ # Configure Autoname in Supplier DocType
+ make_property_setter(
+ "Supplier", None, "naming_rule", "Expression", "Data", for_doctype="Doctype"
+ )
+ make_property_setter(
+ "Supplier", None, "autoname", "SUP-.FY.-.#####", "Data", for_doctype="Doctype"
+ )
+
+ fiscal_year = get_fiscal_year(nowdate())[0]
+
+ # Create Supplier
+ supplier = create_supplier()
+
+ # Check Naming Series in generated Supplier ID
+ doc_name = supplier.name.split("-")
+ self.assertEqual(len(doc_name), 3)
+ self.assertSequenceEqual(doc_name[0:2], ("SUP", fiscal_year))
+ frappe.db.set_default("supp_master_name", "Supplier Name")
+
ADDRESS_RECORDS = [
{
diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index 25fbe17..f933209 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -1275,12 +1275,12 @@
def parse_naming_series_variable(doc, variable):
if variable == "FY":
if doc:
- date = doc.get("posting_date") or doc.get("transaction_date")
+ date = doc.get("posting_date") or doc.get("transaction_date") or getdate()
company = doc.get("company")
else:
date = getdate()
company = None
- return get_fiscal_year(date=date, company=company).name
+ return get_fiscal_year(date=date, company=company)[0]
@frappe.whitelist()