new shopOrder Есть решение

Что я делаю не так?

$orderData = array(
  'currency' => 'RUB',
  'customer' => array(
    'firstname' => 'Заказ Тестовый',
    'address.shipping' => array(
      'country' => 'rus',
      'street' => 'г Москва, Пресненский р-н, ул Тестовская, д 1А, кв. 1',
    ),
  ),
  'items' => array(
    0 => array(
      'product_id' => '349',
      'sku_id' => '431',
      'type' => 'product',
      'price' => 25899,
      'quantity' => 1,
      'currency' => 'RUB',
    ),
    1 => array(
      'product_id' => '349',
      'sku_id' => '431',
      'type' => 'product',
      'price' => 25899,
      'quantity' => 1,
      'currency' => 'RUB',
    ),
  ),
  'params' => array(
    'shipping_currency' => 'RUB',
    'shipping_currency_rate' => '1',
  ),
);
$order = new shopOrder($orderData);
$order->save();

Получаю предупреждения

Notice: Undefined index: currency in /public_html/wa-apps/shop/lib/workflow/shopWorkflowCreateAction.class.php on line 255

Notice: Undefined index: currency in /public_html/wa-apps/shop/lib/workflow/shopWorkflowCreateAction.class.php on line 256

Notice: Undefined index: currency in /public_html/wa-apps/shop/lib/workflow/shopWorkflowCreateAction.class.php on line 258


И что же в $item?

array(
  0 => array(
    'type' => 'product',
    'service_id' => NULL,
    'service_variant_id' => NULL,
    '_index' => '0',
    'price' => '15745',
    'quantity' => 1,
    'product_id' => 352,
    'sku_id' => 441,
    'stock_id' => NULL,
    'name' => 'Двухколесное моноколесо Airwheel Q3 (340WH BLACK)',
    'purchase_price' => '0',
    'sku_code' => 'мм-441',
    'sku_name' => '340WH BLACK',
    'sku' => array(
      'id' => '441',
      'product_id' => '352',
      'sku' => 'мм-441',
      'sort' => '6',
      'name' => '340WH BLACK',
      'image_id' => '797',
      'price' => '31490.0000',
      'primary_price' => '31490.0000',
      'purchase_price' => '0.0000',
      'compare_price' => '0.0000',
      'count' => '-2',
      'available' => '1',
      'dimension_id' => NULL,
      'file_name' => '',
      'file_size' => '0',
      'file_description' => '',
      'virtual' => '0',
    ),
    'product' => array(
      'id' => '352',
      'name' => 'Двухколесное моноколесо Airwheel Q3',
      'summary' => 'Моноколесо с максимальной устойчивостью',
      'meta_title' => '',
      'meta_keywords' => '',
      'meta_description' => '',
      'description' => '<p><span style="color: rgb(170, 0, 0);"><strong>- Доставка Бесплатно </strong><strong>Сегодня!</strong><strong> 
</strong><strong><strong>- Скидки, Подарки на 1000 руб.
</strong></strong></span><strong><span style="color: rgb(170, 0, 0);">- Курьер принимает карты!*</span></strong><strong> </strong><strong> </strong>   </p>
<p>*При наличии свободных курьеров, Москва и Санкт-Петербург МКАД (КАД)+30 км. Оплата курьеру Visa(Mastercard) без комиссии или наличные.</p>
<p>Вы можете <strong>купить Моноколесо Airwheel Q3 </strong>и получить официальную гарантию 12 месяцев</p>
<h2>Описание Моноколесо Airwheel Q3</h2>
<p>Максимальная скорость - 18 км/ч</p>
<p>Максимальная нагрузка - 120 кг.</p>
<p>Вес - 13,7 кг.</p>
<p>Расстояние на одном заряде - 18-23 км.</p>
<p>Зарядка аккумулятора емкостью 130 Вт*ч – 90 минут</p>
<p>Зарядка аккумулятора емкостью 170 Вт*ч – 120 минут</p>
<p>130 Вт*ч приблизительно 90 мин (80% зарядки за 60 мин)</p>
<p>170 Вт*ч приблизительно 120 мин (80% зарядки за 90 мин)</p>
<p>260 Вт*ч приблизительно 180 мин (80% зарядки за 120 мин)</p>
<p>Airwheel Q3 – флагманская модель моноколеса, со сдвоенной колесной конструкцией. Такая конструкция обеспечивает максимальную устойчивость и безопасность во время катания. Модель выполнена из высококачественных материалов, устойчивых к ударам и царапинам, а также имеет защиту от попадания пыли влаги. Удобная конструкция делает Airwheel Q3 максимально удобной для хранения и транспортировки. Модель станет идеальным выбором для тех, кто хочет получить максимум от использования моноколеса</p>',
      'contact_id' => '1',
      'create_datetime' => '2017-05-05 15:55:18',
      'edit_datetime' => '2018-05-12 11:51:27',
      'status' => '1',
      'type_id' => '8',
      'image_id' => '797',
      'image_filename' => '',
      'video_url' => NULL,
      'sku_id' => '437',
      'ext' => 'jpg',
      'url' => 'dvukhkolesnoe-monokoleso-airwheel-q3',
      'rating' => '0.00',
      'price' => '24990.0000',
      'compare_price' => '0.0000',
      'currency' => 'RUB',
      'min_price' => '24990.0000',
      'max_price' => '31490.0000',
      'tax_id' => '0',
      'count' => '0',
      'cross_selling' => NULL,
      'upselling' => NULL,
      'rating_count' => '0',
      'total_sales' => '31490.0000',
      'category_id' => '55',
      'badge' => '<div class="badge" style="background-color: #ffb624;">Бесплатная доставка</div>',
      'sku_type' => '0',
      'base_price_selectable' => '0.0000',
      'compare_price_selectable' => '0.0000',
      'purchase_price_selectable' => '0.0000',
      'sku_count' => '6',
      'url_crop_small' => '/wa-data/public/shop/products/52/03/352/images/797/797.48x48.jpg',
    ),
    'tax_id' => 0,
    'total_discount' => 0,
  ),
)

То есть предположительно проверять нужно $item['product']['currency'] или я что-то делаю не так )

2 ответа

  • 2
    Леонид Вакуленко Webasyst 25 сентября 2019 10:23 # Решение

    Баг! В этом месте должна быть проверка на существование ключа, что-то вроде

    foreach ($data['items'] as &$item) {
        $item['currency'] = ifempty($item, 'currency', $currency);     //    <<<< this
        if ($currency != $item['currency']) {

    Исправим следующим релизом.

  • 1
    Михаил Ушенин Webasyst 2 октября 2019 09:35 #

    Мы выпустили обновление Shop-Script с исправлением этой ошибки. Обновление можно установить в «Инсталлере».

    Проверьте, пожалуйста. Сообщите нам, если проблема сохранилась.

Добавить ответ

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