removed (to az locale) item group rename

This commit is contained in:
Ali 2025-08-13 17:46:03 +04:00
parent 64096d7c5a
commit 24a48a9bc7
2 changed files with 0 additions and 174 deletions

View File

@ -39,8 +39,6 @@ def after_migrate_combined():
from jey_erp.custom_fields import create_custom_fields
create_custom_fields()
from jey_erp.overrides.custom_install import rename_item_groups
rename_item_groups()
fixtures = [

View File

@ -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