feat(setup): enable default settings checkboxes on wizard complete

Add set_default_settings() to the setup_wizard_complete hook so fresh
installs get sane defaults after company creation:
- Global Defaults.disable_rounded_total = 1
- Accounts Settings.delete_linked_ledger_entries = 1

Uses get_single().save() (not db.set_value) so each doctype's
on_update/validate side effects run — disable_rounded_total in particular
is read via frappe.db.get_default, only populated in on_update. Idempotent.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ali 2026-06-11 12:36:12 +00:00
parent 41ebed0c79
commit 4e8a151851
2 changed files with 23 additions and 0 deletions

View File

@ -124,6 +124,7 @@ setup_wizard_complete = [
"jey_erp.setup.setup_wizard_handler.create_default_salary_components",
"jey_erp.setup.setup_wizard_handler.create_default_leave_types",
"jey_erp.setup.setup_wizard_handler.create_default_company_accounts",
"jey_erp.setup.setup_wizard_handler.set_default_settings",
"jey_erp.custom.rename_default_groups.rename_default_groups",
]

View File

@ -269,6 +269,28 @@ def create_default_company_accounts(args):
frappe.db.commit()
def set_default_settings(args=None):
"""Дефолтные галочки настроек после завершения визарда.
Идём через get_single().save(), а НЕ db.set_value: у этих настроек есть
побочные действия в on_update/validate, без которых галочка не "сработает".
Идемпотентно если уже включено, не трогаем.
"""
# Global Defaults.disable_rounded_total читается через frappe.db.get_default,
# который заполняется только в on_update (set_default + clear_cache).
gd = frappe.get_single("Global Defaults")
if not gd.disable_rounded_total:
gd.disable_rounded_total = 1
gd.save(ignore_permissions=True)
acc = frappe.get_single("Accounts Settings")
if not acc.delete_linked_ledger_entries:
acc.delete_linked_ledger_entries = 1
acc.save(ignore_permissions=True)
frappe.db.commit()
def sync_company_defaults():
"""Синхронизирует default-счета на ВСЕХ Company с default_data/company_defaults.json.
Для каждого поля из JSON ищет Account по account_number в каждой компании