getActiveId() !== 'CZK') { return parent::getPurchaseStateSavings(); } $savingsWithVat = \DecimalConstants::zero(); $savingsWithoutVat = \DecimalConstants::zero(); foreach ($this->getPurchaseState()->getProducts() as $item) { if (!$item->getProduct() || !$item->getProduct()->getProductPrice()) { continue; } $productPrice = $item->getProduct()->getProductPrice(); if (!($priceCommon = $item->getNote()['sap']['priceCommon'] ?? null)) { $priceCommon = $productPrice->getPriceWithVatWithoutDiscount()->mul(toDecimal($item->getPieces())); } // make sure priceCommon is decimal $priceCommon = toDecimal($priceCommon); if ($priceCommon->isPositive()) { $diffWithVat = $priceCommon->sub($item->getPrice()->getPriceWithVat()); if ($diffWithVat->isPositive()) { $savingsWithVat = $savingsWithVat->add($diffWithVat); } $diffWithoutVat = $priceCommon->removeVat($item->getPrice()->getVat())->sub($item->getPrice()->getPriceWithoutVat()); if ($diffWithoutVat->isPositive()) { $savingsWithoutVat = $savingsWithoutVat->add($diffWithoutVat); } } } return new TotalPrice( $savingsWithVat, $savingsWithoutVat, $this->currencyContext->getActive() ); } }