Skip to content

Commit

Permalink
fix: add description to common code to help uniquely identify a code
Browse files Browse the repository at this point in the history
  • Loading branch information
blaggacao committed Oct 1, 2024
1 parent 3040aef commit 4f3cc07
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 8 deletions.
20 changes: 17 additions & 3 deletions erpnext/edi/doctype/code_list/code_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,9 @@ def get_code_for(self, doctype: str, name: str):

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

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

self.save()

common_codes = CommonCode.import_genericode(file_path, self.name, code_column, title_column, filters)
common_codes = CommonCode.import_genericode(
file_path, self.name, code_column, title_column, description_column, filters
)

# Bulk insert common codes
if common_codes:
now = frappe.utils.data.now()
user = frappe.session.user
frappe.db.bulk_insert(
"Common Code",
fields=["name", "code_list", "common_code", "title", "additional_data", "owner", "creation"],
fields=[
"name",
"code_list",
"common_code",
"title",
"description",
"additional_data",
"owner",
"creation",
],
values=[
(
cc["name"],
cc["code_list"],
cc["common_code"],
cc["title"],
cc["description"],
cc["additional_data"],
user,
now,
Expand Down
14 changes: 14 additions & 0 deletions erpnext/edi/doctype/code_list/code_list_import.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ function show_column_selection_dialog(context) {
? "value"
: null,
},
{
fieldname: "description_column",
label: __("as Description"),
fieldtype: "Select",
options: [null].concat(context.columns),
default: context.columns.includes("description") ? "description" : null,
},
{
fieldname: "filters_column",
label: __("Filter"),
Expand Down Expand Up @@ -92,6 +99,7 @@ function show_column_selection_dialog(context) {
file_path: context.file_path,
code_column: values.code_column,
title_column: values.title_column,
description_column: values.description_column,
filters: filters,
},
callback: function (r) {
Expand Down Expand Up @@ -119,10 +127,12 @@ function show_column_selection_dialog(context) {
function update_preview(dialog, context) {
let code_column = dialog.get_value("code_column");
let title_column = dialog.get_value("title_column");
let description_column = dialog.get_value("description_column");

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

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

// Add values for filterable columns
for (let column in context.filterable_columns) {
Expand Down
8 changes: 6 additions & 2 deletions erpnext/edi/doctype/code_list/code_list_import.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,13 @@ def import_genericode():


@frappe.whitelist()
def process_genericode_import(code_list_name, file_path, code_column, title_column=None, filters=None):
def process_genericode_import(
code_list_name, file_path, code_column, title_column=None, description_column=None, filters=None
):
code_list = frappe.get_doc("Code List", code_list_name)
return code_list.import_genericode(file_path, code_column, title_column, filters and json.loads(filters))
return code_list.import_genericode(
file_path, code_column, title_column, description_column, filters and json.loads(filters)
)


def get_columns_and_examples(file_path):
Expand Down
10 changes: 8 additions & 2 deletions erpnext/edi/doctype/common_code/common_code.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@
"engine": "InnoDB",
"field_order": [
"code_list",
"common_code",
"title",
"common_code",
"description",
"column_break_wxsw",
"additional_data",
"section_break_rhgh",
Expand Down Expand Up @@ -57,10 +58,15 @@
"fieldname": "additional_data",
"fieldtype": "Code",
"label": "Additional Data"
},
{
"fieldname": "description",
"fieldtype": "Small Text",
"label": "Description"
}
],
"links": [],
"modified": "2024-10-01 13:00:35.702299",
"modified": "2024-10-01 13:12:57.558579",
"modified_by": "Administrator",
"module": "EDI",
"name": "Common Code",
Expand Down
10 changes: 9 additions & 1 deletion erpnext/edi/doctype/common_code/common_code.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ class CommonCode(Document):
applies_to: DF.Table[DynamicLink]
code_list: DF.Link
common_code: DF.Data
description: DF.SmallText | None
title: DF.Data | None
# end: auto-generated types

Expand Down Expand Up @@ -60,7 +61,9 @@ def validate_distinct_references(self):
)

@staticmethod
def import_genericode(file_path, list_name, code_column, title_column=None, filters=None):
def import_genericode(
file_path, list_name, code_column, title_column=None, description_column=None, filters=None
):
parser = etree.XMLParser(remove_blank_text=True)
tree = etree.parse(file_path, parser=parser)
root = tree.getroot()
Expand All @@ -86,12 +89,17 @@ def import_genericode(file_path, list_name, code_column, title_column=None, filt
if title_column:
title = code.find(f"./Value[@ColumnRef='{title_column}']/SimpleValue").text

description = None
if description_column:
description = code.find(f"./Value[@ColumnRef='{description_column}']/SimpleValue").text

codes.append(
{
"name": f"{list_hash}|{idx}|{code_hash}",
"code_list": list_name,
"common_code": code_value,
"title": title,
"description": description,
"additional_data": content,
}
)
Expand Down

0 comments on commit 4f3cc07

Please sign in to comment.