jey_erp/TASK_CONTEXT.md

39 lines
2.2 KiB
Markdown

# Следующая задача: экспорт/импорт счетов 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`