Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.
 
 
 
 

61 righe
1.8 KiB

  1. import frappe
  2. from frappe.model.naming import get_default_naming_series
  3. class NamingSeriesNotSetError(frappe.ValidationError):
  4. pass
  5. def set_by_naming_series(
  6. doctype, fieldname, naming_series, hide_name_field=True, make_mandatory=1
  7. ):
  8. """Change a doctype's naming to user naming series"""
  9. from frappe.custom.doctype.property_setter.property_setter import make_property_setter
  10. if naming_series:
  11. make_property_setter(
  12. doctype, "naming_series", "hidden", 0, "Check", validate_fields_for_doctype=False
  13. )
  14. make_property_setter(
  15. doctype, "naming_series", "reqd", make_mandatory, "Check", validate_fields_for_doctype=False
  16. )
  17. # set values for mandatory
  18. try:
  19. frappe.db.sql(
  20. """update `tab{doctype}` set naming_series={s} where
  21. ifnull(naming_series, '')=''""".format(
  22. doctype=doctype, s="%s"
  23. ),
  24. get_default_naming_series(doctype),
  25. )
  26. except NamingSeriesNotSetError:
  27. pass
  28. if hide_name_field:
  29. make_property_setter(doctype, fieldname, "reqd", 0, "Check", validate_fields_for_doctype=False)
  30. make_property_setter(
  31. doctype, fieldname, "hidden", 1, "Check", validate_fields_for_doctype=False
  32. )
  33. else:
  34. make_property_setter(
  35. doctype, "naming_series", "reqd", 0, "Check", validate_fields_for_doctype=False
  36. )
  37. make_property_setter(
  38. doctype, "naming_series", "hidden", 1, "Check", validate_fields_for_doctype=False
  39. )
  40. if hide_name_field:
  41. make_property_setter(
  42. doctype, fieldname, "hidden", 0, "Check", validate_fields_for_doctype=False
  43. )
  44. make_property_setter(doctype, fieldname, "reqd", 1, "Check", validate_fields_for_doctype=False)
  45. # set values for mandatory
  46. frappe.db.sql(
  47. """update `tab{doctype}` set `{fieldname}`=`name` where
  48. ifnull({fieldname}, '')=''""".format(
  49. doctype=doctype, fieldname=fieldname
  50. )
  51. )