brotherton-erpnext/erpnext/utilities/naming.py

61 lines
1.8 KiB
Python
Raw Normal View History

import frappe
from frappe.model.naming import get_default_naming_series
class NamingSeriesNotSetError(frappe.ValidationError):
pass
def set_by_naming_series(
doctype, fieldname, naming_series, hide_name_field=True, make_mandatory=1
):
"""Change a doctype's naming to user naming series"""
from frappe.custom.doctype.property_setter.property_setter import make_property_setter
if naming_series:
make_property_setter(
doctype, "naming_series", "hidden", 0, "Check", validate_fields_for_doctype=False
)
make_property_setter(
doctype, "naming_series", "reqd", make_mandatory, "Check", validate_fields_for_doctype=False
)
# set values for mandatory
try:
frappe.db.sql(
"""update `tab{doctype}` set naming_series={s} where
ifnull(naming_series, '')=''""".format(
doctype=doctype, s="%s"
),
get_default_naming_series(doctype),
)
except NamingSeriesNotSetError:
pass
if hide_name_field:
make_property_setter(doctype, fieldname, "reqd", 0, "Check", validate_fields_for_doctype=False)
make_property_setter(
doctype, fieldname, "hidden", 1, "Check", validate_fields_for_doctype=False
)
else:
make_property_setter(
doctype, "naming_series", "reqd", 0, "Check", validate_fields_for_doctype=False
)
make_property_setter(
doctype, "naming_series", "hidden", 1, "Check", validate_fields_for_doctype=False
)
if hide_name_field:
make_property_setter(
doctype, fieldname, "hidden", 0, "Check", validate_fields_for_doctype=False
)
make_property_setter(doctype, fieldname, "reqd", 1, "Check", validate_fields_for_doctype=False)
# set values for mandatory
frappe.db.sql(
"""update `tab{doctype}` set `{fieldname}`=`name` where
ifnull({fieldname}, '')=''""".format(
doctype=doctype, fieldname=fieldname
)
)