Skip to content

Commit b751b44

Browse files
committed
fix: add description to common code to help uniquely identify a code
1 parent 3040aef commit b751b44

File tree

5 files changed

+55
-8
lines changed

5 files changed

+55
-8
lines changed

erpnext/edi/doctype/code_list/code_list.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ def get_code_for(self, doctype: str, name: str):
5959

6060
return code[0][0] if code else None
6161

62-
def import_genericode(self, file_path, code_column, title_column=None, filters=None):
62+
def import_genericode(
63+
self, file_path, code_column, title_column=None, description_column=None, filters=None
64+
):
6365
"""Import genericode file and create Common Code entries"""
6466
parser = etree.XMLParser(remove_blank_text=True)
6567
tree = etree.parse(file_path, parser=parser)
@@ -79,21 +81,33 @@ def import_genericode(self, file_path, code_column, title_column=None, filters=N
7981

8082
self.save()
8183

82-
common_codes = CommonCode.import_genericode(file_path, self.name, code_column, title_column, filters)
84+
common_codes = CommonCode.import_genericode(
85+
file_path, self.name, code_column, title_column, description_column, filters
86+
)
8387

8488
# Bulk insert common codes
8589
if common_codes:
8690
now = frappe.utils.data.now()
8791
user = frappe.session.user
8892
frappe.db.bulk_insert(
8993
"Common Code",
90-
fields=["name", "code_list", "common_code", "title", "additional_data", "owner", "creation"],
94+
fields=[
95+
"name",
96+
"code_list",
97+
"common_code",
98+
"title",
99+
"description",
100+
"additional_data",
101+
"owner",
102+
"creation",
103+
],
91104
values=[
92105
(
93106
cc["name"],
94107
cc["code_list"],
95108
cc["common_code"],
96109
cc["title"],
110+
cc["description"],
97111
cc["additional_data"],
98112
user,
99113
now,

erpnext/edi/doctype/code_list/code_list_import.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@ function show_column_selection_dialog(context) {
4444
? "value"
4545
: null,
4646
},
47+
{
48+
fieldname: "description_column",
49+
label: __("as Description"),
50+
fieldtype: "Select",
51+
options: [null].concat(context.columns),
52+
default: context.columns.includes("description") ? "description" : null,
53+
},
4754
{
4855
fieldname: "filters_column",
4956
label: __("Filter"),
@@ -92,6 +99,7 @@ function show_column_selection_dialog(context) {
9299
file_path: context.file_path,
93100
code_column: values.code_column,
94101
title_column: values.title_column,
102+
description_column: values.description_column,
95103
filters: filters,
96104
},
97105
callback: function (r) {
@@ -119,10 +127,12 @@ function show_column_selection_dialog(context) {
119127
function update_preview(dialog, context) {
120128
let code_column = dialog.get_value("code_column");
121129
let title_column = dialog.get_value("title_column");
130+
let description_column = dialog.get_value("description_column");
122131

123132
let html = '<table class="table table-bordered"><thead><tr>';
124133
if (title_column) html += `<th>${__("Title")}</th>`;
125134
if (code_column) html += `<th>${__("Code")}</th>`;
135+
if (description_column) html += `<th>${__("Description")}</th>`;
126136

127137
// Add headers for filterable columns
128138
for (let column in context.filterable_columns) {
@@ -143,6 +153,10 @@ function update_preview(dialog, context) {
143153
let code = context.example_values[code_column][i] || "";
144154
html += `<td title="${code}">${truncate(code)}</td>`;
145155
}
156+
if (description_column) {
157+
let description = context.example_values[description_column][i] || "";
158+
html += `<td title="${description}">${truncate(description)}</td>`;
159+
}
146160

147161
// Add values for filterable columns
148162
for (let column in context.filterable_columns) {

erpnext/edi/doctype/code_list/code_list_import.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,13 @@ def import_genericode():
5555

5656

5757
@frappe.whitelist()
58-
def process_genericode_import(code_list_name, file_path, code_column, title_column=None, filters=None):
58+
def process_genericode_import(
59+
code_list_name, file_path, code_column, title_column=None, description_column=None, filters=None
60+
):
5961
code_list = frappe.get_doc("Code List", code_list_name)
60-
return code_list.import_genericode(file_path, code_column, title_column, filters and json.loads(filters))
62+
return code_list.import_genericode(
63+
file_path, code_column, title_column, description_column, filters and json.loads(filters)
64+
)
6165

6266

6367
def get_columns_and_examples(file_path):

erpnext/edi/doctype/common_code/common_code.json

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
"engine": "InnoDB",
77
"field_order": [
88
"code_list",
9-
"common_code",
109
"title",
10+
"common_code",
11+
"description",
1112
"column_break_wxsw",
1213
"additional_data",
1314
"section_break_rhgh",
@@ -57,10 +58,16 @@
5758
"fieldname": "additional_data",
5859
"fieldtype": "Code",
5960
"label": "Additional Data"
61+
},
62+
{
63+
"fieldname": "description",
64+
"fieldtype": "Small Text",
65+
"in_list_view": 1,
66+
"label": "Description"
6067
}
6168
],
6269
"links": [],
63-
"modified": "2024-10-01 13:00:35.702299",
70+
"modified": "2024-10-01 13:19:14.087201",
6471
"modified_by": "Administrator",
6572
"module": "EDI",
6673
"name": "Common Code",

erpnext/edi/doctype/common_code/common_code.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class CommonCode(Document):
2525
applies_to: DF.Table[DynamicLink]
2626
code_list: DF.Link
2727
common_code: DF.Data
28+
description: DF.SmallText | None
2829
title: DF.Data | None
2930
# end: auto-generated types
3031

@@ -60,7 +61,9 @@ def validate_distinct_references(self):
6061
)
6162

6263
@staticmethod
63-
def import_genericode(file_path, list_name, code_column, title_column=None, filters=None):
64+
def import_genericode(
65+
file_path, list_name, code_column, title_column=None, description_column=None, filters=None
66+
):
6467
parser = etree.XMLParser(remove_blank_text=True)
6568
tree = etree.parse(file_path, parser=parser)
6669
root = tree.getroot()
@@ -86,12 +89,17 @@ def import_genericode(file_path, list_name, code_column, title_column=None, filt
8689
if title_column:
8790
title = code.find(f"./Value[@ColumnRef='{title_column}']/SimpleValue").text
8891

92+
description = None
93+
if description_column:
94+
description = code.find(f"./Value[@ColumnRef='{description_column}']/SimpleValue").text
95+
8996
codes.append(
9097
{
9198
"name": f"{list_hash}|{idx}|{code_hash}",
9299
"code_list": list_name,
93100
"common_code": code_value,
94101
"title": title,
102+
"description": description,
95103
"additional_data": content,
96104
}
97105
)

0 commit comments

Comments
 (0)