/** * Recalculates sell prices for single product attribute * * @param VariantInterface $variant */ protected function refreshProductVariantSellPrice(VariantInterface $variant) { $product = $variant->getProduct(); $sellPrice = $product->getSellPrice(); $grossAmount = $this->calculateAttributePrice($variant, $sellPrice->getGrossAmount()); $discountedGrossAmount = $this->calculateAttributePrice($variant, $sellPrice->getDiscountedGrossAmount()); $taxRate = $product->getSellPriceTax()->getValue(); $netAmount = TaxHelper::calculateNetPrice($grossAmount, $taxRate); $discountedNetAmount = TaxHelper::calculateNetPrice($discountedGrossAmount, $taxRate); $productAttributeSellPrice = $variant->getSellPrice(); $productAttributeSellPrice->setTaxRate($taxRate); $productAttributeSellPrice->setTaxAmount($grossAmount - $netAmount); $productAttributeSellPrice->setGrossAmount($grossAmount); $productAttributeSellPrice->setNetAmount($netAmount); $productAttributeSellPrice->setDiscountedGrossAmount($discountedGrossAmount); $productAttributeSellPrice->setDiscountedTaxAmount($discountedGrossAmount - $discountedNetAmount); $productAttributeSellPrice->setDiscountedNetAmount($discountedNetAmount); $productAttributeSellPrice->setValidFrom($sellPrice->getValidFrom()); $productAttributeSellPrice->setValidTo($sellPrice->getValidTo()); $productAttributeSellPrice->setCurrency($sellPrice->getCurrency()); }