При попытке изменить настройки онлайн кассы получаем следующую ошибку (пути обрезаны до корня сайта)
Код
[TypeError]
Argument 1 passed to Bitrix\Sale\Cashbox\Manager::isPaySystemCashbox() must be of the type string, null given, called in
/bitrix/modules/sale/admin/cashbox_edit.php on line 192 (0)
/bitrix/modules/sale/lib/cashbox/manager.php:598
#0: Bitrix\Sale\Cashbox\Manager::isPaySystemCashbox(NULL)
/bitrix/modules/sale/admin/cashbox_edit.php:192
#1: require_once(string)
/bitrix/admin/sale_cashbox_edit.php:2
----------
Проблема в коде - определен тип передаваемого параметра как string но не обеспечена проверка типа (/bitrix/modules/sale/lib/cashbox/manager.php):
Код
public static function isPaySystemCashbox(string $cashboxClassName): bool
Если уж начали писать по взрослому, то добавляйте проверку типа перед обращением.
Данные по корзине были отправлены в ТП уже месяц назад, никаких правок не пришло (лицензия оплачена).
По этой проблеме в понедельник отпишусь в ТП, но не жду уже каких-то правок. Опять придется костылить ядро битрикса. Господа у вас уже технический долг накапливается. Бизнес не будет ждать, уже гендиректор поднимает вопрос о смене платформы и его все меньше и меньше пугают цены перезда.
Пока закостылил - тупо убрал требование типа аргумента (/bitrix/modules/sale/lib/cashbox/manager.php):
Код
public static function isPaySystemCashbox($cashboxClassName): bool
Вроде работает. Я скорее много чего не учел, но в качестве костыля вроде работает. ТП свои изыскания отправил. Ждем обновление модуля с нормальным фиксом.
В методе Bitrix\Sale\Internals\Catalog\Provider::tryReserve(), есть вызов получения объекта заказа, который возвращает NULL. Это в общем-то логично, так как заказа ещё нет.
Код
$order = $basketItem->getBasket()->getOrder(); /* 388 строка в /bitrix/modules/sale/lib/internals/catalog/provider.php*/
Но с другой стороны почему бы ему не возвращать пустой объект как Order::create() ?
А ещё такой вопрос. У нас отключен механизм резервирования. Зачем эта проверка в принципе?
Проблема усугубляется. Клиенты, которых устраивает состав "старых" корзин не могут оформить заказ. Компонент bitrix:sale.order.ajax падает с такой же ошибкой. Но тут надо признать что у нас есть проверка на "платные" подарки и их удаление из корзины. Возможно как раз в этот момент ошибка и вылезает
Добрый день. Аналогичная проблема. Версия модуля sale 22.200.0.
Если у клиента корзина пустая, то добавление, удаление и очистка работают нормально.
Если у клиента корзина старая (до момента обновления), то при удавлении товаров вываливается эта же ошибка. Пробовал удалят товар через d7, CSaleBasket::Delete($id) и CSaleBasket::Update($id, ['QUANTITY' => 0])
Господа, давайте будем добрее. Знаете ответ - пишите ответ.
Человек спрашивал как очистить кеш компонента средствами API. Пример когда надо. Есть компонент списка фантиков. Кто-то в какой-то форме изменил один фантик или добавил новый. Но пока не помрет кеш компонента эти изменения или новый фантик в списке не появится.
В данном случаи отсылать на документацию бесполезно. Прошло уже 7 лет, а в документацию так и не добавили метод: CBitrixComponent::clearComponentCache($componentName, $siteId = "").
Пример использования: CBitrixComponent::clearComponentCache('bitrix:news.list').
Товар типа комплект, вывод состава комплекта, пересчет цены комплекта при изменении составляющих товаров, Товар типа комплект, вывод состава комплекта, пересчет цены комплекта при изменении составляющих товаров
Та же самая проблема. Главный модуль 18.0.4 Интернет-магазин 17.8.22 Торговый каталог 17.6.5 При изменении цены комплектующего из ПА не запускаются события изменения цены, соответственно не пересчитывается цена комплекта.
Вчера обновил соседний проект - да пришлось конвертировать магазин. Нашел одну маленькую багу с привязкой свойства заказа к службам доставки и способам оплаты... Подскажите, куда можно отправить баг-репорт?
А в целом обновление прошло удачно. Надеюсь, что и на основном проекте так все пройдет.
Евгений Жуков, добрый день! У меня БУС 16.0.1, уже голову сломал, ни как не могу получить для заказа примененный купон правил корзины. CSaleBasket::GetList() в поле DISCOUNT_COUPON пусто.
В БД проверял _sale_basket - тоже нет ни каких сведений. В _sale_discount_coupon просто проставляется дата применения и изменяется активность, связки на заказ не предусмотрено структурой...