Два пользовательских параметра в сочетании: Tier Price не работает

11

Я устанавливаю продукты и уровни цен в Magento, но я заметил, что в случае простого продукта с пользовательскими параметрами (например, синяя футболка, красная футболка) цена уровня не будет работать, если мы их объединим чтобы достичь количества.

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

Я прочитал несколько ответов на Stack Overflow и форумах Magento, и они рекомендуют создавать настраиваемые продукты. Однако это может быть довольно сложно, если в магазине много товаров или много вариантов.

Знаете ли вы какой-нибудь обходной путь для применения цены уровня - с помощью комбинации вариаций?

арахис
источник
Вы можете уточнить, какой тип синей футболки и красной футболки? Являются ли они отдельными продуктами без связи между ними?
Кристоф Ферребуф
Это будут пользовательские параметры («синий», «красный») простого продукта «футболка». На Magento в настоящее время, если Tier Price был, скажем, «10 или больше, вы получаете скидку», он работал бы при покупке 10 Reds или 10 Blues, но не при покупке 5 + 5 ...
Peanuts
Как magento может знать, что эти два продукта связаны между собой?
Кристоф Ферребуф
Ну, в моем примере есть только 1 продукт (простой продукт), который имеет две пользовательские опции (варианты): синий и красный. Magento не рассчитывает цену уровня, когда вы складываете две опции одного и того же простого продукта (здесь речь идет о простых продуктах, а не о конфигурируемых продуктах). Для конфигурируемых продуктов есть расширение, которое позволяет объединять цены уровня ( magentocommerce.com/magento-connect/… ), но, опять же, это не мой случай, у нас слишком много вариантов для создания продукта для каждой опции).
Арахис
Для этого вам понадобится специальный модуль. Или, если бы я был вами, я бы подумал об использовании настраиваемых продуктов с упомянутым вами модулем ценовой категории.
Пай

Ответы:

11

Проблема здесь в том, что Magento рассматривает товары с различными пользовательскими настройками как разные позиции в корзине. Таким образом, кол-во для двух вариантов пользовательских опций никогда не складывается, чтобы можно было квалифицировать элемент квоты для определенного уровня многоуровневой цены.

Теперь выполнение этой работы потребует индивидуальной работы. Я могу дать вам подсказки о том, где вы можете посмотреть, как это работает в коде.

Проверять, выписываться Mage_Sales_Model_Quote_Address_Total_Subtotal::collect()

В этом методе вам нужно будет перебрать все позиции цитаты и связать многоуровневое количество, применимое к каждой позиции цитаты. Допустим, у вас есть два варианта A и B с количеством 1 и 3. Вы перебираете элементы котировки и делаете что-то вроде:

$quoteItemA->setTieredQty(1+3);
$quoteItemB->setTieredQty(1+3); //ofcourse 1 and 3 are dynamic here

Затем в Mage_Sales_Model_Quote_Address_Total_Subtotal::_initItem

вместо использования: $finalPrice = $product->getFinalPrice($quoteItem->getQty()); //on line 115 use:

$finalPrice = $product->getFinalPrice($quoteItem->getTieredQty());

Это включает в себя пользовательскую работу, но подход, который я перечисляю, должен работать с некоторыми изменениями на лету, когда вы работаете над этим.

Парас Суд
источник
4

Я могу подтвердить, это работает

        /* hard coded - start */ 
        $cart = Mage::getModel('checkout/cart')->getQuote();
        $total_qty = 0;
        foreach ($cart->getAllItems() as $item2) {
          if ($item2->getProductId() == $quoteItem->getProductId()) $total_qty+= $item2->getQty();    
        }
        $finalPrice = $product->getFinalPrice($total_qty);
        // $finalPrice = $product->getFinalPrice($quoteItem->getQty());
        /* hard coded - end */ 
user7286399
источник