# Следующая задача: экспорт/импорт счетов Company ## Задача Добавить кнопку "Export Defaults" в форму/список Company, которая выгружает все поля-ссылки на Account (Link to Account) в JSON. При установке на новой базе — проставлять эти счета в Company через setup_wizard_complete. ## Паттерн (уже реализован для Salary Component и Leave Type) - Экспорт: Python `@frappe.whitelist()` функция → возвращает данные → JS скачивает как JSON - JSON хранится в `jey_erp/default_data/company_defaults.json` - Импорт: в `setup_wizard_handler.py` новая функция, вызывается из `setup_wizard_complete` в hooks.py - Account хранится как `account_name` (без суффикса компании), при импорте резолвится через `frappe.db.get_value("Account", {"account_name": ..., "company": company}, "name")` ## Структура приложения - `/home/frappe/frappe-bench/apps/jey_erp/jey_erp/` - `custom/` — Python экспорт-функции (salary_component_export.py, account_export.py, leave_type_export.py) - `public/js/` — JS кнопки (salary_component_list.js, account_list.js, leave_type_list.js) - `default_data/` — JSON файлы (salary_components.json, leave_types.json) - `setup/setup_wizard_handler.py` — импорт при установке - `hooks.py` — регистрация всего ## hooks.py ключевые строки ```python doctype_list_js = { "Currency Exchange": "public/js/currency_exchange_list.js", "Salary Component": "public/js/salary_component_list.js", "Account": "public/js/account_list.js", "Leave Type": "public/js/leave_type_list.js", } setup_wizard_complete = [ "jey_erp.setup.setup_wizard_handler.create_default_salary_components", "jey_erp.setup.setup_wizard_handler.create_default_leave_types", ] ``` ## Git - jey_erp: branch `main`, remote `upstream` - az_locale: branch `develop`, remote `upstream` - Команда пуша: `git push upstream main`