Добавьте налог на продукт в качестве обычной цены продукта для способа доставки


Вот пример с объяснением проблемы:

  1. В магазине Magento есть товар с базовой ценой 75 долларов
  2. Этот продукт облагается налогом (включен в цену по динамическому налогу) в размере 10 долларов США
  3. Когда клиент видит товар и добавляет его в корзину (и при оформлении заказа), цена товара составляет 85 долларов США (базовая цена + налог)
  4. В магазине Magento установлена матрица ставок Webshopapps (бесплатно)
  5. Матричные тарифы Webshopapps, настроенные для предоставления бесплатной доставки для клиентов когда товар в корзине стоит 80 долларов или больше.
  6. Когда клиент идет оформлять заказ, он не может воспользоваться бесплатной доставкой, потому что реальная цена товара (без налогов) составляет 75 долларов США.

Что мне нужно получить:

Когда клиент переходит к оформлению заказа, он должен получить бесплатную доставку этого товара. Это означает, что стоимость способа доставки (перевозчик матричных тарифов) должна рассчитываться не по базовой цене продукта, а по базовой цене продукта + налог, например: базовая цена продукта составляет 75 долларов США, а налог составляет 10 долларов США, таким образом, перевозчик должен используйте цену 85 долларов, а не 75 долларов.

Как я могу это сделать?

Author: Teja Bhagavan Kollepara, 2015-06-19

1 answers

Я нашел решение!

В модели перевозчика (webshopapps_matrixrate_model_carrier_matrixrate) я изменил значение $request->getpackagevalue() на сумму общих общих цен. Берегись! В цитате могут быть дубликаты. Вот код решения:

$grandTotal = 0;
$ids = array(); //$request->getAllItems() has duplicates, we need to remove them
foreach ($request->getAllItems() as $item){
    if(!isset($ids[$item->getQuote()->getEntityId()]) || empty($ids[$item->getQuote()->getEntityId()]))
    {
        $ids[$item->getQuote()->getEntityId()] = true;
        $grandTotal = $grandTotal + $item->getQuote()->getGrandTotal();
    }
}

if ($this->getConfigData('enable_free_shipping_threshold') && 
    $this->getConfigData('free_shipping_threshold')!='' && 
    $this->getConfigData('free_shipping_threshold')>0 &&
    $grandTotal>$this->getConfigData('free_shipping_threshold')) { //here i changed $request->getPackageValue() to $grandTotal
        $freeShipping=true;
}
 2
Author: Bruce Tucker, 2015-06-19 11:47:29