frappe / hrms

Open Source HR and Payroll Software
https://frappe.io/hr
GNU General Public License v3.0
1.43k stars 741 forks source link

An error occurred while installing hrms #1639

Open BullsDev opened 7 months ago

BullsDev commented 7 months ago

Information about bug

I have installed ERPNext on Docker (Windows) and its running perfectly well but when I try to install HRMS I get the following error and the entire ERPNext App does not work again untill I reintsall ERPNext. I have tried the approach on github several times but still same. need help.

Module

HR

Version

Frapper HR Version 15

Installation method

docker

Relevant log output / Stack trace / Full Error Message.

$ bench --site sample.site install-app hrms
App erpnext already installed

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': ['sample.site'], 'force': False, 'verbose': False, 'profile': False}
      apps = ('hrms',)
      force = False
      _install_app = <function install_app at 0x7f2264ca9b20>
      filelock = <function filelock at 0x7f2264c9ad40>
      exit_code = 0
      site = 'sample.site'
      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 0x7f22637514e0>
      sync_for = <function sync_for at 0x7f2263752520>
      sync_customizations = <function sync_customizations at 0x7f2264c436a0>
      sync_fixtures = <function sync_fixtures at 0x7f2263752700>
      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 17, in after_install
    make_fixtures()
  File "apps/hrms/hrms/setup.py", line 416, 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 0x7f2264ec6160>
      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 0x7f22619c4860>
  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'

Code of Conduct

BLenich-threadb commented 7 months ago

Same thing happened to me, any ideas on how to fix?

Bradeskojest commented 7 months ago

Me as well.

anoninthekop commented 7 months ago

Is there any fix for this?

ruchamahabal commented 7 months ago

What versions are you using for Frappe & ERPNext?

BLenich-threadb commented 7 months ago

Erpnext: 15.18.1 frappe:15.19.0, I have a new issue where when I download hrms it finishes properly but it just breaks the server until I uninstall it. I got a server error when i try and connect.

itdkr commented 7 months ago

same issue here.

I use ERPNext: v15.19.1 and Frappe Framework: v15.20.0

But i have Ubuntu 22.04.4 LTS Server and no Docker

I can´t use ERPNext and can´t login to the Server after i install HRMS image

tanzeelrana commented 5 months ago

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 445, in install_app
    _install_app(app, verbose=context.verbose, force=force)
      context = {'sites': ['erpnext'], 'force': False, 'verbose': False, 'profile': False}
      apps = ('hrms',)
      force = False
      _install_app = <function install_app at 0x7f974fd728c0>
      filelock = <function filelock at 0x7f974fd72560>
      exit_code = 0
      site = 'erpnext'
      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 0x7f974ecd4e50>
      sync_for = <function sync_for at 0x7f974ecd5870>
      sync_customizations = <function sync_customizations at 0x7f974fd20e50>
      sync_fixtures = <function sync_fixtures at 0x7f974ecd5ab0>
      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 412, 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 0x7f974ff06dd0>
      record = {'doctype': 'Expense Claim Type', 'name': 'Calls', 'expense_type': 'Calls'}
      doctype = 'Expense Claim Type'
      condition = None
  File "apps/frappe/frappe/__init__.py", line 1190, 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 0x7f974cc77a30>
  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 1333, 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 254, 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'
bitnami@debian:/opt/bitnami/erpnext/frappe-bench$ ```
yashjawale commented 4 months ago

Same issue. Ubuntu 22.04 LTS with Docker

MatthK commented 2 months ago

I had the same issue on a non-docker installation. I did get it installed with the following:

$ bench get-app hrms
$ bench --site sitename install-app hrms
# The error with the expense type doctype showed up
# So I uninstalled the app from the site
$ bench --site sitename uninstall-app hrms
# Install the app again, and it worked flawlessly
$ bench --site sitename install-app hrms
$ bench restart
devpladinc commented 2 months ago

I had the same issue on a non-docker installation. I did get it installed with the following:

$ bench get-app hrms
$ bench --site sitename install-app hrms
# The error with the expense type doctype showed up
# So I uninstalled the app from the site
$ bench --site sitename uninstall-app hrms
# Install the app again, and it worked flawlessly
$ bench --site sitename install-app hrms
$ bench restart

No idea how and why but this also fixed my missing module issue. 🙇‍♀️