dvdl16 / woocommerce_fusion

WooCommerce connector for ERPNext v15
https://finfoot.tech
Other
17 stars 14 forks source link

sync woocommerce items with erpnext item list #98

Open mecpcanada opened 1 month ago

mecpcanada commented 1 month ago

Is your feature request related to a problem? Please describe.

product from woocommerce stores should be added to erpnext item list, woocommerce connector did this

Describe the solution you'd like

an option to enable product to be listed in item list as well WooCommerce product list

Describe alternatives you've considered

erp next WooCommerce connector already does this

Additional context

No response

dvdl16 commented 1 month ago

@mecpcanada is this what you are referring to? https://woocommerce-fusion-docs.finfoot.tech/features/items.html

mecpcanada commented 1 month ago

so https://github.com/libracore/WooCommerceConnector which i'm assuming this is based on when sync product from woocommerce it also creates them in erpnext Screenshot 2024-07-15 095730

dvdl16 commented 1 month ago

This custom app is not based on the one you linked.

This custom app also creates ERPNext Items for existing WooCommerce Products

mecpcanada commented 1 month ago

ok cause mine shows 27000 items in woocommerce product but none in erpnext items is there a setting i have to turn on ?

dvdl16 commented 1 month ago

Are you using the latest version of the app?

mecpcanada commented 1 month ago

yes

dvdl16 commented 1 month ago

Any error logs? Perhaps also send a screenshot of "WooCommerce Integration Settings"

mecpcanada commented 1 month ago

Screenshot 2024-07-15 143444 Screenshot 2024-07-15 143407

Traceback with variables (most recent call last):
  File "apps/frappe/frappe/app.py", line 114, in application
    response = frappe.api.handle(request)
      request = <Request 'http://erpold.incognitocorp.ca/api/method/frappe.desk.form.load.getdoctype?doctype=Google%20Calendar&with_parent=1&cached_timestamp=&_=1721067034877' [GET]>
      response = None
      rollback = True
      e = AttributeError("module 'pkgutil' has no attribute 'ImpImporter'")
  File "apps/frappe/frappe/api/__init__.py", line 49, in handle
    data = endpoint(**arguments)
      request = <Request 'http://erpold.incognitocorp.ca/api/method/frappe.desk.form.load.getdoctype?doctype=Google%20Calendar&with_parent=1&cached_timestamp=&_=1721067034877' [GET]>
      endpoint = <function handle_rpc_call at 0x755369944900>
      arguments = {'method': 'frappe.desk.form.load.getdoctype'}
  File "apps/frappe/frappe/api/v1.py", line 36, in handle_rpc_call
    return frappe.handler.handle()
      method = 'frappe.desk.form.load.getdoctype'
      frappe = <module 'frappe' from 'apps/frappe/frappe/__init__.py'>
  File "apps/frappe/frappe/handler.py", line 49, in handle
    data = execute_cmd(cmd)
      cmd = 'frappe.desk.form.load.getdoctype'
      data = None
  File "apps/frappe/frappe/handler.py", line 85, in execute_cmd
    return frappe.call(method, **frappe.form_dict)
      cmd = 'frappe.desk.form.load.getdoctype'
      from_async = False
      server_script = None
      method = <function getdoctype at 0x755369579260>
  File "apps/frappe/frappe/__init__.py", line 1768, in call
    return fn(*args, **newargs)
      fn = <function getdoctype at 0x755369579260>
      args = ()
      kwargs = {'doctype': 'Google Calendar', 'with_parent': '1', 'cached_timestamp': '', 'cmd': 'frappe.desk.form.load.getdoctype'}
      newargs = {'doctype': 'Google Calendar', 'with_parent': '1', 'cached_timestamp': ''}
  File "apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
    return func(*args, **kwargs)
      args = ()
      kwargs = {'doctype': 'Google Calendar', 'with_parent': '1', 'cached_timestamp': ''}
      apply_condition = <function whitelist.<locals>.innerfn.<locals>.<lambda> at 0x7553695791c0>
      func = <function getdoctype at 0x755369579120>
  File "apps/frappe/frappe/desk/form/load.py", line 72, in getdoctype
    docs = get_meta_bundle(doctype)
      doctype = 'Google Calendar'
      with_parent = '1'
      cached_timestamp = ''
      docs = []
      parent_dt = ''
  File "apps/frappe/frappe/desk/form/load.py", line 83, in get_meta_bundle
    bundle = [frappe.desk.form.meta.get_meta(doctype)]
      doctype = 'Google Calendar'
  File "apps/frappe/frappe/desk/form/meta.py", line 42, in get_meta
    meta = FormMeta(doctype, cached=False)
      doctype = 'Google Calendar'
      cached = True
      meta = None
  File "apps/frappe/frappe/desk/form/meta.py", line 53, in __init__
    self.load_assets()
      self = <FormMeta: Google Calendar>
      doctype = 'Google Calendar'
      cached = False
  File "apps/frappe/frappe/desk/form/meta.py", line 67, in load_assets
    self.load_templates()
      self = <FormMeta: Google Calendar>
  File "apps/frappe/frappe/desk/form/meta.py", line 248, in load_templates
    module = load_doctype_module(self.name)
      self = <FormMeta: Google Calendar>
  File "apps/frappe/frappe/modules/utils.py", line 250, in load_doctype_module
    doctype_python_modules[key] = frappe.get_module(module_name)
      doctype = 'Google Calendar'
      module = 'Integrations'
      prefix = ''
      suffix = ''
      app = 'frappe'
      key = ********
      module_name = 'frappe.integrations.doctype.google_calendar.google_calendar'
  File "apps/frappe/frappe/__init__.py", line 1476, in get_module
    return importlib.import_module(modulename)
      modulename = 'frappe.integrations.doctype.google_calendar.google_calendar'
  File "/usr/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
      name = 'frappe.integrations.doctype.google_calendar.google_calendar'
      package = None
      level = 0
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
      name = 'frappe.integrations.doctype.google_calendar.google_calendar'
      package = None
      level = 0
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
      name = 'frappe.integrations.doctype.google_calendar.google_calendar'
      import_ = <function _gcd_import at 0x75536c3a40e0>
      module = <exception while printing> Traceback (most recent call last):
          File "env/lib/python3.12/site-packages/traceback_with_variables/core.py", line 222, in _to_cropped_str
            raw = print_(obj)
                  ^^^^^^^^^^^
          File "apps/frappe/frappe/utils/__init__.py", line 328, in dict_printer
            if key in v:
               ^^^^^^^^
        TypeError: argument of type 'object' is not iterable

  File "<frozen importlib._bootstrap>", line 1331, in _find_and_load_unlocked
      name = 'frappe.integrations.doctype.google_calendar.google_calendar'
      import_ = <function _gcd_import at 0x75536c3a40e0>
      path = ['apps/frappe/frappe/integrations/doctype/google_calendar']
      parent = 'frappe.integrations.doctype.google_calendar'
      parent_spec = ModuleSpec(name='frappe.integrations.doctype.google_calendar', loader=<_frozen_importlib_external.SourceFileLoader object at 0x755366e9e180>, origin='apps/frappe/frappe/integrations/doctype/google_calendar/__init__.py', submodule_search_locations=['apps/frappe/frappe/integrations/doctype/google_calendar'])
      parent_module = <module 'frappe.integrations.doctype.google_calendar' from 'apps/frappe/frappe/integrations/doctype/google_calendar/__init__.py'>
      child = 'google_calendar'
      spec = ModuleSpec(name='frappe.integrations.doctype.google_calendar.google_calendar', loader=<_frozen_importlib_external.SourceFileLoader object at 0x755366e9e090>, origin='apps/frappe/frappe/integrations/doctype/google_calendar/google_calendar.py')
  File "<frozen importlib._bootstrap>", line 935, in _load_unlocked
      spec = ModuleSpec(name='frappe.integrations.doctype.google_calendar.google_calendar', loader=<_frozen_importlib_external.SourceFileLoader object at 0x755366e9e090>, origin='apps/frappe/frappe/integrations/doctype/google_calendar/google_calendar.py')
      module = <module 'frappe.integrations.doctype.google_calendar.google_calendar' from 'apps/frappe/frappe/integrations/doctype/google_calendar/google_calendar.py'>
  File "<frozen importlib._bootstrap_external>", line 995, in exec_module
      self = <_frozen_importlib_external.SourceFileLoader object at 0x755366e9e090>
      module = <module 'frappe.integrations.doctype.google_calendar.google_calendar' from 'apps/frappe/frappe/integrations/doctype/google_calendar/google_calendar.py'>
      code = <code object <module> at 0x2a2fd70, file "apps/frappe/frappe/integrations/doctype/google_calendar/google_calendar.py", line 1>
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
      f = <built-in function exec>
      args = (<code object <module> at 0x2a2fd70, file "apps/frappe/frappe/integrations/doctype/google_calendar/google_calendar.py", line 1>, {'__name__': 'frappe.integrations.doctype.google_calendar.google_calendar', '__doc__': None, '__package__': 'frappe.integrations.doctype.google_calendar', '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x755366e9e090>, '__spec__': ModuleSpec(name='frappe.integrations.doctype.google_calendar.google_calendar', loader=<_frozen_importlib_external.SourceFileLoader object at 0x755366e9e090>, origin='apps/frappe/frappe/integrations/doctype/google_calendar/google_calendar.py'), '__file__': 'apps/frappe/frappe/integrations/doctype/google_calendar/google_calendar.py', '__cached__': 'apps/frappe/frappe/integrations/doctype/google_calendar/__pycache__/google_calendar.cpython-312.pyc', '__builtins__': {'__name__': 'builtins', '__doc...
      kwds = {}
  File "apps/frappe/frappe/integrations/doctype/google_calendar/google_calendar.py", line 12, in <module>
    from googleapiclient.discovery import build
      __name__ = 'frappe.integrations.doctype.google_calendar.google_calendar'
      __doc__ = None
      __package__ = 'frappe.integrations.doctype.google_calendar'
      __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x755366e9e090>
      __spec__ = ModuleSpec(name='frappe.integrations.doctype.google_calendar.google_calendar', loader=<_frozen_importlib_external.SourceFileLoader object at 0x755366e9e090>, origin='apps/frappe/frappe/integrations/doctype/google_calendar/google_calendar.py')
      __file__ = 'apps/frappe/frappe/integrations/doctype/google_calendar/google_calendar.py'
      __cached__ = 'apps/frappe/frappe/integrations/doctype/google_calendar/__pycache__/google_calendar.cpython-312.pyc'
      __builtins__ = {'__name__': 'builtins', '__doc__': "Built-in functions, types, exceptions, and other objects.\n\nThis module provides direct access to all 'built-in'\nidentifiers of Python; for example, builtins.len is\nthe full name for the built-in function len().\n\nThis module is not normally accessed explicitly by most\napplications, but can be useful in modules that provide\nobjects with the same name as a built-in value, but in\nwhich the built-in of that name is also needed.", '__package__': '', '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>, origin='built-in'), '__build_class__': <built-in function __build_class__>, '__import__': <built-in function __import__>, 'abs': <built-in function abs>, 'all': <built-in function all>, 'any': <built-in function any>, 'ascii': <built-in function ascii>, 'bin': <built-in function bin>, 'breakpoint': <built-in function breakpoint>, 'callable': <built-in f...
      datetime = <class 'datetime.datetime'>
      timedelta = <class 'datetime.timedelta'>
      quote = <function quote at 0x75536c35c540>
      ZoneInfo = <class 'zoneinfo.ZoneInfo'>
      google = <module 'google' (namespace) from ['env/lib/python3.12/site-packages/google']>
      requests = <module 'requests' from 'env/lib/python3.12/site-packages/requests/__init__.py'>
      parser = <module 'dateutil.parser' from 'env/lib/python3.12/site-packages/dateutil/parser/__init__.py'>
  File "env/lib/python3.12/site-packages/googleapiclient/discovery.py", line 68, in <module>
    from googleapiclient.http import build_http
      __name__ = 'googleapiclient.discovery'
      __doc__ = "Client for discovery based APIs.\n\nA client library for Google's discovery based APIs.\n"
      __package__ = 'googleapiclient'
      __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x755366cb6120>
      __spec__ = ModuleSpec(name='googleapiclient.discovery', loader=<_frozen_importlib_external.SourceFileLoader object at 0x755366cb6120>, origin='env/lib/python3.12/site-packages/googleapiclient/discovery.py')
      __file__ = 'env/lib/python3.12/site-packages/googleapiclient/discovery.py'
      __cached__ = 'env/lib/python3.12/site-packages/googleapiclient/__pycache__/discovery.cpython-312.pyc'
      __builtins__ = {'__name__': 'builtins', '__doc__': "Built-in functions, types, exceptions, and other objects.\n\nThis module provides direct access to all 'built-in'\nidentifiers of Python; for example, builtins.len is\nthe full name for the built-in function len().\n\nThis module is not normally accessed explicitly by most\napplications, but can be useful in modules that provide\nobjects with the same name as a built-in value, but in\nwhich the built-in of that name is also needed.", '__package__': '', '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>, origin='built-in'), '__build_class__': <built-in function __build_class__>, '__import__': <built-in function __import__>, 'abs': <built-in function abs>, 'all': <built-in function all>, 'any': <built-in function any>, 'ascii': <built-in function ascii>, 'bin': <built-in function bin>, 'breakpoint': <built-in function breakpoint>, 'callable': <built-in f...
      absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144)
      six = <module 'six' from 'env/lib/python3.12/site-packages/six.py'>
      zip = <class 'zip'>
      __author__ = 'jcgregorio@google.com (Joe Gregorio)'
      __all__ = ['build', 'build_from_document', 'fix_method_name', 'key2param']
      BytesIO = <class '_io.BytesIO'>
      http_client = <module 'http.client' from '/usr/lib/python3.12/http/client.py'>
      urlencode = <function urlencode at 0x75536bcfbb00>
      urlparse = <function urlparse at 0x75536bcfa3e0>
      urljoin = <function urljoin at 0x75536bcfb060>
      urlunparse = <function urlunparse at 0x75536bcfade0>
      parse_qsl = <function parse_qsl at 0x75536bcfb4c0>
      copy = <module 'copy' from '/usr/lib/python3.12/copy.py'>
      OrderedDict = <class 'collections.OrderedDict'>
      BytesGenerator = <class 'email.generator.BytesGenerator'>
      MIMEMultipart = <class 'email.mime.multipart.MIMEMultipart'>
      MIMENonMultipart = <class 'email.mime.nonmultipart.MIMENonMultipart'>
      json = <module 'json' from '/usr/lib/python3.12/json/__init__.py'>
      keyword = ********
      logging = <module 'logging' from '/usr/lib/python3.12/logging/__init__.py'>
      mimetypes = <module 'mimetypes' from '/usr/lib/python3.12/mimetypes.py'>
      os = <module 'os' (frozen)>
      re = <module 're' from '/usr/lib/python3.12/re/__init__.py'>
      httplib2 = <module 'httplib2' from 'env/lib/python3.12/site-packages/httplib2/__init__.py'>
      uritemplate = <module 'uritemplate' from 'env/lib/python3.12/site-packages/uritemplate/__init__.py'>
      google = <module 'google' (namespace) from ['env/lib/python3.12/site-packages/google']>
      mtls = <module 'google.auth.transport.mtls' from 'env/lib/python3.12/site-packages/google/auth/transport/mtls.py'>
      MutualTLSChannelError = <class 'google.auth.exceptions.MutualTLSChannelError'>
      google_auth_httplib2 = <module 'google_auth_httplib2' from 'env/lib/python3.12/site-packages/google_auth_httplib2.py'>
      _auth = <module 'googleapiclient._auth' from 'env/lib/python3.12/site-packages/googleapiclient/_auth.py'>
      mimeparse = <module 'googleapiclient.mimeparse' from 'env/lib/python3.12/site-packages/googleapiclient/mimeparse.py'>
      HttpError = <class 'googleapiclient.errors.HttpError'>
      InvalidJsonError = <class 'googleapiclient.errors.InvalidJsonError'>
      MediaUploadSizeError = <class 'googleapiclient.errors.MediaUploadSizeError'>
      UnacceptableMimeTypeError = <class 'googleapiclient.errors.UnacceptableMimeTypeError'>
      UnknownApiNameOrVersion = <class 'googleapiclient.errors.UnknownApiNameOrVersion'>
      UnknownFileType = <class 'googleapiclient.errors.UnknownFileType'>
  File "env/lib/python3.12/site-packages/googleapiclient/http.py", line 64, in <module>
    from googleapiclient.model import JsonModel
      __name__ = 'googleapiclient.http'
      __doc__ = 'Classes to encapsulate a single HTTP request.\n\nThe classes implement a command pattern, with every\nobject supporting an execute() method that does the\nactual HTTP request.\n'
      __package__ = 'googleapiclient'
      __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x755366993a40>
      __spec__ = ModuleSpec(name='googleapiclient.http', loader=<_frozen_importlib_external.SourceFileLoader object at 0x755366993a40>, origin='env/lib/python3.12/site-packages/googleapiclient/http.py')
      __file__ = 'env/lib/python3.12/site-packages/googleapiclient/http.py'
      __cached__ = 'env/lib/python3.12/site-packages/googleapiclient/__pycache__/http.cpython-312.pyc'
      __builtins__ = {'__name__': 'builtins', '__doc__': "Built-in functions, types, exceptions, and other objects.\n\nThis module provides direct access to all 'built-in'\nidentifiers of Python; for example, builtins.len is\nthe full name for the built-in function len().\n\nThis module is not normally accessed explicitly by most\napplications, but can be useful in modules that provide\nobjects with the same name as a built-in value, but in\nwhich the built-in of that name is also needed.", '__package__': '', '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>, origin='built-in'), '__build_class__': <built-in function __build_class__>, '__import__': <built-in function __import__>, 'abs': <built-in function abs>, 'all': <built-in function all>, 'any': <built-in function any>, 'ascii': <built-in function ascii>, 'bin': <built-in function bin>, 'breakpoint': <built-in function breakpoint>, 'callable': <built-in f...
      absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144)
      six = <module 'six' from 'env/lib/python3.12/site-packages/six.py'>
      http_client = <module 'http.client' from '/usr/lib/python3.12/http/client.py'>
      range = <class 'range'>
      __author__ = 'jcgregorio@google.com (Joe Gregorio)'
      BytesIO = <class '_io.BytesIO'>
      StringIO = <class '_io.StringIO'>
      urlparse = <function urlparse at 0x75536bcfa3e0>
      urlunparse = <function urlunparse at 0x75536bcfade0>
      quote = <function quote at 0x75536c35c540>
      unquote = <function unquote at 0x75536bcfb380>
      copy = <module 'copy' from '/usr/lib/python3.12/copy.py'>
      httplib2 = <module 'httplib2' from 'env/lib/python3.12/site-packages/httplib2/__init__.py'>
      json = <module 'json' from '/usr/lib/python3.12/json/__init__.py'>
      logging = <module 'logging' from '/usr/lib/python3.12/logging/__init__.py'>
      mimetypes = <module 'mimetypes' from '/usr/lib/python3.12/mimetypes.py'>
      os = <module 'os' (frozen)>
      random = <module 'random' from '/usr/lib/python3.12/random.py'>
      socket = <module 'socket' from '/usr/lib/python3.12/socket.py'>
      time = <module 'time' (built-in)>
      uuid = <module 'uuid' from '/usr/lib/python3.12/uuid.py'>
      ssl = <module 'ssl' from '/usr/lib/python3.12/ssl.py'>
      _ssl_SSLError = <class 'ssl.SSLError'>
      Generator = <class 'email.generator.Generator'>
      MIMEMultipart = <class 'email.mime.multipart.MIMEMultipart'>
      MIMENonMultipart = <class 'email.mime.nonmultipart.MIMENonMultipart'>
      FeedParser = <class 'email.feedparser.FeedParser'>
      util = <module 'googleapiclient._helpers' from 'env/lib/python3.12/site-packages/googleapiclient/_helpers.py'>
      _auth = <module 'googleapiclient._auth' from 'env/lib/python3.12/site-packages/googleapiclient/_auth.py'>
      BatchError = <class 'googleapiclient.errors.BatchError'>
      HttpError = <class 'googleapiclient.errors.HttpError'>
      InvalidChunkSizeError = <class 'googleapiclient.errors.InvalidChunkSizeError'>
      ResumableUploadError = <class 'googleapiclient.errors.ResumableUploadError'>
      UnexpectedBodyError = <class 'googleapiclient.errors.UnexpectedBodyError'>
      UnexpectedMethodError = <class 'googleapiclient.errors.UnexpectedMethodError'>
  File "env/lib/python3.12/site-packages/googleapiclient/model.py", line 30, in <module>
    import pkg_resources
      __name__ = 'googleapiclient.model'
      __doc__ = 'Model objects for requests and responses.\n\nEach API may support one or more serializations, such\nas JSON, Atom, etc. The model classes are responsible\nfor converting between the wire format and the Python\nobject representation.\n'
      __package__ = 'googleapiclient'
      __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7553669de120>
      __spec__ = ModuleSpec(name='googleapiclient.model', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7553669de120>, origin='env/lib/python3.12/site-packages/googleapiclient/model.py')
      __file__ = 'env/lib/python3.12/site-packages/googleapiclient/model.py'
      __cached__ = 'env/lib/python3.12/site-packages/googleapiclient/__pycache__/model.cpython-312.pyc'
      __builtins__ = {'__name__': 'builtins', '__doc__': "Built-in functions, types, exceptions, and other objects.\n\nThis module provides direct access to all 'built-in'\nidentifiers of Python; for example, builtins.len is\nthe full name for the built-in function len().\n\nThis module is not normally accessed explicitly by most\napplications, but can be useful in modules that provide\nobjects with the same name as a built-in value, but in\nwhich the built-in of that name is also needed.", '__package__': '', '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>, origin='built-in'), '__build_class__': <built-in function __build_class__>, '__import__': <built-in function __import__>, 'abs': <built-in function abs>, 'all': <built-in function all>, 'any': <built-in function any>, 'ascii': <built-in function ascii>, 'bin': <built-in function bin>, 'breakpoint': <built-in function breakpoint>, 'callable': <built-in f...
      absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0), 262144)
      six = <module 'six' from 'env/lib/python3.12/site-packages/six.py'>
      __author__ = 'jcgregorio@google.com (Joe Gregorio)'
      json = <module 'json' from '/usr/lib/python3.12/json/__init__.py'>
      logging = <module 'logging' from '/usr/lib/python3.12/logging/__init__.py'>
      platform = <module 'platform' from '/usr/lib/python3.12/platform.py'>
  File "env/lib/python3.12/site-packages/pkg_resources/__init__.py", line 2191, in <module>
    register_finder(pkgutil.ImpImporter, find_on_path)
      __name__ = 'pkg_resources'
      __doc__ = '\nPackage resource API\n--------------------\n\nA resource is a logical file contained within a package, or a logical\nsubdirectory thereof.  The package resource API expects resource names\nto have their path parts separated with ``/``, *not* whatever the local\npath separator is.  Do not use os.path operations to manipulate resource\nnames being passed into the API.\n\nThe package resource API is designed to work with normal filesystem packages,\n.egg files, and unpacked .egg files.  It can also work in a limited way with\n.zip files and with custom PEP 302 loaders that support the ``get_data()``\nmethod.\n'
      __package__ = 'pkg_resources'
      __loader__ = <_frozen_importlib_external.SourceFileLoader object at 0x7553669deb10>
      __spec__ = ModuleSpec(name='pkg_resources', loader=<_frozen_importlib_external.SourceFileLoader object at 0x7553669deb10>, origin='env/lib/python3.12/site-packages/pkg_resources/__init__.py', submodule_search_locations=['env/lib/python3.12/site-packages/pkg_resources'])
      __path__ = ['env/lib/python3.12/site-packages/pkg_resources']
      __file__ = 'env/lib/python3.12/site-packages/pkg_resources/__init__.py'
      __cached__ = 'env/lib/python3.12/site-packages/pkg_resources/__pycache__/__init__.cpython-312.pyc'
      __builtins__ = {'__name__': 'builtins', '__doc__': "Built-in functions, types, exceptions, and other objects.\n\nThis module provides direct access to all 'built-in'\nidentifiers of Python; for example, builtins.len is\nthe full name for the built-in function len().\n\nThis module is not normally accessed explicitly by most\napplications, but can be useful in modules that provide\nobjects with the same name as a built-in value, but in\nwhich the built-in of that name is also needed.", '__package__': '', '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': ModuleSpec(name='builtins', loader=<class '_frozen_importlib.BuiltinImporter'>, origin='built-in'), '__build_class__': <built-in function __build_class__>, '__import__': <built-in function __import__>, 'abs': <built-in function abs>, 'all': <built-in function all>, 'any': <built-in function any>, 'ascii': <built-in function ascii>, 'bin': <built-in function bin>, 'breakpoint': <built-in function breakpoint>, 'callable': <built-in f...
      sys = <module 'sys' (built-in)>
      os = <module 'os' (frozen)>
      io = <module 'io' (frozen)>
      time = <module 'time' (built-in)>
      re = <module 're' from '/usr/lib/python3.12/re/__init__.py'>
      types = <module 'types' from '/usr/lib/python3.12/types.py'>
      zipfile = <module 'zipfile' from '/usr/lib/python3.12/zipfile/__init__.py'>
      zipimport = <module 'zipimport' (frozen)>
      warnings = <module 'warnings' from '/usr/lib/python3.12/warnings.py'>
      stat = <module 'stat' (frozen)>
      functools = <module 'functools' from '/usr/lib/python3.12/functools.py'>
      pkgutil = <module 'pkgutil' from '/usr/lib/python3.12/pkgutil.py'>
      operator = <module 'operator' from '/usr/lib/python3.12/operator.py'>
      platform = <module 'platform' from '/usr/lib/python3.12/platform.py'>
      collections = <module 'collections' from '/usr/lib/python3.12/collections/__init__.py'>
      plistlib = <module 'plistlib' from '/usr/lib/python3.12/plistlib.py'>
      email = <module 'email' from '/usr/lib/python3.12/email/__init__.py'>
      errno = <module 'errno' (built-in)>
      tempfile = <module 'tempfile' from '/usr/lib/python3.12/tempfile.py'>
      textwrap = <module 'textwrap' from '/usr/lib/python3.12/textwrap.py'>
      itertools = <module 'itertools' (built-in)>
      inspect = <module 'inspect' from '/usr/lib/python3.12/inspect.py'>
      ntpath = <module 'ntpath' (frozen)>
      posixpath = <module 'posixpath' (frozen)>
      importlib = <module 'importlib' from '/usr/lib/python3.12/importlib/__init__.py'>
      get_importer = <function get_importer at 0x75536aec45e0>
      _imp = <module '_imp' (built-in)>
      utime = <built-in function utime>
      mkdir = <built-in function mkdir>
      rename = <built-in function rename>
      unlink = <built-in function unlink>
      WRITE_SUPPORT = True
      os_open = <built-in function open>
      isdir = <function isdir at 0x75536bed42c0>
      split = <function split at 0x75536bed4b80>
      importlib_machinery = <module 'importlib.machinery' (frozen)>
      extern = <module 'pkg_resources.extern' from 'env/lib/python3.12/site-packages/pkg_resources/extern/__init__.py'>
      _vendor = <module 'pkg_resources._vendor' from 'env/lib/python3.12/site-packages/pkg_resources/_vendor/__init__.py'>
      yield_lines = <function yield_lines at 0x75536689ba60>
      drop_comment = <function drop_comment at 0x75536689bba0>
      join_continuation = <function join_continuation at 0x75536689bce0>
      appdirs = <module 'pkg_resources.extern.appdirs' (<pkg_resources.extern.VendorImporter object at 0x7553668429f0>)>
      packaging = <module 'pkg_resources.extern.packaging' (<pkg_resources.extern.VendorImporter object at 0x7553668429f0>)>
      require = None
      working_set = None
      add_activation_listener = None
      resources_stream = None
      cleanup_resources = None
      resource_dir = None
      resource_stream = None
      set_extraction_path = None
      resource_isdir = None
      resource_string = None
      iter_entry_points = None
      resource_listdir = None
      resource_filename = None
      resource_exists = None
      _distribution_finders = {<class 'zipimport.zipimporter'>: <function find_eggs_in_zip at 0x755366700540>, <class 'object'>: <function find_nothing at 0x755366700680>}
      _namespace_handlers = None
      _namespace_packages = None
      PEP440Warning = <class 'pkg_resources.PEP440Warning'>
      parse_version = <function parse_version at 0x75536680e340>
      _state_vars = {'_distribution_finders': 'dict'}
      _declare_state = <function _declare_state at 0x7553666ad580>
      __getstate__ = <function __getstate__ at 0x7553666adbc0>
      __setstate__ = <function __setstate__ at 0x7553666adc60>
      _sget_dict = <function _sget_dict at 0x7553666add00>
      _sset_dict = <function _sset_dict at 0x7553666adda0>
      _sget_object = <function _sget_object at 0x7553666ade40>
      _sset_object = <function _sset_object at 0x7553666adee0>
      _sget_none = <function <lambda> at 0x7553666adf80>
      _sset_none = <function <lambda> at 0x7553666adf80>
      get_supported_platform = <function get_supported_platform at 0x7553666ae020>
      __all__ = ['require', 'run_script', 'get_provider', 'get_distribution', 'load_entry_point', 'get_entry_map', 'get_entry_info', 'iter_entry_points', 'resource_string', 'resource_stream', 'resource_filename', 'resource_listdir', 'resource_exists', 'resource_isdir', 'declare_namespace', 'working_set', 'add_activation_listener', 'find_distributions', 'set_extraction_path', 'cleanup_resources', 'get_default_cache', 'Environment', 'WorkingSet', 'ResourceManager', 'Distribution', 'Requirement', 'EntryPoint', 'ResolutionError', 'VersionConflict', 'DistributionNotFound', 'UnknownExtra', 'ExtractionError', 'PEP440Warning', 'parse_requirements', 'parse_version', 'safe_name', 'safe_version', 'get_platform', 'compatible_platforms', 'yield_lines', 'split_sections', 'safe_extra', 'to_filename', 'invalid_marker', 'evaluate_marker', 'ensure_directory', 'normalize_path', 'EGG_DIST', 'BINARY_DIST', 'SOURCE_DIST', 'CHECKOUT_DIST', 'DEVELOP_DIST', 'IMetadataProvider', 'IResourceProvider', 'FileMetadata', 'PathMetada...
      ResolutionError = <class 'pkg_resources.ResolutionError'>
      VersionConflict = <class 'pkg_resources.VersionConflict'>
      ContextualVersionConflict = <class 'pkg_resources.ContextualVersionConflict'>
      DistributionNotFound = <class 'pkg_resources.DistributionNotFound'>
      UnknownExtra = <class 'pkg_resources.UnknownExtra'>
      _provider_factories = {<class 'object'>: <class 'pkg_resources.NullProvider'>, <class '_frozen_importlib_external.SourceFileLoader'>: <class 'pkg_resources.DefaultProvider'>, <class '_frozen_importlib_external.SourcelessFileLoader'>: <class 'pkg_resources.DefaultProvider'>, <class 'zipimport.zipimporter'>: <class 'pkg_resources.ZipProvider'>}
      PY_MAJOR = '3.12'
      EGG_DIST = 3
      BINARY_DIST = 2
      SOURCE_DIST = 1
      CHECKOUT_DIST = 0
      DEVELOP_DIST = -1
      register_loader_type = <function register_loader_type at 0x7553666ae0c0>
      get_provider = <function get_provider at 0x7553666ae980>
      _macos_vers = <function _macos_vers at 0x7553666aea20>
      _macos_arch = <function _macos_arch at 0x7553666aeac0>
      get_build_platform = <function get_build_platform at 0x7553666aeb60>
      macosVersionString = re.compile('macosx-(\\d+)\\.(\\d+)-(.*)')
      darwinVersionString = re.compile('darwin-(\\d+)\\.(\\d+)\\.(\\d+)-(.*)')
      get_platform = <function get_build_platform at 0x7553666aeb60>
      compatible_platforms = <function compatible_platforms at 0x7553666aec00>
      run_script = <function run_script at 0x7553666aeca0>
      run_main = <function run_script at 0x7553666aeca0>
      get_distribution = <function get_distribution at 0x7553666aed40>
      load_entry_point = <function load_entry_point at 0x7553666aede0>
      get_entry_map = <function get_entry_map at 0x7553666aee80>
      get_entry_info = <function get_entry_info at 0x7553666aef20>
      IMetadataProvider = <class 'pkg_resources.IMetadataProvider'>
      IResourceProvider = <class 'pkg_resources.IResourceProvider'>
      WorkingSet = <class 'pkg_resources.WorkingSet'>
      _ReqExtras = <class 'pkg_resources._ReqExtras'>
      Environment = <class 'pkg_resources.Environment'>
      AvailableDistributions = <class 'pkg_resources.Environment'>
      ExtractionError = <class 'pkg_resources.ExtractionError'>
      ResourceManager = <class 'pkg_resources.ResourceManager'>
      get_default_cache = <function get_default_cache at 0x7553666aefc0>
      safe_name = <function safe_name at 0x7553666f9300>
      safe_version = <function safe_version at 0x7553666f93a0>
      safe_extra = <function safe_extra at 0x7553666f9440>
      to_filename = <function to_filename at 0x7553666f94e0>
      invalid_marker = <function invalid_marker at 0x7553666f9580>
      evaluate_marker = <function evaluate_marker at 0x7553666f9620>
      NullProvider = <class 'pkg_resources.NullProvider'>
      _parents = <function _parents at 0x7553666fa3e0>
      EggProvider = <class 'pkg_resources.EggProvider'>
      DefaultProvider = <class 'pkg_resources.DefaultProvider'>
      EmptyProvider = <class 'pkg_resources.EmptyProvider'>
      empty_provider = <pkg_resources.EmptyProvider object at 0x7553666a6d50>
      ZipManifests = <class 'pkg_resources.ZipManifests'>
      MemoizedZipManifests = <class 'pkg_resources.MemoizedZipManifests'>
      ZipProvider = <class 'pkg_resources.ZipProvider'>
      FileMetadata = <class 'pkg_resources.FileMetadata'>
      PathMetadata = <class 'pkg_resources.PathMetadata'>
      EggMetadata = <class 'pkg_resources.EggMetadata'>
      register_finder = <function register_finder at 0x7553666fa480>
      find_distributions = <function find_distributions at 0x7553667004a0>
      find_eggs_in_zip = <function find_eggs_in_zip at 0x755366700540>
      find_nothing = <function find_nothing at 0x755366700680>
      _by_version_descending = <function _by_version_descending at 0x755366700720>
      find_on_path = <function find_on_path at 0x7553667007c0>
      dist_factory = <function dist_factory at 0x755366700860>
      NoDists = <class 'pkg_resources.NoDists'>
      safe_listdir = <function safe_listdir at 0x755366700900>
      distributions_from_metadata = <function distributions_from_metadata at 0x755366700ae0>
      non_empty_lines = <function non_empty_lines at 0x755366700b80>
      resolve_egg_link = <function resolve_egg_link at 0x755366700c20>
builtins.AttributeError: module 'pkgutil' has no attribute 'ImpImporter'
mecpcanada commented 1 month ago

WhatsApp Image 2024-07-15 at 14 38 01

mecpcanada commented 4 weeks ago

ok update on this, on a fresh install it works if i only add a single server, if i add a second server that has the same sku it gives errors

dvdl16 commented 4 weeks ago

Please send the errors you are referring to, as well as a screenshot of the WooCommerce tab on the relevant Item. If you don't want to publish it here, you can send it to dirk [at] finfoot.tech