mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-19 13:09:17 +00:00
* fix: dont rename GLE/SLE that dont have naming series
* test: tests for deferred naming of ledgers
(cherry picked from commit c2aad115c1)
Co-authored-by: Ankush Menat <ankush@frappe.io>
This commit is contained in:
@@ -33,6 +33,8 @@ class GLEntry(Document):
|
|||||||
name will be changed using autoname options (in a scheduled job)
|
name will be changed using autoname options (in a scheduled job)
|
||||||
"""
|
"""
|
||||||
self.name = frappe.generate_hash(txt="", length=10)
|
self.name = frappe.generate_hash(txt="", length=10)
|
||||||
|
if self.meta.autoname == "hash":
|
||||||
|
self.to_rename = 0
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
self.flags.ignore_submit_comment = True
|
self.flags.ignore_submit_comment = True
|
||||||
|
|||||||
@@ -27,6 +27,8 @@ class StockLedgerEntry(Document):
|
|||||||
name will be changed using autoname options (in a scheduled job)
|
name will be changed using autoname options (in a scheduled job)
|
||||||
"""
|
"""
|
||||||
self.name = frappe.generate_hash(txt="", length=10)
|
self.name = frappe.generate_hash(txt="", length=10)
|
||||||
|
if self.meta.autoname == "hash":
|
||||||
|
self.to_rename = 0
|
||||||
|
|
||||||
def validate(self):
|
def validate(self):
|
||||||
self.flags.ignore_submit_comment = True
|
self.flags.ignore_submit_comment = True
|
||||||
|
|||||||
@@ -5,9 +5,11 @@ import json
|
|||||||
|
|
||||||
import frappe
|
import frappe
|
||||||
from frappe.core.page.permission_manager.permission_manager import reset
|
from frappe.core.page.permission_manager.permission_manager import reset
|
||||||
|
from frappe.custom.doctype.property_setter.property_setter import make_property_setter
|
||||||
from frappe.tests.utils import FrappeTestCase, change_settings
|
from frappe.tests.utils import FrappeTestCase, change_settings
|
||||||
from frappe.utils import add_days, today
|
from frappe.utils import add_days, today
|
||||||
|
|
||||||
|
from erpnext.accounts.doctype.gl_entry.gl_entry import rename_gle_sle_docs
|
||||||
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
from erpnext.stock.doctype.delivery_note.test_delivery_note import create_delivery_note
|
||||||
from erpnext.stock.doctype.item.test_item import make_item
|
from erpnext.stock.doctype.item.test_item import make_item
|
||||||
from erpnext.stock.doctype.landed_cost_voucher.test_landed_cost_voucher import (
|
from erpnext.stock.doctype.landed_cost_voucher.test_landed_cost_voucher import (
|
||||||
@@ -529,3 +531,62 @@ def create_items():
|
|||||||
make_item(d, properties=properties)
|
make_item(d, properties=properties)
|
||||||
|
|
||||||
return items
|
return items
|
||||||
|
|
||||||
|
|
||||||
|
class TestDeferredNaming(FrappeTestCase):
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def setUpClass(cls) -> None:
|
||||||
|
super().setUpClass()
|
||||||
|
cls.gle_autoname = frappe.get_meta("GL Entry").autoname
|
||||||
|
cls.sle_autoname = frappe.get_meta("Stock Ledger Entry").autoname
|
||||||
|
|
||||||
|
def setUp(self) -> None:
|
||||||
|
self.item = make_item().name
|
||||||
|
self.warehouse = "Stores - TCP1"
|
||||||
|
self.company = "_Test Company with perpetual inventory"
|
||||||
|
|
||||||
|
def tearDown(self) -> None:
|
||||||
|
make_property_setter(doctype="GL Entry", for_doctype=True,
|
||||||
|
property="autoname", value=self.gle_autoname, property_type="Data", fieldname=None)
|
||||||
|
make_property_setter(doctype="Stock Ledger Entry", for_doctype=True,
|
||||||
|
property="autoname", value=self.sle_autoname, property_type="Data", fieldname=None)
|
||||||
|
|
||||||
|
# since deferred naming autocommits, commit all changes to avoid flake
|
||||||
|
frappe.db.commit() # nosemgrep
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_gle_sles(se):
|
||||||
|
filters = {"voucher_type": se.doctype, "voucher_no": se.name}
|
||||||
|
gle = set(frappe.get_list("GL Entry", filters, pluck="name"))
|
||||||
|
sle = set(frappe.get_list("Stock Ledger Entry", filters, pluck="name"))
|
||||||
|
return gle, sle
|
||||||
|
|
||||||
|
def test_deferred_naming(self):
|
||||||
|
se = make_stock_entry(item_code=self.item, to_warehouse=self.warehouse,
|
||||||
|
qty=10, rate=100, company=self.company)
|
||||||
|
|
||||||
|
gle, sle = self.get_gle_sles(se)
|
||||||
|
rename_gle_sle_docs()
|
||||||
|
renamed_gle, renamed_sle = self.get_gle_sles(se)
|
||||||
|
|
||||||
|
self.assertFalse(gle & renamed_gle, msg="GLEs not renamed")
|
||||||
|
self.assertFalse(sle & renamed_sle, msg="SLEs not renamed")
|
||||||
|
se.cancel()
|
||||||
|
|
||||||
|
def test_hash_naming(self):
|
||||||
|
# disable naming series
|
||||||
|
for doctype in ("GL Entry", "Stock Ledger Entry"):
|
||||||
|
make_property_setter(doctype=doctype, for_doctype=True,
|
||||||
|
property="autoname", value="hash", property_type="Data", fieldname=None)
|
||||||
|
|
||||||
|
se = make_stock_entry(item_code=self.item, to_warehouse=self.warehouse,
|
||||||
|
qty=10, rate=100, company=self.company)
|
||||||
|
|
||||||
|
gle, sle = self.get_gle_sles(se)
|
||||||
|
rename_gle_sle_docs()
|
||||||
|
renamed_gle, renamed_sle = self.get_gle_sles(se)
|
||||||
|
|
||||||
|
self.assertEqual(gle, renamed_gle, msg="GLEs are renamed while using hash naming")
|
||||||
|
self.assertEqual(sle, renamed_sle, msg="SLEs are renamed while using hash naming")
|
||||||
|
se.cancel()
|
||||||
|
|||||||
Reference in New Issue
Block a user