Цена основана на пользовательских опциях продукта (ширина и высота) - PullRequest
2 голосов
/ 15 августа 2011

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

Например, я продаю коврики.Размеры ковриков могут быть иногда выбраны клиентом.Чтобы добиться этого, я создал 3 пользовательских параметра во всех настроенных продуктах: square_meter_price, ширина и высота.

После нажатия кнопки «добавить в корзину» клиент может выбрать ширину и высоту.После этого на странице оформления заказа / корзины покупатель в столбце «Название продукта» считывает правильное название продукта, ширину и высоту.Единственная мысль, которая здесь необходима, - это получить из нее правильную цену.

Я пытаюсь сделать это, переопределив метод Mage_Catalog_Model_Product_Type_Price :: getPrice ().Проблема в том, что я не могу получить значения ширины / высоты, введенные заказчиком, поэтому я могу выполнить математику.

Примечание: я уже пробовал перебирать $ product-> getOptions ().Мне удалось получить пользовательские параметры width / height, но я не смог получить значения, введенные клиентом.

Я также попытался $ product-> getCollection () -> getAttribute ('width')и $ product-> getAttribute ('width'), но я получил значение null.

Заранее спасибо.

class My_Catalog_Model_Product_Type_Price extends Mage_Catalog_Model_Product_Type_Price
{
    public function getPrice(Mage_Catalog_Model_Product $product)
    {

        // get the width provided by the user
        $width = $this->howToGet('width');

        // get the height provided by the user
        $height =  $this->howToGet('height');

        if ($width && $height) {
            return $width * $height * $product->getAttribute('square_meters_price');
        }

        return parent::getPrice($product);
    }

}

Ответы [ 2 ]

1 голос
/ 18 сентября 2011

Вы должны быть в состоянии сделать это, изменив функцию _applyOptionsPrice в Mage_Catalog_Model_Product_Type_Price. Эта функция перебирает опции, добавляя цены опционов одну за другой. Вместо добавления нужно просто умножить. Попробуйте что-то вроде этого:

//$finalPrice += $group->getOptionPrice($quoteItemOption->getValue(), $basePrice);
$finalPrice *= $group->getOptionPrice($quoteItemOption->getValue(), $finalPrice);
0 голосов
/ 15 августа 2011

http://www.oscprofessionals.com/demo/magento-customize-product-options/index.php/magento-customize-demo/magento-customized-option.html проверьте эту ссылку, она имеет необходимые функции.

Это требует модификации кода, так как magento не имеет функции продукта этого типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...