From 296d5d2295ca55e4a18b80e0176af63b1f9e24c9 Mon Sep 17 00:00:00 2001 From: Diptanil Saha Date: Tue, 7 Jan 2025 17:28:46 +0530 Subject: [PATCH] chore: removal of tally migration feature (#45100) (cherry picked from commit 9f77793f1673ff9f55b8d181dc3dff7a68136da9) # Conflicts: # erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.json # erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.py # erpnext/erpnext_integrations/doctype/tally_migration/test_tally_migration.py --- .../doctype/tally_migration/__init__.py | 0 .../tally_migration/tally_migration.js | 364 ------------------ 2 files changed, 364 deletions(-) delete mode 100644 erpnext/erpnext_integrations/doctype/tally_migration/__init__.py delete mode 100644 erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.js diff --git a/erpnext/erpnext_integrations/doctype/tally_migration/__init__.py b/erpnext/erpnext_integrations/doctype/tally_migration/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.js b/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.js deleted file mode 100644 index 556c332634d..00000000000 --- a/erpnext/erpnext_integrations/doctype/tally_migration/tally_migration.js +++ /dev/null @@ -1,364 +0,0 @@ -// Copyright (c) 2019, Frappe Technologies Pvt. Ltd. and contributors -// For license information, please see license.txt - -frappe.provide("erpnext.tally_migration"); - -frappe.ui.form.on("Tally Migration", { - onload: function (frm) { - let reload_status = true; - frappe.realtime.on("tally_migration_progress_update", function (data) { - if (reload_status) { - frappe.model.with_doc(frm.doc.doctype, frm.doc.name, () => { - frm.refresh_header(); - }); - reload_status = false; - } - frm.dashboard.show_progress(data.title, (data.count / data.total) * 100, data.message); - let error_occurred = data.count === -1; - if (data.count == data.total || error_occurred) { - window.setTimeout( - (title) => { - frm.dashboard.hide_progress(title); - frm.reload_doc(); - if (error_occurred) { - frappe.msgprint({ - message: __("An error has occurred during {0}. Check {1} for more details", [ - repl( - "%(tally_document)s", - { - tally_document: frm.docname, - } - ), - "Error Log", - ]), - title: __("Tally Migration Error"), - indicator: "red", - }); - } - }, - 2000, - data.title - ); - } - }); - }, - - refresh: function (frm) { - frm.trigger("show_logs_preview"); - erpnext.tally_migration.failed_import_log = JSON.parse(frm.doc.failed_import_log); - erpnext.tally_migration.fixed_errors_log = JSON.parse(frm.doc.fixed_errors_log); - - ["default_round_off_account", "default_warehouse", "default_cost_center"].forEach((account) => { - frm.toggle_reqd(account, frm.doc.is_master_data_imported === 1); - frm.toggle_enable(account, frm.doc.is_day_book_data_processed != 1); - }); - - if (frm.doc.master_data && !frm.doc.is_master_data_imported) { - if (frm.doc.is_master_data_processed) { - if (frm.doc.status != "Importing Master Data") { - frm.events.add_button(frm, __("Import Master Data"), "import_master_data"); - } - } else { - if (frm.doc.status != "Processing Master Data") { - frm.events.add_button(frm, __("Process Master Data"), "process_master_data"); - } - } - } - - if (frm.doc.day_book_data && !frm.doc.is_day_book_data_imported) { - if (frm.doc.is_day_book_data_processed) { - if (frm.doc.status != "Importing Day Book Data") { - frm.events.add_button(frm, __("Import Day Book Data"), "import_day_book_data"); - } - } else { - if (frm.doc.status != "Processing Day Book Data") { - frm.events.add_button(frm, __("Process Day Book Data"), "process_day_book_data"); - } - } - } - }, - - erpnext_company: function (frm) { - frappe.db.exists("Company", frm.doc.erpnext_company).then((exists) => { - if (exists) { - frappe.msgprint( - __( - "Company {0} already exists. Continuing will overwrite the Company and Chart of Accounts", - [frm.doc.erpnext_company] - ) - ); - } - }); - }, - - add_button: function (frm, label, method) { - frm.add_custom_button(label, () => { - frm.call({ - doc: frm.doc, - method: method, - freeze: true, - }); - frm.reload_doc(); - }); - }, - - render_html_table(frm, shown_logs, hidden_logs, field) { - if (shown_logs && shown_logs.length > 0) { - frm.toggle_display(field, true); - } else { - frm.toggle_display(field, false); - return; - } - let rows = erpnext.tally_migration.get_html_rows(shown_logs, field); - let rows_head, table_caption; - - let table_footer = - hidden_logs && hidden_logs.length > 0 - ? ` - And ${hidden_logs.length} more others - ` - : ""; - - if (field === "fixed_error_log_preview") { - rows_head = `${__("Meta Data")} - ${__("Unresolve")}`; - table_caption = "Resolved Issues"; - } else { - rows_head = `${__("Error Message")} - ${__("Create")}`; - table_caption = "Error Log"; - } - - frm.get_field(field).$wrapper.html(` - - - - - - ${rows_head} - - ${rows} - ${table_footer} -
${table_caption}
${__("#")}${__("DocType")}
- `); - }, - - show_error_summary(frm) { - let summary = erpnext.tally_migration.failed_import_log.reduce((summary, row) => { - if (row.doc) { - if (summary[row.doc.doctype]) { - summary[row.doc.doctype] += 1; - } else { - summary[row.doc.doctype] = 1; - } - } - return summary; - }, {}); - console.table(summary); - }, - - show_logs_preview(frm) { - let empty = "[]"; - let import_log = frm.doc.failed_import_log || empty; - let completed_log = frm.doc.fixed_errors_log || empty; - let render_section = !(import_log === completed_log && import_log === empty); - - frm.toggle_display("import_log_section", render_section); - if (render_section) { - frm.trigger("show_error_summary"); - frm.trigger("show_errored_import_log"); - frm.trigger("show_fixed_errors_log"); - } - }, - - show_errored_import_log(frm) { - let import_log = erpnext.tally_migration.failed_import_log; - let logs = import_log.slice(0, 20); - let hidden_logs = import_log.slice(20); - - frm.events.render_html_table(frm, logs, hidden_logs, "failed_import_preview"); - }, - - show_fixed_errors_log(frm) { - let completed_log = erpnext.tally_migration.fixed_errors_log; - let logs = completed_log.slice(0, 20); - let hidden_logs = completed_log.slice(20); - - frm.events.render_html_table(frm, logs, hidden_logs, "fixed_error_log_preview"); - }, -}); - -erpnext.tally_migration.getError = (traceback) => { - /* Extracts the Error Message from the Python Traceback or Solved error */ - let is_multiline = traceback.trim().indexOf("\n") != -1; - let message; - - if (is_multiline) { - let exc_error_idx = traceback.trim().lastIndexOf("\n") + 1; - let error_line = traceback.substr(exc_error_idx); - let split_str_idx = error_line.indexOf(":") > 0 ? error_line.indexOf(":") + 1 : 0; - message = error_line.slice(split_str_idx).trim(); - } else { - message = traceback; - } - - return message; -}; - -erpnext.tally_migration.cleanDoc = (obj) => { - /* Strips all null and empty values of your JSON object */ - let temp = obj; - $.each(temp, function (key, value) { - if (value === "" || value === null) { - delete obj[key]; - } else if (Object.prototype.toString.call(value) === "[object Object]") { - erpnext.tally_migration.cleanDoc(value); - } else if ($.isArray(value)) { - $.each(value, function (k, v) { - erpnext.tally_migration.cleanDoc(v); - }); - } - }); - return temp; -}; - -erpnext.tally_migration.unresolve = (document) => { - /* Mark document migration as unresolved ie. move to failed error log */ - let frm = cur_frm; - let failed_log = erpnext.tally_migration.failed_import_log; - let fixed_log = erpnext.tally_migration.fixed_errors_log; - - let modified_fixed_log = fixed_log.filter((row) => { - if (!frappe.utils.deep_equal(erpnext.tally_migration.cleanDoc(row.doc), document)) { - return row; - } - }); - - failed_log.push({ doc: document, exc: `Marked unresolved on ${Date()}` }); - - frm.doc.failed_import_log = JSON.stringify(failed_log); - frm.doc.fixed_errors_log = JSON.stringify(modified_fixed_log); - - frm.dirty(); - frm.save(); -}; - -erpnext.tally_migration.resolve = (document) => { - /* Mark document migration as resolved ie. move to fixed error log */ - let frm = cur_frm; - let failed_log = erpnext.tally_migration.failed_import_log; - let fixed_log = erpnext.tally_migration.fixed_errors_log; - - let modified_failed_log = failed_log.filter((row) => { - if (!frappe.utils.deep_equal(erpnext.tally_migration.cleanDoc(row.doc), document)) { - return row; - } - }); - fixed_log.push({ doc: document, exc: `Solved on ${Date()}` }); - - frm.doc.failed_import_log = JSON.stringify(modified_failed_log); - frm.doc.fixed_errors_log = JSON.stringify(fixed_log); - - frm.dirty(); - frm.save(); -}; - -erpnext.tally_migration.create_new_doc = (document) => { - /* Mark as resolved and create new document */ - erpnext.tally_migration.resolve(document); - return frappe.call({ - type: "POST", - method: "erpnext.erpnext_integrations.doctype.tally_migration.tally_migration.new_doc", - args: { - document, - }, - freeze: true, - callback: function (r) { - if (!r.exc) { - frappe.model.sync(r.message); - frappe.get_doc(r.message.doctype, r.message.name).__run_link_triggers = true; - frappe.set_route("Form", r.message.doctype, r.message.name); - } - }, - }); -}; - -erpnext.tally_migration.get_html_rows = (logs, field) => { - let index = 0; - let rows = logs - .map(({ doc, exc }) => { - let id = frappe.dom.get_unique_id(); - let traceback = exc; - - let error_message = erpnext.tally_migration.getError(traceback); - index++; - - let show_traceback = ` - -
-
-
${traceback}
-
-
`; - - let show_doc = ` - -
-
-
${JSON.stringify(erpnext.tally_migration.cleanDoc(doc), null, 1)}
-
-
`; - - let create_button = ` - `; - - let mark_as_unresolved = ` - `; - - if (field === "fixed_error_log_preview") { - return ` - ${index} - -
${doc.doctype}
- - -
${error_message}
-
${show_doc}
- - -
${mark_as_unresolved}
- - `; - } else { - return ` - ${index} - -
${doc.doctype}
- - -
${error_message}
-
${show_traceback}
-
${show_doc}
- - -
${create_button}
- - `; - } - }) - .join(""); - - return rows; -};