fix: misleading "Set Default X" fields after saving (#28798)

* fix: misleading "Set Default X" fields after saving

* refactor: remove unncessary code and minor formatting

* fix: extend to more doctypes and correct fieldnames

Co-authored-by: Ankush Menat <ankush@frappe.io>
This commit is contained in:
Sagar Sharma
2021-12-09 17:04:00 +05:30
committed by GitHub
parent c64d5028b4
commit 6485ac4e59
10 changed files with 62 additions and 0 deletions

View File

@@ -162,6 +162,28 @@ class TransactionBase(StatusUpdater):
return ret
def reset_default_field_value(self, default_field: str, child_table: str, child_table_field: str):
""" Reset "Set default X" fields on forms to avoid confusion.
example:
doc = {
"set_from_warehouse": "Warehouse A",
"items": [{"from_warehouse": "warehouse B"}, {"from_warehouse": "warehouse A"}],
}
Since this has dissimilar values in child table, the default field will be erased.
doc.reset_default_field_value("set_from_warehouse", "items", "from_warehouse")
"""
child_table_values = set()
for row in self.get(child_table):
child_table_values.add(row.get(child_table_field))
if len(child_table_values) > 1:
self.set(default_field, None)
else:
self.set(default_field, list(child_table_values)[0])
def delete_events(ref_type, ref_name):
events = frappe.db.sql_list(""" SELECT
distinct `tabEvent`.name