Я знаю, что есть куча ответов и вопрос с аналогичной проблемой, но я сообщу в начале. Я не спрашиваю о моем собственном методе доставки, но обо всех доступных методах.Изменить цену на методы доставки на лету
Я нашел код, который я использовал для этого, странно: он работал некоторое время - не знаю, что я изменил, что он остановился.
class Oversizeshipping_Model_Observer
extends Varien_Event_Observer
{
public function appendPriceToShipping($observer)
{
$address = $observer->getQuoteAddress();
#Mage::log($address->getAddressType(), Zend_Log::DEBUG, 'event.log', true);
if($address->getAddressType() === $address::TYPE_SHIPPING){
$price = 0;
$resource = Mage::getResourceModel('catalog/product');
foreach($address->getAllItems() as $item) {
try {
$oversizePrice = $resource->getAttributeRawValue($item->getProduct()->getId(), 'oversize_shipping_price', $item->getStoreId());
} catch(Exception $e) {
$oversizePrice = 0;
}
if($oversizePrice > 0) {
$price += $oversizePrice;
}
}
$address->setShippingAmount($price);
$address->setBaseShippingAmount($price);
$rates = $address->collectShippingRates()
->getGroupedAllShippingRates();
foreach ($rates as $carrier) {
foreach ($carrier as $rate) {
$rate->setPrice((float)$rate->getPrice()+$price);
$rate->save();
}
}
$address->save();
}
}
}
Этот метод наблюдатель обстрелял sales_quote_address_collect_totals_after. Как я уже говорил, он работал (добавлял цену даже на бесплатные методы доставки), но он прекратился.
Может кто-нибудь указать мне опечатку, пропущенный вызов метода или smth?
версии и история изменений для победы – arkonautom
Varien_Event_Observer не имеет ничего общего с этим. Может быть, я буду ждать кого-то, кто знает пурпурный, но спасибо за ваши усилия. – golaod
Извините, мое плохое. Не заметил тег magento, хотя это был какой-то общий язык. – arkonautom