Order validation error при создании заказа в плагине Есть решение

1

Версия Вебасиста 4.0.3.1114

Версия Shop-Script 12.1.0.1207

Плагином создается заказ:

$shop_order = new shopOrder($orderData, ['ignore_count_validate' => true]);
try {
    $order_id = $shop_order->save();
} catch (waException $ex) {
    waLog::dump(['orderData' => $orderData, 'errors' => $shop_order->errors(), 'exception' => $ex->getMessage(), 'trace' => $ex->getTraceAsString()];
}
Получаю exception: Order validation error
в ошибках пишет, что не указал склад
'errors' => [
    'order' => [
      'items' => [
        [
          'stock_id' => 'Выберите склад',
        ],
      ],
    ],



хотя в orderData во всех items склад прописан (id настоящего склада, который реально существует). У товара нет остатков, но при использовании параметра ignore_count_validate это не должно быть проблемой.

Поскажите, в чем может быть дело ?

7 комментариев

  • +1
    Михаил Ушенин Михаил Ушенин 25 марта 2026 16:40 #

    Покажите, пожалуйста, ту часть значения переменной $orderData, которая относится к товарам и их количеству на складе.

    • +1
      Neooshka Neooshka 26 марта 2026 07:59 #
      'orderData' => [
          ...
          'items' => [
            [
              'product_id' => '2376',
              'sku_id' => '10713',
              'type' => 'product',
              'price' => 6948,
              'quantity' => 1,
              'goodsItemIndex' => 0,
              'currency' => 'RUB',
              'stock_id' => 3,
            ],
          ],
        ],

    • +1
      Neooshka Neooshka 26 марта 2026 09:02 #

      Добавлю еще информацию:
      Вебасист облачная, с коробочных версий пока не поступало ошибок.

      Пробовали добавить остаток на данный sku_id, но сообщение exception все то же самое

    • +1
      Михаил Ушенин Михаил Ушенин 26 марта 2026 09:48 #

      Если в карточке товара не заполнены остатки, то указывать какой-либо склад при создании заказа не нужно. Это и в веб-интерфейсе так: когда вы в бекенде добавляете в заказ товар, для него не предлагается выбор склада, если ни на одном складе для него не указаны остатки.

      • +1
        Neooshka Neooshka 26 марта 2026 12:54 #

        1. Но мы добавили остаток по этому товару на этот склад (он у него один в системе), и попробовали снова создать заказ - получили туже ошибку.

        2. Вы пишите, что если в карточке товара не заполнены остатки, то указывать какой-либо склад не нужно. Правильно ли я понимаю, что остатков вообще не должно быть нигде ? Если у пользователя есть два склада (id 1, 2), на одном остатки заполнены (1), на другом не заполнены (2). Если не указывать stock_id, будет order validation error -> Заполните склад ?

        • +1
          Михаил Ушенин Михаил Ушенин 26 марта 2026 14:33 #
          1. Не удалось получить такой результат: если в магазине настроен только 1 склад и для этого склада в свойствах товара заполнены остатки, то вызов показанного вами кода с указанием ID этого склада не приводит к возникновению ошибки, и заказ успешно создаётся.
          2. Насколько я вижу, в этом случае ошибка не возникает: если хотя бы для одного склада заполнены остатки, то вызов этого кода с указанием ID склада без заполненных остатков в данном товаре успешно создаёт заказ, а остатки не списываются (нечего списывать с указанного склада).
          • +1
            Neooshka Neooshka 26 марта 2026 15:29 #

            Добавил проверку: если нет записи остатков ни на одном складе, тогда параметр stock_id не передаем. Ошибка исчезла, заказ создан.
            Спасибо. Проблема решена.

            Добавить комментарий

            Чтобы добавить комментарий, зарегистрируйтесь или войдите