currencyContext = $currencyContext; } /** * @param TotalPrice|Price|array|\Decimal $price * * @return string */ public function getPrice($price, $withVat = null, $round = true) { if ($withVat !== null) { $sendWithVat = $withVat; } else { $sendWithVat = !self::sendPriceWithoutVAT(); } if ($price instanceof TotalPrice) { // Je to trochu uchylny to vytahovat do Decimal, pak z toho delat pole, pak zas objekt Price.. // ale je to kvuli prevodu do meny - zbytek tehle funkce $price = $sendWithVat ? $price->getPriceWithVat() : $price->getPriceWithoutVat($round); } if ($price instanceof \Decimal) { $price = [ 'value_without_vat' => $price, 'value_with_vat' => $price, 'vat' => 0, ]; } if (!is_object($price)) { $price = new Price(toDecimal($price['value_without_vat']), $this->currencyContext->getActive(), $price['vat']); } if ($price instanceof PriceWrapper) { $price = $price->getObject(); } $price = $this->convertToCorrectPrice($price); return ($sendWithVat ? $price->getPriceWithVat() : $price->getPriceWithoutVat($round))->printFloatValue(-2); } /** * @return Price */ public function convertToCorrectPrice($price) { return \KupShop\KupShopBundle\Util\Price\PriceCalculator::convert($price, $this->getOutputCurrency()); } /** * @return \KupShop\I18nBundle\Entity\Currency */ public function getOutputCurrency() { $dbcfg = \Settings::getDefault(); if (empty($dbcfg->analytics['google_tag_manager']['currency'])) { return $this->currencyContext->getActive(); } return $this->currencyContext->getAll()[$dbcfg->analytics['google_tag_manager']['currency']]; } public static function sendPriceWithoutVAT() { $dbcfg = \Settings::getDefault(); return ($dbcfg['analytics']['google_tag_manager']['withoutVAT'] ?? 'N') == 'Y'; } }