blob: 84079efa2d77b856ad660433f512e6d8cbc1b621 [file] [log] [blame]
Ankush Menata1b7a792022-05-31 15:35:40 +05301import frappe
2from frappe.model.naming import get_default_naming_series
3
4
5class NamingSeriesNotSetError(frappe.ValidationError):
6 pass
7
8
Akhil Narang3effaf22024-03-27 11:37:26 +05309def set_by_naming_series(doctype, fieldname, naming_series, hide_name_field=True, make_mandatory=1):
Ankush Menata1b7a792022-05-31 15:35:40 +053010 """Change a doctype's naming to user naming series"""
11 from frappe.custom.doctype.property_setter.property_setter import make_property_setter
12
13 if naming_series:
14 make_property_setter(
15 doctype, "naming_series", "hidden", 0, "Check", validate_fields_for_doctype=False
16 )
17 make_property_setter(
18 doctype, "naming_series", "reqd", make_mandatory, "Check", validate_fields_for_doctype=False
19 )
20
21 # set values for mandatory
22 try:
23 frappe.db.sql(
24 """update `tab{doctype}` set naming_series={s} where
Akhil Narang3effaf22024-03-27 11:37:26 +053025 ifnull(naming_series, '')=''""".format(doctype=doctype, s="%s"),
Ankush Menata1b7a792022-05-31 15:35:40 +053026 get_default_naming_series(doctype),
27 )
28 except NamingSeriesNotSetError:
29 pass
30
31 if hide_name_field:
32 make_property_setter(doctype, fieldname, "reqd", 0, "Check", validate_fields_for_doctype=False)
Akhil Narang3effaf22024-03-27 11:37:26 +053033 make_property_setter(doctype, fieldname, "hidden", 1, "Check", validate_fields_for_doctype=False)
Ankush Menata1b7a792022-05-31 15:35:40 +053034 else:
Akhil Narang3effaf22024-03-27 11:37:26 +053035 make_property_setter(doctype, "naming_series", "reqd", 0, "Check", validate_fields_for_doctype=False)
Ankush Menata1b7a792022-05-31 15:35:40 +053036 make_property_setter(
37 doctype, "naming_series", "hidden", 1, "Check", validate_fields_for_doctype=False
38 )
39
40 if hide_name_field:
Akhil Narang3effaf22024-03-27 11:37:26 +053041 make_property_setter(doctype, fieldname, "hidden", 0, "Check", validate_fields_for_doctype=False)
Ankush Menata1b7a792022-05-31 15:35:40 +053042 make_property_setter(doctype, fieldname, "reqd", 1, "Check", validate_fields_for_doctype=False)
43
44 # set values for mandatory
45 frappe.db.sql(
Akhil Narang3effaf22024-03-27 11:37:26 +053046 f"""update `tab{doctype}` set `{fieldname}`=`name` where
47 ifnull({fieldname}, '')=''"""
Ankush Menata1b7a792022-05-31 15:35:40 +053048 )