frappe / ecommerce_integrations

Ecommerce integrations for ERPNext
https://frappecloud.com/marketplace/apps/ecommerce_integrations
GNU General Public License v3.0
110 stars 144 forks source link

Syncing deleted product from Shopify #337

Open Igniteou5 opened 1 month ago

Igniteou5 commented 1 month ago

Is it possible to sync an order which contains a deleted product to ERPNext?

It seems like that's not the case. I get the following error when it tries to sync an order containing a deleted product variant. image

Traceback (most recent call last):
  File "apps/ecommerce_integrations/ecommerce_integrations/shopify/order.py", line 55, in sync_sales_order
    create_order(order, setting)
  File "apps/ecommerce_integrations/ecommerce_integrations/shopify/order.py", line 73, in create_order
    create_delivery_note(order, setting, so)
  File "apps/ecommerce_integrations/ecommerce_integrations/shopify/fulfillment.py", line 45, in create_delivery_note
    dn = make_delivery_note(so.name)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/utils/typing_validations.py", line 31, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py", line 1009, in make_delivery_note
    target_doc = get_mapped_doc("Sales Order", so.name, mapper, target_doc)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/mapper.py", line 152, in get_mapped_doc
    map_child_doc(source_d, target_doc, table_map, source_doc)
  File "apps/frappe/frappe/model/mapper.py", line 268, in map_child_doc
    map_doc(source_d, target_d, table_map, source_parent)
  File "apps/frappe/frappe/model/mapper.py", line 177, in map_doc
    table_map["postprocess"](source_doc, target_doc, source_parent)
  File "apps/erpnext/erpnext/selling/doctype/sales_order/sales_order.py", line 986, in update_item
    item = get_item_defaults(target.item_code, source_parent.company)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/erpnext/erpnext/stock/doctype/item/item.py", line 1269, in get_item_defaults
    item = frappe.get_cached_doc("Item", item_code)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/__init__.py", line 1214, in get_cached_doc
    doc = get_doc(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/__init__.py", line 1340, in get_doc
    doc = frappe.model.document.get_doc(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 85, in get_doc
    return controller(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "apps/frappe/frappe/model/document.py", line 126, in __init__
    self.load_from_db()
  File "apps/frappe/frappe/model/document.py", line 172, in load_from_db
    frappe.throw(
  File "apps/frappe/frappe/__init__.py", line 652, in throw
    msgprint(
  File "apps/frappe/frappe/__init__.py", line 617, in msgprint
    _raise_exception()
  File "apps/frappe/frappe/__init__.py", line 568, in _raise_exception
    raise exc
frappe.exceptions.DoesNotExistError: Item None not found

I have tried manually creating the product on ERPNext by using the same id and variant id as was the deleted item on Shopify as per the request data, but it still gives the same error.

I assume the Item here refers to the product itself and not something else that is missing? Is anyone else experiencing a similar issue?

I am running self-hosted ERPNext version 15 branch & the main branch for ecommerce_integrations.