diff --git a/jey_erp/hooks.py b/jey_erp/hooks.py index 27bed16..57c9c60 100644 --- a/jey_erp/hooks.py +++ b/jey_erp/hooks.py @@ -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 = [ diff --git a/jey_erp/overrides/custom_install.py b/jey_erp/overrides/custom_install.py deleted file mode 100644 index 9fc0e0e..0000000 --- a/jey_erp/overrides/custom_install.py +++ /dev/null @@ -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 \ No newline at end of file