diff --git a/Model/Write/Products/CollectionDecorator/DiscountPercentage.php b/Model/Write/Products/CollectionDecorator/DiscountPercentage.php new file mode 100644 index 0000000..596ff94 --- /dev/null +++ b/Model/Write/Products/CollectionDecorator/DiscountPercentage.php @@ -0,0 +1,57 @@ +getTypeId() === BundleType::TYPE_CODE) { + continue; + } + + $discount = $this->calculateDiscount($entity); + if ($discount <= 0) { + continue; + } + + $entity->addAttribute(self::ATTRIBUTE_NAME, $discount); + } + } + + /** + * @param ExportEntity $entity + * @return int + */ + private function calculateDiscount(ExportEntity $entity): int + { + try { + $regularPrice = (float)$entity->getAttribute('regular_price', false); + $finalPrice = (float)$entity->getAttribute('final_price', false); + } catch (InvalidArgumentException $e) { + return 0; + } + + if ($regularPrice <= 0.00001 || $finalPrice >= $regularPrice) { + return 0; + } + + return (int)round(($regularPrice - $finalPrice) / $regularPrice * 100); + } +} diff --git a/Model/Write/Products/CollectionDecorator/Price.php b/Model/Write/Products/CollectionDecorator/Price.php index cd25b5b..0779f54 100644 --- a/Model/Write/Products/CollectionDecorator/Price.php +++ b/Model/Write/Products/CollectionDecorator/Price.php @@ -87,6 +87,7 @@ public function decorate(Collection|PriceCollection $collection): void $row = $this->applyCombinedPrices($row, $product, $store); $row = $this->applyPriceFields($row, $priceFields); + $row['regular_price'] = (float) $row['price']; $row['price'] = $this->getPriceValue($row, $priceFields); $collection->get($entityId)->setFromArray($row); diff --git a/etc/di.xml b/etc/di.xml index 815db21..e8fb262 100644 --- a/etc/di.xml +++ b/etc/di.xml @@ -81,6 +81,7 @@ Tweakwise\Magento2TweakwiseExport\Model\Write\Products\CollectionDecorator\StockData Tweakwise\Magento2TweakwiseExport\Model\Write\Products\CollectionDecorator\ChildrenAttributes Tweakwise\Magento2TweakwiseExport\Model\Write\Products\CollectionDecorator\Price + Tweakwise\Magento2TweakwiseExport\Model\Write\Products\CollectionDecorator\DiscountPercentage Tweakwise\Magento2TweakwiseExport\Model\Write\Products\CollectionDecorator\WebsiteLink Tweakwise\Magento2TweakwiseExport\Model\Write\Products\CollectionDecorator\Review @@ -104,6 +105,7 @@ Tweakwise\Magento2TweakwiseExport\Model\Write\Products\CollectionDecorator\Children Tweakwise\Magento2TweakwiseExport\Model\Write\Products\CollectionDecorator\Price + Tweakwise\Magento2TweakwiseExport\Model\Write\Products\CollectionDecorator\DiscountPercentage Tweakwise\Magento2TweakwiseExport\Model\Write\Products\CollectionDecorator\WebsiteLink