refactor: department creation (#31548)
- all department creation always fails after first company, this is
handled in exception handling code but better to not attempt this in
first place.
- move department creation to company.py this has nothing to do with
setup and previous function signature made no sense.
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index 9ffd6df..bffa829 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -10,8 +10,9 @@
from frappe.cache_manager import clear_defaults_cache
from frappe.contacts.address_and_contact import load_address_and_contact
from frappe.custom.doctype.property_setter.property_setter import make_property_setter
+from frappe.desk.page.setup_wizard.setup_wizard import make_records
from frappe.utils import cint, formatdate, get_timestamp, today
-from frappe.utils.nestedset import NestedSet
+from frappe.utils.nestedset import NestedSet, rebuild_tree
from erpnext.accounts.doctype.account.account import get_account_currency
from erpnext.setup.setup_wizard.operations.taxes_setup import setup_taxes_and_charges
@@ -150,9 +151,7 @@
self.create_default_tax_template()
if not frappe.db.get_value("Department", {"company": self.name}):
- from erpnext.setup.setup_wizard.operations.install_fixtures import install_post_company_fixtures
-
- install_post_company_fixtures(frappe._dict({"company_name": self.name}))
+ self.create_default_departments()
if not frappe.local.flags.ignore_chart_of_accounts:
self.set_default_accounts()
@@ -224,6 +223,104 @@
),
)
+ def create_default_departments(self):
+ records = [
+ # Department
+ {
+ "doctype": "Department",
+ "department_name": _("All Departments"),
+ "is_group": 1,
+ "parent_department": "",
+ "__condition": lambda: not frappe.db.exists("Department", _("All Departments")),
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Accounts"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Marketing"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Sales"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Purchase"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Operations"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Production"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Dispatch"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Customer Service"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Human Resources"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Management"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Quality Management"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Research & Development"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ {
+ "doctype": "Department",
+ "department_name": _("Legal"),
+ "parent_department": _("All Departments"),
+ "company": self.name,
+ },
+ ]
+
+ # Make root department with NSM updation
+ make_records(records[:1])
+
+ frappe.local.flags.ignore_update_nsm = True
+ make_records(records)
+ frappe.local.flags.ignore_update_nsm = False
+ rebuild_tree("Department", "parent_department")
+
def validate_coa_input(self):
if self.create_chart_of_accounts_based_on == "Existing Company":
self.chart_of_accounts = None
diff --git a/erpnext/setup/setup_wizard/operations/install_fixtures.py b/erpnext/setup/setup_wizard/operations/install_fixtures.py
index 4235e1f..0d329ba 100644
--- a/erpnext/setup/setup_wizard/operations/install_fixtures.py
+++ b/erpnext/setup/setup_wizard/operations/install_fixtures.py
@@ -12,7 +12,6 @@
)
from frappe.desk.page.setup_wizard.setup_wizard import make_records
from frappe.utils import cstr, getdate
-from frappe.utils.nestedset import rebuild_tree
from erpnext.accounts.doctype.account.account import RootNotEditable
from erpnext.regional.address_template.setup import set_up_address_templates
@@ -656,104 +655,6 @@
make_records(records)
-def install_post_company_fixtures(args=None):
- records = [
- # Department
- {
- "doctype": "Department",
- "department_name": _("All Departments"),
- "is_group": 1,
- "parent_department": "",
- },
- {
- "doctype": "Department",
- "department_name": _("Accounts"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- {
- "doctype": "Department",
- "department_name": _("Marketing"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- {
- "doctype": "Department",
- "department_name": _("Sales"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- {
- "doctype": "Department",
- "department_name": _("Purchase"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- {
- "doctype": "Department",
- "department_name": _("Operations"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- {
- "doctype": "Department",
- "department_name": _("Production"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- {
- "doctype": "Department",
- "department_name": _("Dispatch"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- {
- "doctype": "Department",
- "department_name": _("Customer Service"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- {
- "doctype": "Department",
- "department_name": _("Human Resources"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- {
- "doctype": "Department",
- "department_name": _("Management"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- {
- "doctype": "Department",
- "department_name": _("Quality Management"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- {
- "doctype": "Department",
- "department_name": _("Research & Development"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- {
- "doctype": "Department",
- "department_name": _("Legal"),
- "parent_department": _("All Departments"),
- "company": args.company_name,
- },
- ]
-
- # Make root department with NSM updation
- make_records(records[:1])
-
- frappe.local.flags.ignore_update_nsm = True
- make_records(records[1:])
- frappe.local.flags.ignore_update_nsm = False
- rebuild_tree("Department", "parent_department")
-
-
def install_defaults(args=None):
records = [
# Price Lists