Cant install HR modules

i run through the install of the hr module

$ bench get-app hrms
$ bench --site sitename install-app hrms
bench merge
then it errors out
I am running this with docker compose
please help


Installing hrms...
Setting up Frappe HR...
Installation for Frappe HR app failed due to an error. Please try re-installing the app or report the issue on https://github.com/frappe/hrms/issues/new if not resolved.
An error occurred while installing hrms: Module import failed for Expense Claim Type, the DocType you're trying to open might be deleted.<br> Error: No module named 'frappe.core.doctype.expense_claim_type'
Traceback with variables (most recent call last):
  File "apps/frappe/frappe/commands/site.py", line 444, in install_app
    _install_app(app, verbose=context.verbose, force=force)
      context = {'sites': ['frontend'], 'force': False, 'verbose': False, 'profile': False}
      apps = ('hrms',)
      force = False
      _install_app = <function install_app at 0x794e962c1a80>
      filelock = <function filelock at 0x794e962b2ca0>
      exit_code = 0
      site = 'frontend'
      app = 'hrms'
      err = ImportError("Module import failed for Expense Claim Type, the DocType you're trying to open might be deleted.<br> Error: No module named 'frappe.core.doctype.expense_claim_type'")
  File "apps/frappe/frappe/installer.py", line 311, in install_app
    frappe.get_attr(after_install)()
      name = 'hrms'
      verbose = False
      set_as_patched = True
      force = False
      sync_jobs = <function sync_jobs at 0x794e94d613a0>
      sync_for = <function sync_for at 0x794e94d623e0>
      sync_customizations = <function sync_customizations at 0x794e96253600>
      sync_fixtures = <function sync_fixtures at 0x794e94d625c0>
      app_hooks = {'accounting_dimension_doctypes': ['Expense Claim', 'Expense Claim Detail', 'Expense Taxes and Charges', 'Payroll Entry'], 'advance_payment_payable_doctypes': ['Gratuity', 'Employee Advance'], 'after_app_install': ['hrms.setup.after_app_install'], 'after_install': ['hrms.install.after_install'], 'after_migrate': ['hrms.setup.update_select_perm_after_install'], 'app_description': ['Modern HR and Payroll Software'], 'app_email': ['contact@frappe.io'], 'app_include_css': ['hrms.bundle.css'], 'app_include_js': ['hrms.bundle.js'], 'app_license': ['GNU General Public License (v3)'], 'app_name': ['hrms'], 'app_publisher': ['Frappe Technologies Pvt. Ltd.'], 'app_title': ['Frappe HR'], 'bank_reconciliation_doctypes': ['Expense Claim'], 'before_app_uninstall': ['hrms.setup.before_app_uninstall'], 'before_tests': ['hrms.tests.test_utils.before_tests'], 'before_uninstall': ['hrms.uninstall.before_uninstall'], 'calendars': ['Leave Application'], 'doc_events': {'User': {'validate': ['erpnext.setup.d...
      installed_apps = ['frappe', 'erpnext']
      app = 'frappe/erpnext'
      required_app = 'erpnext'
      after_install = 'hrms.install.after_install'
  File "apps/hrms/hrms/install.py", line 21, in after_install
    raise e
      BUG_REPORT_URL = 'https://github.com/frappe/hrms/issues/new'
  File "apps/hrms/hrms/install.py", line 9, in after_install
    setup()
      BUG_REPORT_URL = 'https://github.com/frappe/hrms/issues/new'
  File "apps/hrms/hrms/setup.py", line 18, in after_install
    make_fixtures()
  File "apps/hrms/hrms/setup.py", line 414, in make_fixtures
    make_records(records)
      records = [{'doctype': 'Expense Claim Type', 'name': 'Calls', 'expense_type': 'Calls'}, {'doctype': 'Expense Claim Type', 'name': 'Food', 'expense_type': 'Food'}, {'doctype': 'Expense Claim Type', 'name': 'Medical', 'expense_type': 'Medical'}, {'doctype': 'Expense Claim Type', 'name': 'Others', 'expense_type': 'Others'}, {'doctype': 'Expense Claim Type', 'name': 'Travel', 'expense_type': 'Travel'}, {'doctype': 'Vehicle Service Item', 'service_item': 'Brake Oil'}, {'doctype': 'Vehicle Service Item', 'service_item': 'Brake Pad'}, {'doctype': 'Vehicle Service Item', 'service_item': 'Clutch Plate'}, {'doctype': 'Vehicle Service Item', 'service_item': 'Engine Oil'}, {'doctype': 'Vehicle Service Item', 'service_item': 'Oil Change'}, {'doctype': 'Vehicle Service Item', 'service_item': 'Wheels'}, {'doctype': 'Leave Type', 'leave_type_name': 'Casual Leave', 'name': 'Casual Leave', 'allow_encashment': 1, 'is_carry_forward': 1, 'max_continuous_days_allowed': '3', 'include_holiday': 1}, {'doctype': 'Leave T...
  File "apps/frappe/frappe/desk/page/setup_wizard/setup_wizard.py", line 409, in make_records
    doc = frappe.new_doc(doctype)
      records = [{'doctype': 'Expense Claim Type', 'name': 'Calls', 'expense_type': 'Calls'}, {'doctype': 'Expense Claim Type', 'name': 'Food', 'expense_type': 'Food'}, {'doctype': 'Expense Claim Type', 'name': 'Medical', 'expense_type': 'Medical'}, {'doctype': 'Expense Claim Type', 'name': 'Others', 'expense_type': 'Others'}, {'doctype': 'Expense Claim Type', 'name': 'Travel', 'expense_type': 'Travel'}, {'doctype': 'Vehicle Service Item', 'service_item': 'Brake Oil'}, {'doctype': 'Vehicle Service Item', 'service_item': 'Brake Pad'}, {'doctype': 'Vehicle Service Item', 'service_item': 'Clutch Plate'}, {'doctype': 'Vehicle Service Item', 'service_item': 'Engine Oil'}, {'doctype': 'Vehicle Service Item', 'service_item': 'Oil Change'}, {'doctype': 'Vehicle Service Item', 'service_item': 'Wheels'}, {'doctype': 'Leave Type', 'leave_type_name': 'Casual Leave', 'name': 'Casual Leave', 'allow_encashment': 1, 'is_carry_forward': 1, 'max_continuous_days_allowed': '3', 'include_holiday': 1}, {'doctype': 'Leave T...
      debug = False
      _dict = <class 'frappe._dict'>
      scrub = <function scrub at 0x794e964d6160>
      record = {'doctype': 'Expense Claim Type', 'name': 'Calls', 'expense_type': 'Calls'}
      doctype = 'Expense Claim Type'
      condition = None
  File "apps/frappe/frappe/__init__.py", line 1143, in new_doc
    new_doc = get_new_doc(doctype, parent_doc, parentfield, as_dict=as_dict)
      doctype = 'Expense Claim Type'
      parent_doc = None
      parentfield = None
      as_dict = False
      kwargs = {}
      get_new_doc = <function get_new_doc at 0x794e92ff0540>
  File "apps/frappe/frappe/model/create_new.py", line 22, in get_new_doc
    frappe.local.new_doc_templates[doctype] = make_new_doc(doctype)
      doctype = 'Expense Claim Type'
      parent_doc = None
      parentfield = None
      as_dict = False
  File "apps/frappe/frappe/model/create_new.py", line 35, in make_new_doc
    doc = frappe.get_doc({"doctype": doctype, "__islocal": 1, "owner": frappe.session.user, "docstatus": 0})
      doctype = 'Expense Claim Type'
  File "apps/frappe/frappe/__init__.py", line 1286, in get_doc
    doc = frappe.model.document.get_doc(*args, **kwargs)
      args = ({'doctype': 'Expense Claim Type', '__islocal': 1, 'owner': 'Administrator', 'docstatus': 0},)
      kwargs = {}
      frappe = <module 'frappe' from 'apps/frappe/frappe/__init__.py'>
  File "apps/frappe/frappe/model/document.py", line 83, in get_doc
    controller = get_controller(doctype)
      args = ({'doctype': 'Expense Claim Type', '__islocal': 1, 'owner': 'Administrator', 'docstatus': 0},)
      kwargs = {'doctype': 'Expense Claim Type', '__islocal': 1, 'owner': 'Administrator', 'docstatus': 0}
      doctype = 'Expense Claim Type'
  File "apps/frappe/frappe/model/base_document.py", line 70, in get_controller
    site_controllers[doctype] = import_controller(doctype)
      doctype = 'Expense Claim Type'
      site_controllers = {'Module Def': <class 'frappe.core.doctype.module_def.module_def.ModuleDef'>, 'DocField': <class 'frappe.core.doctype.docfield.docfield.DocField'>, 'DocPerm': <class 'frappe.core.doctype.docperm.docperm.DocPerm'>, 'DocType Link': <class 'frappe.core.doctype.doctype_link.doctype_link.DocTypeLink'>, 'System Settings': <class 'frappe.core.doctype.system_settings.system_settings.SystemSettings'>, 'Notification Settings': <class 'frappe.desk.doctype.notification_settings.notification_settings.NotificationSettings'>, 'DefaultValue': <class 'frappe.core.doctype.defaultvalue.defaultvalue.DefaultValue'>, 'Payment Reconciliation': <class 'erpnext.accounts.doctype.payment_reconciliation.payment_reconciliation.PaymentReconciliation'>, 'Customize Form': <class 'frappe.custom.doctype.customize_form.customize_form.CustomizeForm'>, 'DocType Action': <class 'frappe.core.doctype.doctype_action.doctype_action.DocTypeAction'>, 'DocType State': <class 'frappe.core.doctype.doctype_state.doctype_state.DocTyp...
  File "apps/frappe/frappe/model/base_document.py", line 95, in import_controller
    module = load_doctype_module(doctype, module_name)
      doctype = 'Expense Claim Type'
      Document = <class 'frappe.model.document.Document'>
      NestedSet = <class 'frappe.utils.nestedset.NestedSet'>
      module_name = 'Core'
      doctype_info = None
      module_path = None
      class_overrides = {'Address': ['erpnext.accounts.custom.address.ERPNextAddress'], 'Employee': ['hrms.overrides.employee_master.EmployeeMaster'], 'Timesheet': ['hrms.overrides.employee_timesheet.EmployeeTimesheet'], 'Payment Entry': ['hrms.overrides.employee_payment_entry.EmployeePaymentEntry'], 'Project': ['hrms.overrides.employee_project.EmployeeProject']}
  File "apps/frappe/frappe/modules/utils.py", line 241, in load_doctype_module
    raise ImportError(msg) from e
      doctype = 'Expense Claim Type'
      module = 'Core'
      prefix = ''
      suffix = ''
      app = 'frappe'
      key = ********
      module_name = 'frappe.core.doctype.expense_claim_type.expense_claim_type'
      msg = "Module import failed for Expense Claim Type, the DocType you're trying to open might be deleted.<br> Error: No module named 'frappe.core.doctype.expense_claim_type'"
builtins.ImportError: Module import failed for Expense Claim Type, the DocType you're trying to open might be deleted.<br> Error: No module named 'frappe.core.doctype.expense_claim_type'

1 Like

this is how i installed erpnext

1 Like

@Eskos

Are you able to solve the issue?

install payments first and be sure using the same branch corresponding to your version

1 Like