Magento: Как сделать стоимость доставки зависящей от суммы и группы пользователя

Пример задачи: для обычного пользователя в Киеве сделать доставку 50 грн, для пользователя в других городах — 200 грн, для оптовика при сумме заказа до 500 грн — 40 грн, при сумме заказа выше — 20 грн. *бесплатно было бы легче тк есть отдельный бесплатный шиппинг,)))

Начнем с отличного расширение для Магенты, которое применяется как надстройка над доставками. После установки у Вас появится еще одна вкладка, и, главное, мегатаблица shipping_matrixrate — где прописаны страна / регион / от и до стоимости заказа / стоимость доставки

magento-shipping

И есть одно только но — как часто бывает с бесплатными расширениями — группы то тут нет. Быстрый, но работающий хак — сделать группу псевдорегионом

class Webshopapps_Matrixrate_Model_Carrier_Matrixrate {
    ...
    public function getRate(Mage_Shipping_Model_Rate_Request $request)
    {
 
	$group = Mage::getSingleton('customer/session')->getCustomerGroupId();
	if ($group) {
		$request->setDestRegionId(888);
	}
        return Mage::getResourceModel('matrixrate_shipping/carrier_matrixrate')->getNewRate($request,$this->getConfigFlag('zip_range'));
    }
}

Более универсальный вариант — но чуть подольше в реализации как каждый «безкостыльный» метод против костыля — это ввести реальное поле группы и его добавить в условия

$request->setGroupId(Mage::getSingleton('customer/session')->getCustomerGroupId());
...
$select->where(
	$read->quoteInto(" (dest_country_id=? ", $request->getDestCountryId()).
	$read->quoteInto(" AND dest_region_id=? ", $request->getDestRegionId()).
	$read->quoteInto(" AND group_id=? ", $request->getGroupId()).
	$read->quoteInto(" AND STRCMP(LOWER(dest_city),LOWER(?)) = 0  ", $request->getDestCity()).
	$zipSearchString
);

Оставить комментарий

XHTML: Вы можете использовать такие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre lang="" line="" escaped="" cssfile="">