###` 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
Please confirm if this behavior is expected, or if a fix can be provided to prevent attribute overwrite during sync.
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
###` 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.
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
Hosting Method
Frappe Cloud
What browsers are you seeing the problem on?
No response