本文整理汇总了PHP中Thelia\Model\CurrencyQuery类的典型用法代码示例。如果您正苦于以下问题:PHP CurrencyQuery类的具体用法?PHP CurrencyQuery怎么用?PHP CurrencyQuery使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了CurrencyQuery类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: testFormatMoneyForceCurrency
public function testFormatMoneyForceCurrency()
{
/********************/
/*** Test for EUR ***/
/********************/
$currency = CurrencyQuery::create()->findOneByCode('EUR');
// new format_money method, thelia >= 2.3
$data = $this->render("testFormatMoney.html", ['number' => 9.9999, 'currency' => $currency->getId()]);
$this->assertEquals("10.00 " . $currency->getSymbol(), $data);
// old format_money method, thelia < 2.3
$data = $this->render("testFormatMoney.html", ['number' => 9.9999, 'currency_symbol' => $currency->getSymbol()]);
$this->assertEquals("10.00 " . $currency->getSymbol(), $data);
/********************/
/*** Test for USD ***/
/********************/
$currency = CurrencyQuery::create()->findOneByCode('USD');
// new format_money method, thelia >= 2.3
$data = $this->render("testFormatMoney.html", ['number' => 9.9999, 'currency' => $currency->getId()]);
$this->assertEquals($currency->getSymbol() . "10.00", $data);
// old format_money method, thelia < 2.3
$data = $this->render("testFormatMoney.html", ['number' => 9.9999, 'currency_symbol' => $currency->getSymbol()]);
$this->assertEquals($currency->getSymbol() . "10.00", $data);
/********************/
/*** Test for GBP ***/
/********************/
$currency = CurrencyQuery::create()->findOneByCode('GBP');
// new format_money method, thelia >= 2.3
$data = $this->render("testFormatMoney.html", ['number' => 9.9999, 'currency' => $currency->getId()]);
$this->assertEquals($currency->getSymbol() . "10.00", $data);
// old format_money method, thelia < 2.3
$data = $this->render("testFormatMoney.html", ['number' => 9.9999, 'currency_symbol' => $currency->getSymbol()]);
$this->assertEquals($currency->getSymbol() . "10.00", $data);
}
示例2: importData
public function importData(array $data)
{
$pse = ProductSaleElementsQuery::create()->findPk($data['id']);
if ($pse === null) {
return Translator::getInstance()->trans('The product sale element id %id doesn\'t exist', ['%id' => $data['id']]);
} else {
$currency = null;
if (isset($data['currency'])) {
$currency = CurrencyQuery::create()->findOneByCode($data['currency']);
}
if ($currency === null) {
$currency = Currency::getDefaultCurrency();
}
$price = ProductPriceQuery::create()->filterByProductSaleElementsId($pse->getId())->findOneByCurrencyId($currency->getId());
if ($price === null) {
$price = new ProductPrice();
$price->setProductSaleElements($pse)->setCurrency($currency);
}
$price->setPrice($data['price']);
if (isset($data['promo_price'])) {
$price->setPromoPrice($data['promo_price']);
}
if (isset($data['promo'])) {
$price->getProductSaleElements()->setPromo((int) $data['promo'])->save();
}
$price->save();
$this->importedRows++;
}
return null;
}
示例3: checkDuplicateCode
public function checkDuplicateCode($value, ExecutionContextInterface $context)
{
$currency = CurrencyQuery::create()->findOneByCode($value);
if ($currency) {
$context->addViolation(Translator::getInstance()->trans('A currency with code "%name" already exists.', ['%name' => $value]));
}
}
示例4: generateFacadeStub
/**
* Generate adapter stub
*
* @param int $cartTotalPrice Cart total price
* @param string $checkoutCurrency Checkout currency
* @param string $i18nOutput Output from each translation
*
* @return \PHPUnit_Framework_MockObject_MockObject
*/
public function generateFacadeStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR', $i18nOutput = '')
{
$stubFacade = $this->getMockBuilder('\\Thelia\\Coupon\\BaseFacade')->disableOriginalConstructor()->getMock();
$currencies = CurrencyQuery::create();
$currencies = $currencies->find();
$stubFacade->expects($this->any())->method('getAvailableCurrencies')->will($this->returnValue($currencies));
$stubFacade->expects($this->any())->method('getCartTotalPrice')->will($this->returnValue($cartTotalPrice));
$stubFacade->expects($this->any())->method('getCheckoutCurrency')->will($this->returnValue($checkoutCurrency));
$stubFacade->expects($this->any())->method('getConditionEvaluator')->will($this->returnValue(new ConditionEvaluator()));
$stubTranslator = $this->getMockBuilder('\\Thelia\\Core\\Translation\\Translator')->disableOriginalConstructor()->getMock();
$stubTranslator->expects($this->any())->method('trans')->will($this->returnValue($i18nOutput));
$stubFacade->expects($this->any())->method('getTranslator')->will($this->returnValue($stubTranslator));
$stubDispatcher = $this->getMockBuilder('\\Symfony\\Component\\EventDispatcher\\EventDispatcher')->disableOriginalConstructor()->getMock();
$stubDispatcher->expects($this->any())->method('dispatch')->will($this->returnCallback(function ($dummy, $cartEvent) {
$ci = new CartItem();
$ci->setId(3)->setPrice(123)->setPromo(0);
$cartEvent->setCartItem($ci);
}));
$stubFacade->expects($this->any())->method('getDispatcher')->will($this->returnValue($stubDispatcher));
$stubSession = $this->getMockBuilder('\\Thelia\\Core\\HttpFoundation\\Session\\Session')->disableOriginalConstructor()->getMock();
$stubSession->expects($this->any())->method('get')->will($this->onConsecutiveCalls(-1, 3));
$stubRequest = $this->getMockBuilder('\\Thelia\\Core\\HttpFoundation\\Request')->disableOriginalConstructor()->getMock();
$stubRequest->expects($this->any())->method('getSession')->will($this->returnValue($stubSession));
$stubFacade->expects($this->any())->method('getRequest')->will($this->returnValue($stubRequest));
return $stubFacade;
}
示例5: getPrices
/**
* Get the untaxed price and, if the product is in sale, promo price of a product.
*
* @param ProductGetPricesEvent $event
*/
public function getPrices(ProductGetPricesEvent $event)
{
$product = ProductQuery::create()->findPk($event->getProductId());
if (null === $product) {
throw new \InvalidArgumentException('No product given');
}
$currency = CurrencyQuery::create()->findPk($event->getCurrencyId());
if (null === $currency) {
$currency = CurrencyQuery::create()->findOneByByDefault(true);
}
// get the base prices given in the event
// or, by default, the prices of the product's default PSE
if (null !== $event->getBasePrices()) {
$price = $event->getBasePrices()->getPrice();
$promoPrice = $event->getBasePrices()->getPromoPrice();
} else {
$prices = $product->getDefaultSaleElements()->getPricesByCurrency($currency);
$price = $prices->getPrice();
$promoPrice = $prices->getPromoPrice();
}
// adjust the prices with the configured price delta from legacy attributes
$legacyProductAttributeValues = LegacyProductAttributeValueQuery::create()->filterByProductId($product->getId())->filterByAttributeAvId(array_values($event->getLegacyProductAttributes()), Criteria::IN)->find();
/** @var LegacyProductAttributeValue $legacyProductAttributeValue */
foreach ($legacyProductAttributeValues as $legacyProductAttributeValue) {
$legacyProductAttributeValuePrice = $legacyProductAttributeValue->getPriceForCurrency($event->getCurrencyId());
if ($legacyProductAttributeValuePrice === null) {
continue;
}
$price += $legacyProductAttributeValuePrice->getDelta();
$promoPrice += $legacyProductAttributeValuePrice->getDelta();
}
$event->setPrices(new ProductPriceTools($price, $promoPrice));
}
示例6: getExistingObject
protected function getExistingObject()
{
$currency = CurrencyQuery::create()->findOneById($this->getRequest()->get('currency_id'));
if (null !== $currency) {
$currency->setLocale($this->getCurrentEditionLocale());
}
return $currency;
}
示例7: formatByCurrency
/**
* @since 2.3
* @param float $number
* @param int $decimals
* @param string $decPoint
* @param string $thousandsSep
* @param int|null $currencyId
* @return string
*/
public function formatByCurrency($number, $decimals = null, $decPoint = null, $thousandsSep = null, $currencyId = null)
{
$number = parent::format($number, $decimals, $decPoint, $thousandsSep);
$currency = $currencyId !== null ? CurrencyQuery::create()->findPk($currencyId) : $this->request->getSession()->getCurrency();
if ($currency !== null && strpos($currency->getFormat(), '%n') !== false) {
return str_replace(['%n', '%s', '%c'], [$number, $currency->getSymbol(), $currency->getCode()], $currency->getFormat());
}
return $number;
}
示例8: generateFacadeStub
/**
* Generate adapter stub
*
* @param int $cartTotalPrice Cart total price
* @param string $checkoutCurrency Checkout currency
* @param string $i18nOutput Output from each translation
*
* @return \PHPUnit_Framework_MockObject_MockObject
*/
public function generateFacadeStub($cartTotalPrice = 400, $checkoutCurrency = 'EUR', $i18nOutput = '')
{
$stubFacade = $this->getMockBuilder('\\Thelia\\Coupon\\BaseFacade')->disableOriginalConstructor()->getMock();
$currencies = CurrencyQuery::create()->find();
$stubFacade->expects($this->any())->method('getAvailableCurrencies')->will($this->returnValue($currencies));
$stubFacade->expects($this->any())->method('getCartTotalTaxPrice')->will($this->returnValue($cartTotalPrice));
$stubFacade->expects($this->any())->method('getCheckoutCurrency')->will($this->returnValue($checkoutCurrency));
$stubFacade->expects($this->any())->method('getConditionEvaluator')->will($this->returnValue(new ConditionEvaluator()));
$stubTranslator = $this->getMockBuilder('\\Thelia\\Core\\Translation\\Translator')->disableOriginalConstructor()->getMock();
$stubTranslator->expects($this->any())->method('trans')->will($this->returnValue($i18nOutput));
$stubFacade->expects($this->any())->method('getTranslator')->will($this->returnValue($stubTranslator));
return $stubFacade;
}
示例9: testCheckCurrency
public function testCheckCurrency()
{
$listener = $this->getRequestListener();
$event = $this->getGetResponseEvent();
/** @var Session $session */
$session = $event->getRequest()->getSession();
// Test with a session that has no currency
$listener->checkCurrency($event);
$currentCurrency = $session->getCurrency();
$this->assertInstanceOf('Thelia\\Model\\Currency', $currentCurrency);
// Test change currency
$newCurrency = CurrencyQuery::create()->filterById($currentCurrency->getId(), Criteria::NOT_IN)->findOne();
$event->getRequest()->query->set('currency', $newCurrency->getCode());
$listener->checkCurrency($event);
$this->assertEquals($session->getCurrency()->getId(), $newCurrency->getId());
}
示例10: testCreateAction
public function testCreateAction()
{
$client = static::createClient();
$category = CategoryQuery::create()->addAscendingOrderByColumn('RAND()')->findOne();
$defaultCurrency = CurrencyQuery::create()->findOneByByDefault(1);
$taxRule = TaxRuleQuery::create()->findOneByIsDefault(1);
$product = ['ref' => uniqid('testCreateProduct'), 'locale' => 'en_US', 'title' => 'product create from api', 'description' => 'product description from api', 'default_category' => $category->getId(), 'visible' => 1, 'price' => '10', 'currency' => $defaultCurrency->getId(), 'tax_rule' => $taxRule->getId(), 'weight' => 10, 'brand_id' => 0];
$requestContent = json_encode($product);
$servers = $this->getServerParameters();
$servers['CONTENT_TYPE'] = 'application/json';
$client->request('POST', '/api/products?&sign=' . $this->getSignParameter($requestContent), [], [], $servers, $requestContent);
$this->assertEquals(201, $client->getResponse()->getStatusCode(), 'Http status code must be 201');
$content = json_decode($client->getResponse()->getContent(), true);
$this->assertEquals('en_US', $content[0]['LOCALE']);
return $content['0']['ID'];
}
示例11: testPrices
public function testPrices()
{
$container = new Container();
new Translator($container);
$handler = new ProductTaxedPricesExport($container);
$lang = Lang::getDefaultLanguage();
$data = $handler->buildData($lang)->getData();
foreach ($data as $line) {
$product = ProductSaleElementsQuery::create()->findOneByRef($line["ref"]);
$currency = CurrencyQuery::create()->findOneByCode($line["currency"]);
$this->assertNotNull($product);
$prices = $product->getPricesByCurrency($currency);
$this->assertEquals($prices->getPrice(), $line["price"]);
$this->assertEquals($prices->getPromoPrice(), $line["promo_price"]);
}
}
示例12: testPrices
public function testPrices()
{
new Translator(new Container());
$export = new ProductTaxedPricesExport(new Container());
$data = $export->buildData(Lang::getDefaultLanguage());
$keys = ["attributes", "currency", "ean", "id", "price", "product_id", "promo", "promo_price", "tax_id", "tax_title", "title"];
$rawData = $data->getData();
$max = count($rawData);
/**
* If there are more than 50 entries, a test on 50 entries will be as efficient
* and quicker than a test on all the entries
*/
if ($max > 50) {
$max = 50;
}
for ($i = 0; $i < $max; ++$i) {
$row = $rawData[$i];
$rowKeys = array_keys($row);
$this->assertTrue(sort($rowKeys));
$this->assertEquals($keys, $rowKeys);
$pse = ProductSaleElementsQuery::create()->findPk($row["id"]);
$this->assertNotNull($pse);
$this->assertEquals($pse->getEanCode(), $row["ean"]);
$this->assertEquals($pse->getPromo(), $row["promo"]);
$currency = CurrencyQuery::create()->findOneByCode($row["currency"]);
$this->assertNotNull($currency);
$price = $pse->getPricesByCurrency($currency);
$this->assertEquals(round($price->getPrice(), 3), round($row["price"], 3));
$this->assertEquals(round($price->getPromoPrice(), 3), round($row["promo_price"], 3));
$this->assertEquals($pse->getProduct()->getTitle(), $row["title"]);
$attributeCombinations = $pse->getAttributeCombinations();
$attributes = [];
foreach ($attributeCombinations as $attributeCombination) {
if (!in_array($attributeCombination->getAttributeAv()->getTitle(), $attributes)) {
$attributes[] = $attributeCombination->getAttributeAv()->getTitle();
}
}
$rowAttributes = !empty($row["attributes"]) ? explode(",", $row["attributes"]) : [];
sort($rowAttributes);
sort($attributes);
$this->assertEquals($attributes, $rowAttributes);
$taxId = $pse->getProduct()->getTaxRule()->getId();
$this->assertEquals($taxId, $row["tax_id"]);
$taxTitle = $pse->getProduct()->getTaxRule()->getTitle();
$this->assertEquals($taxTitle, $row["tax_title"]);
}
}
示例13: testQuery
public function testQuery()
{
new Translator(new Container());
$export = new ProductPricesExport(new Container());
$data = $export->buildData(Lang::getDefaultLanguage());
$keys = ["attributes", "currency", "ean", "id", "price", "product_id", "promo", "promo_price", "title"];
$rawData = $data->getData();
$max = count($rawData);
/**
* If there's more that 50 entries,
* just pick 50, it would be faster and as tested as if we test 1000 entries.
*/
if ($max > 50) {
$max = 50;
}
for ($i = 0; $i < $max; ++$i) {
$row = $rawData[$i];
$rowKeys = array_keys($row);
$this->assertTrue(sort($rowKeys));
$this->assertEquals($keys, $rowKeys);
$pse = ProductSaleElementsQuery::create()->findPk($row["id"]);
$this->assertNotNull($pse);
$this->assertEquals($pse->getEanCode(), $row["ean"]);
$this->assertEquals($pse->getPromo(), $row["promo"]);
$currency = CurrencyQuery::create()->findOneByCode($row["currency"]);
$this->assertNotNull($currency);
$price = $pse->getPricesByCurrency($currency);
// The substr is a patch for php 5.4 float round
$this->assertEquals(round($price->getPrice(), 3), round($row["price"], 3));
$this->assertEquals(round($price->getPromoPrice(), 3), round($row["promo_price"], 3));
$this->assertEquals($pse->getProduct()->getTitle(), $row["title"]);
$attributeCombinations = $pse->getAttributeCombinations();
$attributes = [];
foreach ($attributeCombinations as $attributeCombination) {
if (!in_array($attributeCombination->getAttributeAv()->getTitle(), $attributes)) {
$attributes[] = $attributeCombination->getAttributeAv()->getTitle();
}
}
$rowAttributes = explode(",", $row["attributes"]);
sort($rowAttributes);
sort($attributes);
$this->assertEquals($attributes, $rowAttributes);
}
}
示例14: buildForm
protected function buildForm()
{
$this->formBuilder->add('product_id', 'integer', ['label' => Translator::getInstance()->trans('Product'), 'required' => true, 'constraints' => [new NotBlank()]])->add('currency_id', 'integer', ['label' => Translator::getInstance()->trans('Currency'), 'required' => true, 'constraints' => [new NotBlank()]]);
$productId = $this->request->get('product_id');
if ($productId === null) {
$productId = $this->request->get($this->getName())['product_id'];
}
$product = ProductQuery::create()->findPk($productId);
if ($product->getTemplate() === null) {
return;
}
$currencyId = $this->request->get('edit_currency_id');
if ($currencyId === null) {
$defaultCurrency = CurrencyQuery::create()->findOneByByDefault(true);
if ($defaultCurrency !== null) {
$currencyId = $defaultCurrency->getId();
}
}
$productAttributeAvs = AttributeAvQuery::create()->useAttributeQuery()->filterByTemplate($product->getTemplate())->endUse()->find();
$formData = ['price_delta' => [], 'price_delta_with_tax' => []];
/** @var TaxEngine $taxEngine */
$taxEngine = $this->container->get('thelia.taxEngine');
$taxCalculator = (new Calculator())->load($product, $taxEngine->getDeliveryCountry());
/** @var AttributeAv $productAttributeAv */
foreach ($productAttributeAvs as $productAttributeAv) {
$legacyProductAttributeValuePrice = LegacyProductAttributeValuePriceQuery::create()->findPk([$product->getId(), $productAttributeAv->getId(), $currencyId]);
$priceDelta = 0;
$priceDeltaWithTax = 0;
if (null !== $legacyProductAttributeValuePrice) {
$priceDelta = $legacyProductAttributeValuePrice->getDelta();
$priceDeltaWithTax = $taxCalculator->getTaxedPrice($legacyProductAttributeValuePrice->getDelta());
}
$numberFormatter = NumberFormat::getInstance($this->getRequest());
$formData['price_delta'][$productAttributeAv->getId()] = $numberFormatter->formatStandardNumber($priceDelta);
$formData['price_delta_with_tax'][$productAttributeAv->getId()] = $numberFormatter->formatStandardNumber($priceDeltaWithTax);
}
$this->formBuilder->add('legacy_product_attribute_value_price_delta', 'collection', ['label' => Translator::getInstance()->trans('Price difference excluding taxes', [], LegacyProductAttributes::MESSAGE_DOMAIN_BO), 'type' => 'number', 'allow_add' => true, 'allow_delete' => true, 'data' => $formData['price_delta']])->add('legacy_product_attribute_value_price_delta_with_tax', 'collection', ['label' => Translator::getInstance()->trans('Price difference including taxes', [], LegacyProductAttributes::MESSAGE_DOMAIN_BO), 'type' => 'number', 'allow_add' => true, 'allow_delete' => true, 'data' => $formData['price_delta_with_tax']]);
}
示例15: buildDataSet
public function buildDataSet(Lang $lang)
{
/** @var \Thelia\Model\AttributeCombinationQuery $query */
$query = parent::buildDataSet($lang);
$pseJoin = new Join(AttributeCombinationTableMap::PRODUCT_SALE_ELEMENTS_ID, ProductSaleElementsTableMap::ID);
$pseJoin->setRightTableAlias("pse_tax_join");
$productJoin = new Join(ProductSaleElementsTableMap::ID, ProductTableMap::ID);
$productJoin->setRightTableAlias("product_tax_join");
$taxJoin = new Join("`product_tax_join`.TAX_RULE_ID", TaxRuleTableMap::ID, Criteria::LEFT_JOIN);
$taxI18nJoin = new Join(TaxRuleTableMap::ID, TaxRuleI18nTableMap::ID, Criteria::LEFT_JOIN);
$query->addJoinObject($pseJoin, "pse_tax_join")->addJoinObject($productJoin, "product_tax_join")->addJoinObject($productJoin)->addJoinObject($taxJoin)->addJoinObject($taxI18nJoin)->addAsColumn("product_TAX_TITLE", TaxRuleI18nTableMap::TITLE)->addAsColumn("tax_ID", TaxRuleTableMap::ID)->select($query->getSelect() + ["product_TAX_TITLE", "tax_ID"]);
I18n::addI18nCondition($query, TaxRuleI18nTableMap::TABLE_NAME, TaxRuleTableMap::ID, TaxRuleI18nTableMap::ID, TaxRuleI18nTableMap::LOCALE, $lang->getLocale());
$dataSet = $query->keepQuery(true)->find()->toArray();
$productSaleElements = ProductSaleElementsQuery::create()->find()->toKeyIndex("Id");
$currencies = CurrencyQuery::create()->find()->toKeyIndex("Code");
foreach ($dataSet as &$line) {
/** @var \Thelia\Model\ProductSaleElements $pse */
$pse = $productSaleElements[$line["product_sale_elements_ID"]];
$pricesTools = $pse->getPricesByCurrency($currencies[$line["currency_CODE"]]);
$line["price_PRICE"] = $pricesTools->getPrice();
$line["price_PROMO_PRICE"] = $pricesTools->getPromoPrice();
}
return $dataSet;
}