diff --git a/src/CoreShop/Bundle/CoreBundle/CoreExtension/StoreValues.php b/src/CoreShop/Bundle/CoreBundle/CoreExtension/StoreValues.php index 5520aaed67..29ec52a37f 100644 --- a/src/CoreShop/Bundle/CoreBundle/CoreExtension/StoreValues.php +++ b/src/CoreShop/Bundle/CoreBundle/CoreExtension/StoreValues.php @@ -169,7 +169,10 @@ public function getGetterCode($class) $code .= "\t" . 'if (is_null($store)) {' . "\n"; $code .= "\t\t" . 'return $this->' . $key . ";\n"; $code .= "\t" . '}' . "\n"; - $code .= "\t" . '$data = $this->' . $key . ";\n"; + $code .= "\t" . '$data = $this->' . $key . ";\n\n"; + $code .= "\t" . 'if (\Pimcore\Model\DataObject::doGetInheritedValues() && $this->getClass()->getFieldDefinition("' . $key . '")->isEmpty($data)) {' . "\n"; + $code .= "\t\t" . 'return $this->getValueFromParent("' . $key . '", $store);' . "\n"; + $code .= "\t" . '}' . "\n\n"; $code .= "\t" . 'if (is_array($data)) {' . "\n"; $code .= "\t\t" . '/** @var \CoreShop\Component\Core\Model\ProductStoreValuesInterface $storeValuesBlock */' . "\n"; $code .= "\t\t" . 'foreach ($data as $storeValuesBlock) {' . "\n"; @@ -577,7 +580,7 @@ public function isDiffChangeAllowed($object, $params = []) */ public function isEmpty($data) { - return is_null($data); + return is_null($data) || (is_array($data) && count($data) === 0); } /** diff --git a/src/CoreShop/Bundle/CoreBundle/Resources/public/pimcore/js/coreExtension/tags/coreShopStoreValues.js b/src/CoreShop/Bundle/CoreBundle/Resources/public/pimcore/js/coreExtension/tags/coreShopStoreValues.js index ebce2b7ac5..bec3fa94b8 100755 --- a/src/CoreShop/Bundle/CoreBundle/Resources/public/pimcore/js/coreExtension/tags/coreShopStoreValues.js +++ b/src/CoreShop/Bundle/CoreBundle/Resources/public/pimcore/js/coreExtension/tags/coreShopStoreValues.js @@ -93,6 +93,11 @@ pimcore.object.tags.coreShopStoreValues = Class.create(pimcore.object.tags.abstr ignoreErrors: true, success: function (response) { + // maybe object is already gone due manual reload + if(this.component.destroyed === true) { + return; + } + this.dirty = false; var refreshedObject = null, diff --git a/src/CoreShop/Bundle/CoreBundle/Resources/public/pimcore/js/product/storevalues/items/price.js b/src/CoreShop/Bundle/CoreBundle/Resources/public/pimcore/js/product/storevalues/items/price.js index eec65af40e..0861af4179 100644 --- a/src/CoreShop/Bundle/CoreBundle/Resources/public/pimcore/js/product/storevalues/items/price.js +++ b/src/CoreShop/Bundle/CoreBundle/Resources/public/pimcore/js/product/storevalues/items/price.js @@ -24,8 +24,12 @@ coreshop.product.storeValues.items.price = Class.create(coreshop.product.storeVa value: 0 }); + // do not fire dirty flag on initial data setup + priceField.suspendEvents(); + if (price !== null) { priceField.setValue(price / 100); + priceField.resetOriginalValue(); priceField.setFieldLabel(priceField.fieldLabel + ' (' + this.builder.data.currencySymbol + ')'); } @@ -43,6 +47,8 @@ coreshop.product.storeValues.items.price = Class.create(coreshop.product.storeVa priceField.setMaxValue(this.builder.fieldConfig.maxValue); } + priceField.resumeEvents(true); + return priceField; } }); \ No newline at end of file