Revised the get_summary_categories() utility to sort the returned categories by their frequencies in the accounting application.

This commit is contained in:
依瑪貓 2020-08-05 11:33:15 +08:00
parent 4dd1d35cec
commit 4f837f942f

View File

@ -359,12 +359,19 @@ def get_summary_categories():
key = "%s-%s" % (row["rec_type"], row["cat_type"]) key = "%s-%s" % (row["rec_type"], row["cat_type"])
if key not in categories: if key not in categories:
categories[key] = {} categories[key] = {}
# Keeps only the first account with most records
if row["category"] not in categories[key]: if row["category"] not in categories[key]:
categories[key][row["category"]] = row["account__code"] categories[key][row["category"]] = []
categories[key][row["category"]].append(row)
for key in categories:
# Keeps only the first account with most records
categories[key] = [categories[key][x][0] for x in categories[key]]
# Sorts the categories by the frequency
categories[key].sort(key=lambda x: (-x["count"], x["category"]))
# Keeps only the category and the account
categories[key] = [[x["category"], x["account__code"]]
for x in categories[key]]
# Converts the dictionary to a list, as the category may not be US-ASCII # Converts the dictionary to a list, as the category may not be US-ASCII
return json.dumps({t: [[c, categories[t][c]] for c in categories[t]] return json.dumps(categories)
for t in categories.keys()})
def fill_txn_from_post(txn_type, txn, post): def fill_txn_from_post(txn_type, txn, post):