Я хочу изменить процентную функциональность пользовательской опции - PullRequest
4 голосов
/ 13 мая 2011

Я хочу реализовать такую ​​функциональность, если у нас есть пользовательский параметр со значением цены 10, а его тип цены - процент, а его базовая цена - 0, как я могу его реализовать.

Я хочу. Во-первых, из моего первого клиента выбирается Размер и цена добавляется в соответствии с размером, когда клиент выбирает цвет из выпадающего цвета, затем процентное значение должно быть рассчитано из первого выпадающего значения. Выберите

например

, если клиент выбирает

опцион A с ценой $ 20 и 20 $ добавляется к его цене, и я должен рассчитать цену, рассчитав значение падающего спада и цену, выбранную из первого выпадающего списка.

Ответы [ 3 ]

5 голосов
/ 14 мая 2011

Во-первых, позвольте мне попытаться перефразировать ваш вопрос:

На каждом шаге пользовательского параметра, как вы рассчитываете процент на основе цен из предыдущих шагов, а не на основе базовой цены продукта?Другими словами, как заставить Magento накапливать цены пользовательских опционов, а не суммировать их?

Пример продукта:

  1. Базовая цена: $ 0
  2. Размер A: +$ 20
  3. Цвет X: + 10%

Расчет Magento: 10% базовой цены 0 = 0. Общая стоимость 20.

Требуемый расчет: 10% отбазовая цена и размер цены = 10% от 20. Общая цена 22.

Решение

Для этого вам необходимо переопределить логику ценообразования пользовательских опционов Magento.Необходимо внести изменения в модель цены (для расчетов на стороне сервера), а также в блок и код шаблона (для расчетов Javascript на стороне клиента).

В модели цены Mage_Catalog_Model_Product_Type_Price измените расчет вфункция _applyOptionsPrice:

//$finalPrice += $group->getOptionPrice($quoteItemOption->getValue(), $basePrice);
$finalPrice += $group->getOptionPrice($quoteItemOption->getValue(), $finalPrice);

В Mage_Catalog_Block_Product_View_Options функция getJsonConfig вычисляет процент от базовой цены перед возвратом ее в шаблон.Измените это, чтобы получить фактическое процентное значение, возвращаемое в шаблон:

//$_tmpPriceValues[$value->getId()] = Mage::helper('core')->currency($value->getPrice(true), false, false);
// Add fixed price or percentage (don't calculate percentage yet, done by JS live instead)
$_tmpPriceValues[$value->getId()]['pricing_value'] = ($value->getPriceType() != 'percent') ? Mage::helper('core')->currency($value->getPrice(true), false, false) : $value->getPrice();
$_tmpPriceValues[$value->getId()]['is_percentage'] = ($value->getPriceType() == 'percent');

Теперь измените Javascript в template/catalog/product/view/options.phtml, чтобы накапливать процент на лету, накопительно.В классе Javascript Product.Options добавьте функцию для расчета:

getPriceToAdd : function(optionvalue, oldprice) {
    var value = parseFloat(optionvalue['pricing_value']);
    if (optionvalue['is_percentage']) {
        return Math.round(value*oldprice)/100;
    } else {
        return value;
    }
}

и измените функцию reloadPrice, чтобы использовать новые вычисления:

//price += parseFloat(config[optionId][element.getValue()]);
price += opConfig.getPriceToAdd(config[optionId][element.getValue()], price);
...
//price += parseFloat(this.config[optionId]);
price += opConfig.getPriceToAdd(this.config[optionId], price);
...
//price += parseFloat(this.config[optionId][selectOption.value]);
price += opConfig.getPriceToAdd(this.config[optionId][selectOption.value], price);
...
//price += parseFloat(this.config[optionId]);
price += opConfig.getPriceToAdd(this.config[optionId], price);

Как обычно, донаредактировать основные файлы напрямую.Используйте местные переписывает.Обратите внимание, что ваша новая ценовая модель должна быть указана в конфигурации для каждого соответствующего типа продукта:

<config>
  <global>
    <catalog>
      <product>
        <type>
          <simple>
            <price_model>mymodule/product_type_simple_price</price_model>
          </simple>
          ...
        </type>
      </product>
    </catalog>
  </global>
</config>
1 голос
/ 05 марта 2014

С обновлением Magento обновлена ​​строка для изменения в _applyOptionsPrice:

из: $ finalPrice + = $ group-> getOptionPrice ($ quoteItemOption-> getValue (), $ finalPrice);

to: $ finalPrice + = $ group-> getOptionPrice ($ confItemOption-> getValue (), $ finalPrice);

1 голос
/ 13 мая 2011

Мне не ясен ваш вопрос, и я думаю, что вам нужен настраиваемый вариант продукта ...

См. Этот учебник http://www.magentocommerce.com/knowledge-base/entry/tutorial-creating-a-configurable-product/

, и пример вывода будет как ниже

sample configurable product

...