Skip to content

[BUG] Urgent Woocommerce order sync error - Item Attribute overwrite during sync causing system-wide failures #243

@linjo

Description

@linjo

###` Current Behavior

Issue

We are facing repeated failures during item/order sync with WooCommerce Fusion.

Error:

The value “Off White” is already assigned to an existing Item (DMF34A). Edit not allowed.

Key Observation

This error occurs even when syncing products that do not use “Off White”.

Example:

Syncing product with Color = Lavender
Still fails due to Off White
Understanding

It appears that during sync, the connector is attempting to update or overwrite the entire Item Attribute (e.g., Color) instead of just handling the current product’s value.

Since ERPNext does not allow modifying attribute values already used by existing variants, the save fails.

Impact
Affects all item and order sync
Not limited to specific products
Causes complete sync blockage in production
Expected Behavior
Existing attribute values should not be modified
Only missing values should be added (if needed)
Sync should not depend on unrelated attribute values
Temporary Workaround

Enabling “Allow Rename Attribute Value” bypasses the issue, but it is risky for live systems.

Environment

  • Frappe Version: v15.88.2

  • ERPNext Version: v15.88.1 (HEAD)

  • WooCommerce Fusion: v1.15.4 (HEAD)
    Request

Please confirm if this behavior is expected, or if a fix can be provided to prevent attribute overwrite during sync.

Image

Traceback (most recent call last): File "apps/woocommerce_fusion/woocommerce_fusion/tasks/sync_sales_orders.py", line 138, in run self.sync_wc_order_with_erpnext_order() File "apps/woocommerce_fusion/woocommerce_fusion/tasks/sync_sales_orders.py", line 203, in sync_wc_order_with_erpnext_order self.create_sales_order(self.woocommerce_order) File "apps/woocommerce_fusion/woocommerce_fusion/tasks/sync_sales_orders.py", line 480, in create_sales_order self.create_missing_items(wc_order, json.loads(wc_order.line_items), wc_order.woocommerce_server) File "apps/woocommerce_fusion/woocommerce_fusion/tasks/sync_sales_orders.py", line 629, in create_missing_items run_item_sync(woocommerce_product_name=woocommerce_product_name) File "apps/frappe/frappe/utils/typing_validations.py", line 32, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "apps/woocommerce_fusion/woocommerce_fusion/tasks/sync_items.py", line 75, in run_item_sync sync.run() File "apps/woocommerce_fusion/woocommerce_fusion/tasks/sync_items.py", line 175, in run raise err File "apps/woocommerce_fusion/woocommerce_fusion/tasks/sync_items.py", line 163, in run self.sync_wc_product_with_erpnext_item() File "apps/woocommerce_fusion/woocommerce_fusion/tasks/sync_items.py", line 246, in sync_wc_product_with_erpnext_item self.create_item(self.woocommerce_product) File "apps/woocommerce_fusion/woocommerce_fusion/tasks/sync_items.py", line 392, in create_item self.create_or_update_item_attributes(wc_product) File "apps/woocommerce_fusion/woocommerce_fusion/tasks/sync_items.py", line 487, in create_or_update_item_attributes item_attribute.save() File "apps/frappe/frappe/model/document.py", line 378, in save return self._save(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "apps/frappe/frappe/model/document.py", line 431, in _save self.run_post_save_methods() File "apps/frappe/frappe/model/document.py", line 1177, in run_post_save_methods self.run_method("on_update") File "apps/frappe/frappe/model/document.py", line 1011, in run_method out = Document.hook(fn)(self, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "apps/frappe/frappe/model/document.py", line 1371, in composer return composed(self, method, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "apps/frappe/frappe/model/document.py", line 1353, in runner add_to_return_value(self, fn(self, *args, **kwargs)) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "apps/frappe/frappe/model/document.py", line 1008, in fn return method_object(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "apps/erpnext/erpnext/stock/doctype/item_attribute/item_attribute.py", line 50, in on_update self.validate_exising_items() File "apps/erpnext/erpnext/stock/doctype/item_attribute/item_attribute.py", line 88, in validate_exising_items validate_item_attribute_value( File "apps/erpnext/erpnext/controllers/item_variant.py", line 155, in validate_item_attribute_value frappe.throw(msg, InvalidItemAttributeValueError, title=_("Edit Not Allowed")) File "apps/frappe/frappe/__init__.py", line 609, in throw msgprint( File "apps/frappe/frappe/__init__.py", line 574, in msgprint _raise_exception() File "apps/frappe/frappe/__init__.py", line 525, in _raise_exception raise exc erpnext.controllers.item_variant.InvalidItemAttributeValueError: The value <strong>Off White</strong> is already assigned to an existing Item <strong>DMF34A</strong>.<br>To still proceed with editing this Attribute Value, enable <strong>Allow Rename Attribute Value</strong> in Item Variant Settings.

Above given is the error log

Steps To Reproduce

Woocommerce order > sync and this error happen

Expected Behavior

Order synced without error

Anything else?

No response

Environment and Versions

- Frappe Version: v15.88.2

- ERPNext Version: v15.88.1 (HEAD)
- WooCommerce Fusion: v1.15.4 (HEAD)

Hosting Method

Frappe Cloud

What browsers are you seeing the problem on?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions