Изменяемая цена на shopmodxbox

Добрый день. В магазине есть возможность задавать размеры товара и от этого зависит его цена. Для занесения в корзину правильной цены я слегка изменил процессор /core/billing/processors/mgr/orders/products/create: public function beforeSet(){

    ...

    // Устанавливаем значение цены и валюты

    // В дальнейшем в этом месте можно будет вклиниться с переопределением цен

    $this->object->fromArray(array(

        'price' => $this->getPrice($product),

        'currency_id' => $product->get('sm_currency'),    

    ));

    return parent::beforeSet();

}



protected function getPrice($product){

    return 1;

    //в рабочей версии предполагается на основании определенных данных

    // сформировать и вернуть цену. для теста пока возвращаю 1.

} Проблема в том, что почему-то в корзину все равно попадает цена sm_price. Как такое может быть? Может, я что-то упустил?

Смотри, ты устанавливаешь свою цену, но потом вызываешь parent::beforeSet(). А там: https://github.com/Fi1osof/ShopModxBox/blob/master/core/components/billing/processors/mgr/orders/products/create.class.php#L66. То есть опять устанавливается цена. Или вызывает после parent::beforeSet(), или в beforeSave() переноси.

так я в нем и подправил. class modMgrOrdersProductsCreateProcessor extends modObjectCreateProcessor{

... Согласен, не совсем правильно лезть в то, что есть, но я для теста, по-быстрому вписал. Кстати, подумай о подобной доработке - значение цены не брать из sm_price напрямую, а в метод вынести. Тогда при наследовании достаточно getPrice (например) переопределить - и цена по-другому считаться будет.

да, я в топике написал
billing/mgr/orders/products/create, а надо было /core/billing/processors/mgr/orders/products/create :)

В итоге, решился вопрос или нет? На вид у тебя вроде все ОК

Согласен, не совсем правильно лезть в то, что есть, но я для теста, по-быстрому вписал. Да в целом это все ОК. Как я и говорил много раз - это заготовка для индивидуальных разработок. Разворачиваешь, быстро пробуешь что-то свое сделать, если не растет кокс - сбрасываешь и экономишь время. Если растет - то развиваешь как свой проект индивидуальный.

нет, и не могу понять. вроде верно все - а в базe sm_price все равно пишется

Блин, проверь все последовательно, в каждом процессоре от самого основного, выведи значения перед сохранением. Должно все работать, просто где-то у тебя скорее всего логическая ошибка.

Перечитай еще раз внимательно этот топик.

Нашел :) у меня из формы цена передавалась(!). Вредно много по ночам сидеть. все, теперь работает.

Блин, с фронта подобные данные передавать - злое зло. Но это многое объясняет:) Кстати, спасибо за багрепорт! Я конечно очень стараюсь следить за секурностью, но здесь вот пропустил возможность переопределить цену товара извне. Вот багфикс. Добавь себе в код, а новая сборка выйдет уже с этим багфиксом. И сейчас топик краткий напишу.

Блин, с фронта подобные данные передавать - злое зло да сам понимаю. ведь любую цену подставить можно :)

ведь любую цену подставить можно :) Уже нет:)