Работа с сокетами Ошибка! Не работает Ошибка исчезает если удалить файл init.php (переименовать). Но если подключать даже пустой файл local/php_interface/init.php, то все равно ошибка {Работа с сокетами (check_socket): Fail}
Вопрос передан в техподдержку - номер тикета 2561618
Разобрался - вот заключение: К ошибке отпадения скидок после обновления и php и продукта привела неправильная классификация что есть товар, а что есть товарное предложение со стороны разработчиков.
Программа исправления ошибки: 1) ввести новые инфоблоки: "походы по датам"(товар) и "туры с разбивкой по ценам"(товарное предложение) 2) параллельно разработать макет страницы: детальная информация о туре (покупка) 3) переработать функционал корзина и покупка - привязать его к базовой цене 4) незаметно перейти на правильную работу системы
На скриншотах можно увидеть корректную работу применения купона со скидкой (он применился хотя и не позеленел - с этим позже разберусь):
CUSTOM_PRICE = Y - этот флаг не устанавливался, а цены берутся из полей инфоблока. Как купоны срабатывали до обновлений не знаю. Менеджеры говорят работало. На приложенных картинках видно откуда цены идут.
После перехода с php 5.6 на php 7.0 и обновления - поломалось применение скидок по промокоду - они теперь применяются с 0%, но если их применять вручную из админки то все ок. Вот сломанный механизм применения из кода:
Код
function applyPromoCodeToOrder2 ($promoCodeValue, $orderId)
{
if (!is_null($promoCodeValue)) {
$order = \Bitrix\Sale\Order::load($orderId);
\Bitrix\Sale\DiscountCouponsManager::init(\Bitrix\Sale\DiscountCouponsManager::MODE_ORDER, ["userId" => $order->getUserId(),"orderId" => $order->getId()]);
if (\Bitrix\Sale\DiscountCouponsManager::isExist($promoCodeValue)) {
\Bitrix\Sale\DiscountCouponsManager::add($promoCodeValue);
$discounts = $order->getDiscount();
\Bitrix\Sale\DiscountCouponsManager::clearApply(true);
\Bitrix\Sale\DiscountCouponsManager::useSavedCouponsForApply(true);
$discounts->setOrderRefresh(true);
$discounts->setApplyResult(array());
/** @var \Bitrix\Sale\Basket $basket */
if (!($basket = $order->getBasket())) {
throw new \Bitrix\Main\ObjectNotFoundException('Entity "Basket" not found');
}
$discounts->calculate();
$basket->refreshData(array('PRICE', 'COUPONS'));
$order->doFinalAction();
$order->save();
}
}
}
...
$result = $order->save(); //сохраняем заказ в базе
applyPromoCodeToOrder2(getRequestMy('PROMO_CODE'), $order->GetId()); //применяем скидку к сохраненному заказу
...
Подскажите пожалуйста как все-таки применить скидку по промокоду.