e-taxes settings is single doctype now
This commit is contained in:
parent
5ee0badd00
commit
331aabe1d7
|
|
@ -12,6 +12,31 @@ frappe.ui.form.on('E-Taxes Settings', {
|
||||||
},
|
},
|
||||||
|
|
||||||
refresh: function(frm) {
|
refresh: function(frm) {
|
||||||
|
frm.add_custom_button(__('Restore from old data'), function() {
|
||||||
|
frappe.confirm(
|
||||||
|
__('This will restore all settings and mappings from the pre-migration database record. Continue?'),
|
||||||
|
function() {
|
||||||
|
frappe.call({
|
||||||
|
method: 'invoice_az.migrate_utils.restore_etaxes_settings_from_old_table',
|
||||||
|
freeze: true,
|
||||||
|
freeze_message: __('Restoring...'),
|
||||||
|
callback: function(r) {
|
||||||
|
if (r.message && r.message.success) {
|
||||||
|
frappe.show_alert({ message: __(r.message.message), indicator: 'green' }, 5);
|
||||||
|
frm.reload_doc();
|
||||||
|
} else {
|
||||||
|
frappe.msgprint({
|
||||||
|
title: __('Restore Failed'),
|
||||||
|
indicator: 'red',
|
||||||
|
message: r.message ? r.message.message : __('Unknown error')
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}, __('Data Loading'));
|
||||||
|
|
||||||
// Main Load All Data button
|
// Main Load All Data button
|
||||||
frm.add_custom_button(__('Load All Data'), function() {
|
frm.add_custom_button(__('Load All Data'), function() {
|
||||||
show_load_all_data_dialog(frm);
|
show_load_all_data_dialog(frm);
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,93 @@ CHILD_TABLES = [
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
@frappe.whitelist()
|
||||||
|
def restore_etaxes_settings_from_old_table():
|
||||||
|
"""
|
||||||
|
Called from the E-Taxes Settings form button.
|
||||||
|
Reads data from the old tabE-Taxes Settings (still exists after migration)
|
||||||
|
and populates the current Single doctype.
|
||||||
|
"""
|
||||||
|
if not frappe.db.table_exists("tabE-Taxes Settings"):
|
||||||
|
return {"success": False, "message": "Old table not found"}
|
||||||
|
|
||||||
|
# Get the old record
|
||||||
|
old_row = None
|
||||||
|
for query in [
|
||||||
|
"SELECT * FROM `tabE-Taxes Settings` WHERE name != 'E-Taxes Settings' LIMIT 1",
|
||||||
|
"SELECT * FROM `tabE-Taxes Settings` LIMIT 1",
|
||||||
|
]:
|
||||||
|
try:
|
||||||
|
rows = frappe.db.sql(query, as_dict=True)
|
||||||
|
if rows:
|
||||||
|
old_row = rows[0]
|
||||||
|
break
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
if not old_row:
|
||||||
|
return {"success": False, "message": "No old settings record found in database"}
|
||||||
|
|
||||||
|
old_name = old_row.get("name")
|
||||||
|
|
||||||
|
# Write scalar fields to tabSingles
|
||||||
|
for field in SCALAR_FIELDS:
|
||||||
|
value = old_row.get(field)
|
||||||
|
if value is None:
|
||||||
|
continue
|
||||||
|
frappe.db.sql(
|
||||||
|
"""
|
||||||
|
INSERT INTO `tabSingles` (doctype, field, value)
|
||||||
|
VALUES ('E-Taxes Settings', %s, %s)
|
||||||
|
ON DUPLICATE KEY UPDATE value = VALUES(value)
|
||||||
|
""",
|
||||||
|
(field, str(value)),
|
||||||
|
)
|
||||||
|
|
||||||
|
# Restore child table rows
|
||||||
|
restored_children = {}
|
||||||
|
for table in CHILD_TABLES:
|
||||||
|
if not frappe.db.table_exists(table):
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
child_rows = frappe.db.sql(
|
||||||
|
f"SELECT * FROM `{table}` WHERE parent = %s ORDER BY idx",
|
||||||
|
(old_name,),
|
||||||
|
as_dict=True,
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if not child_rows:
|
||||||
|
continue
|
||||||
|
|
||||||
|
frappe.db.sql(f"DELETE FROM `{table}` WHERE parent = 'E-Taxes Settings'")
|
||||||
|
|
||||||
|
for row in child_rows:
|
||||||
|
row["parent"] = "E-Taxes Settings"
|
||||||
|
row["parenttype"] = "E-Taxes Settings"
|
||||||
|
columns = ", ".join(f"`{col}`" for col in row)
|
||||||
|
placeholders = ", ".join(["%s"] * len(row))
|
||||||
|
try:
|
||||||
|
frappe.db.sql(
|
||||||
|
f"INSERT INTO `{table}` ({columns}) VALUES ({placeholders})",
|
||||||
|
list(row.values()),
|
||||||
|
)
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
restored_children[table] = len(child_rows)
|
||||||
|
|
||||||
|
frappe.db.commit()
|
||||||
|
frappe.clear_cache(doctype="E-Taxes Settings")
|
||||||
|
|
||||||
|
return {
|
||||||
|
"success": True,
|
||||||
|
"message": f"Restored from record '{old_name}'",
|
||||||
|
"children": restored_children,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def migrate_etaxes_settings_to_single():
|
def migrate_etaxes_settings_to_single():
|
||||||
"""
|
"""
|
||||||
Called from after_migrate hook.
|
Called from after_migrate hook.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue