Генерация артикулов

waResearchLab

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

$values = array(
    array('value' => 'abc', 'price' => 1234),
    array('value' => 'def', 'price' => 4321),
);
$fselectable['code_feature'] = array(
    'values' => $values,
    'stock' => 100
);
$product->features_selectable = $fselectable;
$product->save();

В итоге артикулы генерируются, правильные значения характеристик проставляются, количество тоже верное, а цена 0.

Где ошибаюсь?

2 декабря 2016
  • waResearchLab 20 декабря 2016 12:43

    Вопрос все еще актуален....

  • BNP (Дмитрий) 20 декабря 2016 19:21

    А там primary_price случаем не нужно так же добавлять?

    А, ну и возможно base_price_selectable для $product

  • waResearchLab 21 декабря 2016 10:34

    Не знаю, Дим... На пример из комментариев в классе ориентировался.

  • Николай Иванов 21 декабря 2016 11:59

    Если я всё правильно понял, то цепочка такая.
    product->save->shopProductFeaturesSelectableModel->save->setData
    в setData

    if (!$product->id || !$this->arrayEq($exists, $selected)) {
        //тут создание нового товара
    } else {
                    //Or just update prices & stock
                    $skus = $product->skus;
                    $prices = array(
                        'price'          => $product->base_price_selectable,
                        'compare_price'  => $product->compare_price_selectable,
                        'purchase_price' => $product->purchase_price_selectable,
                    );
    
                    foreach ($skus as &$sku) {
                        if (!empty($sku['virtual'])) {
                            $sku = array_merge($sku, $prices);
                        }
                        unset($sku);
                    }
                    $product->skus = $skus;
                }

    Если генерация у существующего товара, то видимо где-то срабатывает условие виртуальности артикула и происходит замещение цены из $product->base_price_selectable через $sku = array_merge($sku, $prices);

    если товар новый, то смотреть что происходит в блоке создания товара
    а там - $sku_map = $this->generateSku($product, $selected, $data, $exists);



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