2015-12-07 2 views
0

Можно ли установить способ доставки по фиксированной ставке с двумя разными ценами для двух разных групп клиентов?Плата за единую ставку для разных групп клиентов?

Входит в систему, но не смог найти его, и почему это не так просто, как можно было бы предположить, что это нужно настроить?

ответ

0

Вы можете создать эту опцию, скопировав файл Flatrate core/Mage/Shipping/Model/Carrier/Flatrate.php в локальный пул кодов local/Mage/Shipping/Model/Carrier/Flatrate.php.

необходимо изменить код в collectRates функции.

$result = Mage::getModel('shipping/rate_result'); 
if ($this->getConfigData('type') == 'O') { // per order 
    $shippingPrice = $this->getConfigData('price'); 
} elseif ($this->getConfigData('type') == 'I') { // per item 
    $shippingPrice = ($request->getPackageQty() * $this->getConfigData('price')) - ($this->getFreeBoxes() * $this->getConfigData('price')); 
} else { 
    $shippingPrice = false; 
} 

Заменить приведенный выше код, используя приведенный ниже код:

if(!Mage::getSingleton('customer/session')->isLoggedIn()){ 
    //not logged in 
    $flatRatePrice = $this->getConfigData('price'); 
}else{ 
    // logged in 
    $groupId = Mage::getSingleton('customer/session')->getCustomerGroupId(); 
    $group = Mage::getSingleton('customer/group')->load($groupId)->getData('customer_group_code'); 
    $group = strtolower($group); 
    switch ($group) { 
     case 'general': //Set price for different customer group 
      $flatRatePrice = 10;  
      break; 
     case 'retailer': 
      $flatRatePrice = 20;  
      break; 
     case 'wholesale': 
      $flatRatePrice = 30;  
      break; 
     default: 
      $flatRatePrice = $this->getConfigData('price'); 
    } 
} 

$result = Mage::getModel('shipping/rate_result'); 
if ($this->getConfigData('type') == 'O') { // per order 
    $shippingPrice = $flatRatePrice; 
} elseif ($this->getConfigData('type') == 'I') { // per item 
    $shippingPrice = ($request->getPackageQty() * $flatRatePrice) - ($this->getFreeBoxes() * $flatRatePrice); 
} else { 
    $shippingPrice = false; 
} 
+0

Спасибо! Я хорошо знаком с PHP-кодом, но совершенно новым для Magento. Считается ли это хорошей практикой, чтобы изменить (хотя мы скопируем копию на локальный), как это? Могли ли они спуститься вниз, делая это так? – KeepSilence

+0

Мы можем скопировать основной файл в локальный пул кодов для изменения пользовательских требований. когда мы обновляем magento, нам также необходимо обновить основные файлы, которые находятся в локальном пуле кодов. Если вы не хотите этого делать, вы можете переопределить модель Flatrate, создав собственный модуль с теми же изменениями. –

+0

Хорошо, это похоже на прекрасную возможность для занятий навыками Magento Dev. :) Спасибо за помощь! – KeepSilence

 Смежные вопросы

  • Нет связанных вопросов^_^