Woocommerce integration issue

Hi Folks, Hope you are doing well.
I recently installed ERPNext version 15 and tried to integrate with Woocommerce
Installed Woocommerce Connector

After Installing WooCommerceConnector and restarted ERPNext.


After following Documentation woocommerce_integration Documentation
I don’t see any updates on my ERPNext Dashboard under Home > Integrations > Settings > WooCommerce Settings. Can anyone help me solve this issue? I’m eagerly awaiting your response. Thanks in advance!"

Which connector did you use?
Use the following command WooCommerce config

If you have acess to the server, try

bench migrate

And then,

bench clear-cache

Worked for me.

What is the disadvantage?

While tring to migrate recieving this error

The error message suggests that there’s an issue with importing a function called get_time_zone from the frappe.utils module. This could indicate a problem with the module import or a missing function definition.
here iam attached the full error log for your references

frappe@ip-172-31-23-255:~/frappe-bench$  bench --site test.com migrate
Migrating test.com
Updating DocTypes for frappe        : [========================================] 100%
Updating DocTypes for erpnext       : [========================================] 100%
Updating DocTypes for woocommerceconnector: [============================            ] 71%Queued rebuilding of search index for test.com

Traceback with variables (most recent call last):
  File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
      mod_name = 'frappe.utils.bench_helper'
      alter_argv = True
      mod_spec = ModuleSpec(name='frappe.utils.bench_helper', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7fed0e373640>, origin='/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py')
      code = <code object <module> at 0x7fed0cd35160, file "/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 1>
      main_globals = {'__name__': '__main__', '__doc__': None, '__package__': 'frappe.utils', '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7fed0e373640>, '__spec__': ModuleSpec(name='frappe.utils.bench_helper', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7fed0e373640>, origin='/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py'), '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py', '__cached__': '/home/frappe/frappe-bench/apps/frappe/frappe/utils/__pycache__/bench_helper.cpython-310.pyc', 'importlib': <module 'importlib' from '/usr/lib/python3.10/importlib/__init__.py'>, 'json': <module 'json' from '/usr/lib/python3.10/json/__init__.py'>, 'os': <module 'os' from '/usr/lib/python3.10/os.py'>, 'traceback': <module 'traceback' from '/usr/lib/python3.10/traceback.py'>, 'warnings': <module 'warnings' from '/usr/lib/python3.10/warnings.py'>, 'Path': <cl...
  File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
      code = <code object <module> at 0x7fed0cd35160, file "/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 1>
      run_globals = {'__name__': '__main__', '__doc__': None, '__package__': 'frappe.utils', '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7fed0e373640>, '__spec__': ModuleSpec(name='frappe.utils.bench_helper', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7fed0e373640>, origin='/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py'), '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py', '__cached__': '/home/frappe/frappe-bench/apps/frappe/frappe/utils/__pycache__/bench_helper.cpython-310.pyc', 'importlib': <module 'importlib' from '/usr/lib/python3.10/importlib/__init__.py'>, 'json': <module 'json' from '/usr/lib/python3.10/json/__init__.py'>, 'os': <module 'os' from '/usr/lib/python3.10/os.py'>, 'traceback': <module 'traceback' from '/usr/lib/python3.10/traceback.py'>, 'warnings': <module 'warnings' from '/usr/lib/python3.10/warnings.py'>, 'Path': <cl...
      init_globals = None
      mod_name = '__main__'
      mod_spec = ModuleSpec(name='frappe.utils.bench_helper', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7fed0e373640>, origin='/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py')
      pkg_name = 'frappe.utils'
      script_name = None
      loader = <_frozen_importlib_external.SourceFileLoader object at 0x7fed0e373640>
      fname = '/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py'
      cached = '/home/frappe/frappe-bench/apps/frappe/frappe/utils/__pycache__/bench_helper.cpython-310.pyc'
  File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 114, in <module>
    main()
      ...skipped... 27 vars
  File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", line 20, in main
    click.Group(commands=commands)(prog_name="bench")
      commands = {'frappe': <Group frappe>, 'get-frappe-commands': <Command get-frappe-commands>, 'get-frappe-help': <Command get-frappe-help>}
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
      self = <Group None>
      args = ()
      kwargs = {'prog_name': 'bench'}
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
      self = <Group None>
      args = ['frappe', '--site', 'test.com', 'migrate']
      prog_name = 'bench'
      complete_var = None
      standalone_mode = True
      windows_expand_args = True
      extra = {}
      ctx = <click.core.Context object at 0x7fed0cd0d4b0>
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
      _process_result = <function MultiCommand.invoke.<locals>._process_result at 0x7fed0cd5b0a0>
      args = ['migrate']
      cmd_name = 'frappe'
      cmd = <Group frappe>
      sub_ctx = <click.core.Context object at 0x7fed0cdfd570>
      ctx = <click.core.Context object at 0x7fed0cd0d4b0>
      self = <Group None>
      __class__ = <class 'click.core.MultiCommand'>
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
      _process_result = <function MultiCommand.invoke.<locals>._process_result at 0x7fed0cdfa830>
      args = []
      cmd_name = 'migrate'
      cmd = <Command migrate>
      sub_ctx = <click.core.Context object at 0x7fed0cdfd9c0>
      ctx = <click.core.Context object at 0x7fed0cdfd570>
      self = <Group frappe>
      __class__ = <class 'click.core.MultiCommand'>
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
      self = <Command migrate>
      ctx = <click.core.Context object at 0x7fed0cdfd9c0>
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
      _Context__self = <click.core.Context object at 0x7fed0cdfd9c0>
      _Context__callback = <function migrate at 0x7fed0cd8b130>
      args = ()
      kwargs = {'skip_failing': False, 'skip_search_index': False}
      ctx = <click.core.Context object at 0x7fed0cdfd9c0>
  File "/home/frappe/frappe-bench/env/lib/python3.10/site-packages/click/decorators.py", line 33, in new_func
    return f(get_current_context(), *args, **kwargs)
      args = ()
      kwargs = {'skip_failing': False, 'skip_search_index': False}
      f = <function migrate at 0x7fed0cd8aef0>
  File "/home/frappe/frappe-bench/apps/frappe/frappe/commands/__init__.py", line 29, in _func
    ret = f(frappe._dict(ctx.obj), *args, **kwargs)
      ctx = <click.core.Context object at 0x7fed0cdfd9c0>
      args = ()
      kwargs = {'skip_failing': False, 'skip_search_index': False}
      profile = False
      f = <function migrate at 0x7fed0cd8ae60>
  File "/home/frappe/frappe-bench/apps/frappe/frappe/commands/site.py", line 709, in migrate
    SiteMigration(
      context = {'sites': ['test.com'], 'force': False, 'verbose': False, 'profile': False}
      skip_failing = False
      skip_search_index = False
      activate_by_import = <module 'traceback_with_variables.activate_by_import' from '/home/frappe/frappe-bench/env/lib/python3.10/site-packages/traceback_with_variables/activate_by_import.py'>
      SiteMigration = <class 'frappe.migrate.SiteMigration'>
      site = 'test.com'
  File "/home/frappe/frappe-bench/apps/frappe/frappe/migrate.py", line 186, in run
    self.run_schema_updates()
      self = <frappe.migrate.SiteMigration object at 0x7fed0cdfdae0>
      site = 'test.com'
      filelock = <function filelock at 0x7fed0a79b370>
  File "/home/frappe/frappe-bench/apps/frappe/frappe/migrate.py", line 52, in wrapper
    raise e
      args = (<frappe.migrate.SiteMigration object at 0x7fed0cdfdae0>,)
      kwargs = {}
      method = <function SiteMigration.run_schema_updates at 0x7fed0a79af80>
  File "/home/frappe/frappe-bench/apps/frappe/frappe/migrate.py", line 44, in wrapper
    ret = method(*args, **kwargs)
      args = (<frappe.migrate.SiteMigration object at 0x7fed0cdfdae0>,)
      kwargs = {}
      method = <function SiteMigration.run_schema_updates at 0x7fed0a79af80>
  File "/home/frappe/frappe-bench/apps/frappe/frappe/migrate.py", line 120, in run_schema_updates
    frappe.model.sync.sync_all()
      self = <frappe.migrate.SiteMigration object at 0x7fed0cdfdae0>
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/sync.py", line 43, in sync_all
    sync_for(app, force, reset_permissions=reset_permissions)
      force = 0
      reset_permissions = False
      app = 'woocommerceconnector'
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/sync.py", line 111, in sync_for
    import_file_by_path(
      app_name = 'woocommerceconnector'
      force = 0
      reset_permissions = False
      files = ['/home/frappe/frappe-bench/apps/woocommerceconnector/woocommerceconnector/woocommerceconnector/doctype/item_product_category/item_product_category.json', '/home/frappe/frappe-bench/apps/woocommerceconnector/woocommerceconnector/woocommerceconnector/doctype/woowarehouses/woowarehouses.json', '/home/frappe/frappe-bench/apps/woocommerceconnector/woocommerceconnector/woocommerceconnector/doctype/woocommerce_log/woocommerce_log.json', '/home/frappe/frappe-bench/apps/woocommerceconnector/woocommerceconnector/woocommerceconnector/doctype/woocommerce_tax_rule/woocommerce_tax_rule.json', '/home/frappe/frappe-bench/apps/woocommerceconnector/woocommerceconnector/woocommerceconnector/doctype/woocommerce_tax_account/woocommerce_tax_account.json', '/home/frappe/frappe-bench/apps/woocommerceconnector/woocommerceconnector/woocommerceconnector/doctype/woocommerce_config/woocommerce_config.json', '/home/frappe/frappe-bench/apps/woocommerceconnector/woocommerceconnector/woocommerceconnector/doctype/wooc...
      module_name = 'woocommerceconnector'
      folder = '/home/frappe/frappe-bench/apps/woocommerceconnector/woocommerceconnector/woocommerceconnector'
      l = 7
      i = 5
      doc_path = '/home/frappe/frappe-bench/apps/woocommerceconnector/woocommerceconnector/woocommerceconnector/doctype/woocommerce_config/woocommerce_config.json'
  File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/import_file.py", line 146, in import_file_by_path
    import_doc(
      path = '/home/frappe/frappe-bench/apps/woocommerceconnector/woocommerceconnector/woocommerceconnector/doctype/woocommerce_config/woocommerce_config.json'
      force = 0
      data_import = False
      pre_process = None
      ignore_version = True
      reset_permissions = False
      docs = [{'creation': '2015-05-18 05:21:07.270859', 'doctype': 'DocType', 'document_type': 'System', 'engine': 'InnoDB', 'fields': [{'fieldname': 'status_html', 'fieldtype': 'HTML', 'label': 'status html', 'read_only': 1, 'doctype': 'DocField'}, {'default': '1', 'fieldname': 'enable_woocommerce', 'fieldtype': 'Check', 'label': 'Enable woocommerce', 'doctype': 'DocField'}, {'default': '0', 'description': 'Uncheck to run with self signed certificate', 'fieldname': 'verify_ssl', 'fieldtype': 'Check', 'label': 'Verify SSL', 'doctype': 'DocField'}, {'default': '0', 'fieldname': 'hourly_sync', 'fieldtype': 'Check', 'label': 'Hourly synchronization', 'doctype': 'DocField'}, {'default': 'Public', 'fieldname': 'app_type', 'fieldtype': 'Select', 'hidden': 1, 'in_list_view': 1, 'label': 'App Type', 'options': 'Public\nPrivate', 'reqd': 1, 'doctype': 'DocField'}, {'fieldname': 'column_break_4', 'fieldtype': 'Column Break', 'doctype': 'DocField'}, {'fieldname': 'last_sync_datetime', 'fieldtype': 'Datetime'...
      calculated_hash = '0d5a0992cdeed2f84681ddf6ff5b5e51'
      doc = {'creation': '2015-05-18 05:21:07.270859', 'doctype': 'DocType', 'document_type': 'System', 'engine': 'InnoDB', 'fields': [{'fieldname': 'status_html', 'fieldtype': 'HTML', 'label': 'status html', 'read_only': 1, 'doctype': 'DocField'}, {'default': '1', 'fieldname': 'enable_woocommerce', 'fieldtype': 'Check', 'label': 'Enable woocommerce', 'doctype': 'DocField'}, {'default': '0', 'description': 'Uncheck to run with self signed certificate', 'fieldname': 'verify_ssl', 'fieldtype': 'Check', 'label': 'Verify SSL', 'doctype': 'DocField'}, {'default': '0', 'fieldname': 'hourly_sync', 'fieldtype': 'Check', 'label': 'Hourly synchronization', 'doctype': 'DocField'}, {'default': 'Public', 'fieldname': 'app_type', 'fieldtype': 'Select', 'hidden': 1, 'in_list_view': 1, 'label': 'App Type', 'options': 'Public\nPrivate', 'reqd': 1, 'doctype': 'DocField'}, {'fieldname': 'column_break_4', 'fieldtype': 'Column Break', 'doctype': 'DocField'}, {'fieldname': 'last_sync_datetime', 'fieldtype': 'Datetime',...
      db_modified_timestamp = None
      is_db_timestamp_latest = None
  File "/home/frappe/frappe-bench/apps/frappe/frappe/modules/import_file.py", line 239, in import_doc
    doc.insert()
      docdict = {'creation': '2015-05-18 05:21:07.270859', 'doctype': 'DocType', 'document_type': 'System', 'engine': 'InnoDB', 'fields': [{'fieldname': 'status_html', 'fieldtype': 'HTML', 'label': 'status html', 'read_only': 1, 'doctype': 'DocField'}, {'default': '1', 'fieldname': 'enable_woocommerce', 'fieldtype': 'Check', 'label': 'Enable woocommerce', 'doctype': 'DocField'}, {'default': '0', 'description': 'Uncheck to run with self signed certificate', 'fieldname': 'verify_ssl', 'fieldtype': 'Check', 'label': 'Verify SSL', 'doctype': 'DocField'}, {'default': '0', 'fieldname': 'hourly_sync', 'fieldtype': 'Check', 'label': 'Hourly synchronization', 'doctype': 'DocField'}, {'default': 'Public', 'fieldname': 'app_type', 'fieldtype': 'Select', 'hidden': 1, 'in_list_view': 1, 'label': 'App Type', 'options': 'Public\nPrivate', 'reqd': 1, 'doctype': 'DocField'}, {'fieldname': 'column_break_4', 'fieldtype': 'Column Break', 'doctype': 'DocField'}, {'fieldname': 'last_sync_datetime', 'fieldtype': 'Datetime',...
      data_import = False
      pre_process = None
      ignore_version = True
      reset_permissions = False
      path = '/home/frappe/frappe-bench/apps/woocommerceconnector/woocommerceconnector/woocommerceconnector/doctype/woocommerce_config/woocommerce_config.json'
      controller = <class 'frappe.core.doctype.doctype.doctype.DocType'>
      doc = <DocType: WooCommerce Config>
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 315, in insert
    self.run_post_save_methods()
      self = <DocType: WooCommerce Config>
      ignore_permissions = None
      ignore_links = None
      ignore_if_duplicate = False
      ignore_mandatory = None
      set_name = None
      set_child_names = True
      d = <DocPerm: cb7a404e7f parent=WooCommerce Config>
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1128, in run_post_save_methods
    self.run_method("on_update")
      self = <DocType: WooCommerce Config>
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 962, in run_method
    out = Document.hook(fn)(self, *args, **kwargs)
      self = <DocType: WooCommerce Config>
      args = ()
      kwargs = {}
      fn = <function Document.run_method.<locals>.fn at 0x7fed097651b0>
      method = 'on_update'
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1322, in composer
    return composed(self, method, *args, **kwargs)
      self = <DocType: WooCommerce Config>
      args = ()
      kwargs = {}
      hooks = [<function build_domain_restriced_doctype_cache at 0x7fed0cc5a050>, <function clear_doctype_notifications at 0x7fed0bb7b1c0>, <function process_workflow_actions at 0x7fed095eb0a0>, <function attach_files_to_document at 0x7fed0ca9d7e0>, <function apply at 0x7fed094a20e0>, <function update_due_date at 0x7fed094a2170>, <function apply_permissions_for_non_standard_user_type at 0x7fed094a39a0>]
      method = 'on_update'
      doc_events = {'*': {'on_update': ['frappe.desk.notifications.clear_doctype_notifications', 'frappe.workflow.doctype.workflow_action.workflow_action.process_workflow_actions', 'frappe.core.doctype.file.utils.attach_files_to_document', 'frappe.automation.doctype.assignment_rule.assignment_rule.apply', 'frappe.automation.doctype.assignment_rule.assignment_rule.update_due_date', 'frappe.core.doctype.user_type.user_type.apply_permissions_for_non_standard_user_type'], 'after_rename': ['frappe.desk.notifications.clear_doctype_notifications'], 'on_cancel': ['frappe.desk.notifications.clear_doctype_notifications', 'frappe.workflow.doctype.workflow_action.workflow_action.process_workflow_actions', 'frappe.automation.doctype.assignment_rule.assignment_rule.apply'], 'on_trash': ['frappe.desk.notifications.clear_doctype_notifications', 'frappe.workflow.doctype.workflow_action.workflow_action.process_workflow_actions'], 'on_update_after_submit': ['frappe.workflow.doctype.workflow_action.workflow_action.process_w...
      handler = 'frappe.core.doctype.user_type.user_type.apply_permissions_for_non_standard_user_type'
      composed = <function Document.hook.<locals>.compose.<locals>.runner at 0x7fed097657e0>
      compose = <function Document.hook.<locals>.compose at 0x7fed09765480>
      f = <function Document.run_method.<locals>.fn at 0x7fed097651b0>
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 1304, in runner
    add_to_return_value(self, fn(self, *args, **kwargs))
      self = <DocType: WooCommerce Config>
      method = 'on_update'
      args = ()
      kwargs = {}
      add_to_return_value = <function Document.hook.<locals>.add_to_return_value at 0x7fed09764af0>
      fn = <function Document.run_method.<locals>.fn at 0x7fed097651b0>
      hooks = (<function build_domain_restriced_doctype_cache at 0x7fed0cc5a050>, <function clear_doctype_notifications at 0x7fed0bb7b1c0>, <function process_workflow_actions at 0x7fed095eb0a0>, <function attach_files_to_document at 0x7fed0ca9d7e0>, <function apply at 0x7fed094a20e0>, <function update_due_date at 0x7fed094a2170>, <function apply_permissions_for_non_standard_user_type at 0x7fed094a39a0>)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 959, in fn
    return method_object(*args, **kwargs)
      self = <DocType: WooCommerce Config>
      args = ()
      kwargs = {}
      method_object = <bound method DocType.on_update of <DocType: WooCommerce Config>>
      method = 'on_update'
  File "/home/frappe/frappe-bench/apps/frappe/frappe/core/doctype/doctype/doctype.py", line 530, in on_update
    self.run_module_method("on_doctype_update")
      self = <DocType: WooCommerce Config>
      allow_doctype_export = False

– thanks for your Response and support

hi instead of woocomerce setting in erpnext version 15 i ahve woocomerce config in which i update the api key and secret provided from woocomerce web and

when i click on sync ids to erp it show me empty item but sync suceefully now what step to do that my sales order will sync to erpnext

Hello
Disable the option to synchronize from Woocommerce to ERPNext.
To synchronize the orders and sales orders in the lower part of the page there is the option…