removed (to az locale) item group rename
This commit is contained in:
parent
64096d7c5a
commit
24a48a9bc7
|
|
@ -39,8 +39,6 @@ def after_migrate_combined():
|
||||||
|
|
||||||
from jey_erp.custom_fields import create_custom_fields
|
from jey_erp.custom_fields import create_custom_fields
|
||||||
create_custom_fields()
|
create_custom_fields()
|
||||||
from jey_erp.overrides.custom_install import rename_item_groups
|
|
||||||
rename_item_groups()
|
|
||||||
|
|
||||||
|
|
||||||
fixtures = [
|
fixtures = [
|
||||||
|
|
|
||||||
|
|
@ -1,172 +0,0 @@
|
||||||
import frappe
|
|
||||||
import urllib.parse
|
|
||||||
|
|
||||||
def rename_item_groups():
|
|
||||||
"""
|
|
||||||
Переименовывает группы номенклатур: и названия, и ID на азербайджанский
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Маппинг: старый_ID -> {"new_name": "название", "new_id": "тоже_название"}
|
|
||||||
translation_map = {
|
|
||||||
"All Item Groups": {
|
|
||||||
"new_name": "Bütün Məhsul Qrupları",
|
|
||||||
},
|
|
||||||
"Products": {
|
|
||||||
"new_name": "Məhsullar",
|
|
||||||
},
|
|
||||||
"Raw Material": {
|
|
||||||
"new_name": "Xammal",
|
|
||||||
},
|
|
||||||
"Services": {
|
|
||||||
"new_name": "Xidmətlər",
|
|
||||||
},
|
|
||||||
"Sub Assemblies": {
|
|
||||||
"new_name": "Alt Montajlar",
|
|
||||||
},
|
|
||||||
"Consumable": {
|
|
||||||
"new_name": "İstehlak Malları",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# ID будет точно таким же, как и название (на азербайджанском)
|
|
||||||
for key, value in translation_map.items():
|
|
||||||
new_name = value["new_name"]
|
|
||||||
# ID = название (без URL-encoding)
|
|
||||||
value["new_id"] = new_name
|
|
||||||
|
|
||||||
try:
|
|
||||||
updated_count = 0
|
|
||||||
renamed_count = 0
|
|
||||||
|
|
||||||
frappe.flags.ignore_permissions = True
|
|
||||||
frappe.flags.ignore_links = True
|
|
||||||
frappe.flags.ignore_validate_update_after_submit = True
|
|
||||||
|
|
||||||
# Получаем все группы, отсортированные по иерархии
|
|
||||||
all_groups = frappe.get_all(
|
|
||||||
"Item Group",
|
|
||||||
fields=["name", "item_group_name", "parent_item_group", "lft", "rgt"],
|
|
||||||
order_by="lft" # От корневых к дочерним
|
|
||||||
)
|
|
||||||
|
|
||||||
# Создаем маппинг для обновления родительских ссылок
|
|
||||||
id_mapping = {}
|
|
||||||
groups_to_process = []
|
|
||||||
|
|
||||||
# Собираем информацию о группах для переименования
|
|
||||||
for old_id, translation in translation_map.items():
|
|
||||||
new_name = translation["new_name"]
|
|
||||||
new_id = translation["new_id"]
|
|
||||||
|
|
||||||
# Находим группу по текущему ID
|
|
||||||
existing_group = None
|
|
||||||
for group in all_groups:
|
|
||||||
if group.name == old_id:
|
|
||||||
existing_group = group
|
|
||||||
break
|
|
||||||
|
|
||||||
if existing_group:
|
|
||||||
id_mapping[old_id] = new_id
|
|
||||||
groups_to_process.append({
|
|
||||||
"old_id": old_id,
|
|
||||||
"new_id": new_id,
|
|
||||||
"new_name": new_name,
|
|
||||||
"lft": existing_group.lft,
|
|
||||||
"current_parent": existing_group.parent_item_group
|
|
||||||
})
|
|
||||||
|
|
||||||
# Обрабатываем группы в правильном порядке (от корневых к дочерним)
|
|
||||||
for group_info in sorted(groups_to_process, key=lambda x: x["lft"]):
|
|
||||||
old_id = group_info["old_id"]
|
|
||||||
new_id = group_info["new_id"]
|
|
||||||
new_name = group_info["new_name"]
|
|
||||||
current_parent = group_info["current_parent"]
|
|
||||||
|
|
||||||
# Проверяем, не существует ли уже группа с новым ID
|
|
||||||
if frappe.db.exists("Item Group", new_id):
|
|
||||||
continue
|
|
||||||
|
|
||||||
try:
|
|
||||||
# Обновляем родительскую ссылку если родитель тоже переименовывается
|
|
||||||
updated_parent = current_parent
|
|
||||||
if current_parent and current_parent in id_mapping:
|
|
||||||
updated_parent = id_mapping[current_parent]
|
|
||||||
|
|
||||||
# Сначала обновляем название
|
|
||||||
frappe.db.sql("""
|
|
||||||
UPDATE `tabItem Group`
|
|
||||||
SET item_group_name = %s
|
|
||||||
WHERE name = %s
|
|
||||||
""", (new_name, old_id))
|
|
||||||
|
|
||||||
updated_count += 1
|
|
||||||
|
|
||||||
# Теперь переименовываем ID
|
|
||||||
if old_id != new_id:
|
|
||||||
# Используем низкоуровневые SQL запросы для избежания проверок
|
|
||||||
|
|
||||||
# 1. Обновляем основную запись
|
|
||||||
frappe.db.sql("""
|
|
||||||
UPDATE `tabItem Group`
|
|
||||||
SET name = %s
|
|
||||||
WHERE name = %s
|
|
||||||
""", (new_id, old_id))
|
|
||||||
|
|
||||||
# 2. Обновляем parent_item_group ссылки
|
|
||||||
frappe.db.sql("""
|
|
||||||
UPDATE `tabItem Group`
|
|
||||||
SET parent_item_group = %s
|
|
||||||
WHERE parent_item_group = %s
|
|
||||||
""", (new_id, old_id))
|
|
||||||
|
|
||||||
# 3. Обновляем ссылки в товарах
|
|
||||||
frappe.db.sql("""
|
|
||||||
UPDATE `tabItem`
|
|
||||||
SET item_group = %s
|
|
||||||
WHERE item_group = %s
|
|
||||||
""", (new_id, old_id))
|
|
||||||
|
|
||||||
# 4. Обновляем другие возможные ссылки
|
|
||||||
other_tables = [
|
|
||||||
("tabItem Default", "parent_item_group"),
|
|
||||||
("tabPurchase Invoice Item", "item_group"),
|
|
||||||
("tabSales Invoice Item", "item_group"),
|
|
||||||
("tabDelivery Note Item", "item_group"),
|
|
||||||
("tabPurchase Receipt Item", "item_group")
|
|
||||||
]
|
|
||||||
|
|
||||||
for table, field in other_tables:
|
|
||||||
if frappe.db.has_column(table, field):
|
|
||||||
frappe.db.sql(f"""
|
|
||||||
UPDATE `{table}`
|
|
||||||
SET `{field}` = %s
|
|
||||||
WHERE `{field}` = %s
|
|
||||||
""", (new_id, old_id))
|
|
||||||
|
|
||||||
renamed_count += 1
|
|
||||||
|
|
||||||
except Exception as process_error:
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Сохраняем изменения
|
|
||||||
frappe.db.commit()
|
|
||||||
|
|
||||||
# Очищаем кэш
|
|
||||||
frappe.clear_cache()
|
|
||||||
|
|
||||||
# Перестраиваем дерево
|
|
||||||
try:
|
|
||||||
from frappe.utils.nestedset import rebuild_tree
|
|
||||||
rebuild_tree("Item Group", "parent_item_group")
|
|
||||||
except Exception as tree_error:
|
|
||||||
pass
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
frappe.log_error(f"URL-encoded Item Groups Error: {str(e)}")
|
|
||||||
frappe.db.rollback()
|
|
||||||
raise
|
|
||||||
|
|
||||||
finally:
|
|
||||||
frappe.flags.ignore_permissions = False
|
|
||||||
frappe.flags.ignore_links = False
|
|
||||||
frappe.flags.ignore_validate_update_after_submit = False
|
|
||||||
Loading…
Reference in New Issue