Компонент служит для оформления заказа на одной странице с использованием технологии AJAX на разных языках.
Данный компонент больше не нуждается в адаптации мультиязычности, так как с версии 2.2.1 все переводы осуществляются на событиях OnSaleComponentOrderJsData и OnSaleComponentOrderResultPrepared модуля sale.
В компоненте предусмотрена возможность переводить платежные системы, службы доставки, свойства заказа и типы покупателей. Данный функционал реализован при помощи языковых файлов, и описан здесь.Подробнее можно озакомиться на странице официальной документации.
В компоненте изменены следующие файлы:- class.php
Code
Copy code
Code copied!
//Выполнено подключение модуля:
Loader::includeModule("modulemarket.translator");
Code
Copy code
Code copied!
//Изменена данная функция obtainBasket
protected function obtainBasket()
{
$arResult =& $this->arResult;
$arResult["MAX_DIMENSIONS"] = $arResult["ITEMS_DIMENSIONS"] = [];
$arResult["BASKET_ITEMS"] = [];
$this->calculateBasket = $this->order->getBasket()->createClone();
$discounts = $this->order->getDiscount();
$showPrices = $discounts->getShowPrices();
if (!empty($showPrices['BASKET']))
{
foreach ($showPrices['BASKET'] as $basketCode => $data)
{
$basketItem = $this->calculateBasket->getItemByBasketCode($basketCode);
if ($basketItem instanceof Sale\BasketItemBase)
{
$basketItem->setFieldNoDemand('BASE_PRICE', $data['SHOW_BASE_PRICE']);
$basketItem->setFieldNoDemand('PRICE', $data['SHOW_PRICE']);
$basketItem->setFieldNoDemand('DISCOUNT_PRICE', $data['SHOW_DISCOUNT']);
}
}
}
unset($showPrices);
/** @var Sale\BasketItem $basketItem */
foreach ($this->calculateBasket as $basketItem)
{
$arBasketItem = $basketItem->getFieldValues();
if ($basketItem->getVatRate() > 0)
{
$arResult["bUsingVat"] = "Y";
$arBasketItem["VAT_VALUE"] = $basketItem->getVat();
}
$arBasketItem["QUANTITY"] = $basketItem->getQuantity();
$arBasketItem["PRICE_FORMATED"] = SaleFormatCurrency($basketItem->getPrice(), $this->order->getCurrency());
$arBasketItem["WEIGHT_FORMATED"] = roundEx(doubleval($basketItem->getWeight() / $arResult["WEIGHT_KOEF"]), SALE_WEIGHT_PRECISION)." ".$arResult["WEIGHT_UNIT"];
$arBasketItem["DISCOUNT_PRICE"] = $basketItem->getDiscountPrice();
$arBasketItem["DISCOUNT_PRICE_PERCENT"] = 0;
if ($arBasketItem['CUSTOM_PRICE'] != 'Y')
{
$arBasketItem['DISCOUNT_PRICE_PERCENT'] = Sale\Discount::calculateDiscountPercent(
$arBasketItem['BASE_PRICE'],
$arBasketItem['DISCOUNT_PRICE']
);
if ($arBasketItem['DISCOUNT_PRICE_PERCENT'] === null)
$arBasketItem['DISCOUNT_PRICE_PERCENT'] = 0;
}
$arBasketItem["DISCOUNT_PRICE_PERCENT_FORMATED"] = $arBasketItem['DISCOUNT_PRICE_PERCENT'].'%';
$arBasketItem["BASE_PRICE_FORMATED"] = SaleFormatCurrency($basketItem->getBasePrice(), $this->order->getCurrency());
$arDim = $basketItem->getField('DIMENSIONS');
if (is_string($arDim))
{
$arDim = unserialize($basketItem->getField('DIMENSIONS'), ['allowed_classes' => false]);
}
if (is_array($arDim))
{
$arResult["MAX_DIMENSIONS"] = CSaleDeliveryHelper::getMaxDimensions(
[
$arDim["WIDTH"],
$arDim["HEIGHT"],
$arDim["LENGTH"],
],
$arResult["MAX_DIMENSIONS"]);
$arResult["ITEMS_DIMENSIONS"][] = $arDim;
}
$arBasketItem["PROPS"] = [];
/** @var Sale\BasketPropertiesCollection $propertyCollection */
$propertyCollection = $basketItem->getPropertyCollection();
$propList = $propertyCollection->getPropertyValues();
foreach ($propList as $key => &$prop)
{
if ($prop['CODE'] == 'CATALOG.XML_ID' || $prop['CODE'] == 'PRODUCT.XML_ID' || $prop['CODE'] == 'SUM_OF_CHARGE')
continue;
$prop = array_filter($prop, ["CSaleBasketHelper", "filterFields"]);
$arBasketItem["PROPS"][] = $prop;
}
$this->arElementId[] = $arBasketItem["PRODUCT_ID"];
$arBasketItem["SUM_NUM"] = $basketItem->getPrice() * $basketItem->getQuantity();
$arBasketItem["SUM"] = SaleFormatCurrency(
$arBasketItem["SUM_NUM"],
$this->order->getCurrency()
);
$arBasketItem["SUM_BASE"] = $basketItem->getBasePrice() * $basketItem->getQuantity();
$arBasketItem["SUM_BASE_FORMATED"] = SaleFormatCurrency(
$arBasketItem["SUM_BASE"],
$this->order->getCurrency()
);
$arBasketItem["SUM_DISCOUNT_DIFF"] = $arBasketItem["SUM_BASE"] - $arBasketItem["SUM_NUM"];
$arBasketItem["SUM_DISCOUNT_DIFF_FORMATED"] = SaleFormatCurrency(
$arBasketItem["SUM_DISCOUNT_DIFF"],
$this->order->getCurrency()
);
$arResult["BASKET_ITEMS"][] = $arBasketItem;
}
//edit_by_Fantych: 15.08.2023
\Modulemarket\Translator\Order\OrderClass::translateBasketItems($arResult["BASKET_ITEMS"]);
}
Количество показов: 847
Дата изменения: 02.11.2023 13:56:50