Новый базовый способ доставки Magento не отображается во внешнем интерфейсе

Я пытаюсь создать новый способ доставки. Этот метод позволяет пользователям СОБИРАТЬ предметы с определенного склада. Так что на самом деле не так уж много вовлечено.

Я следил за парой инструктажей в Интернете, и мой модуль был собран и установлен. Он работает на бэкэнде, я могу включить его и установить различные значения.

Когда я использую внешний интерфейс... или даже использую следующий код:

Mage::getSingleton('shipping/config')->getAllCarriers();

Я не получаю выход имени нового способа доставки.

Сообщение, которое я получаю при оформлении заказа:

К сожалению, в настоящее время нет предложений по этому заказу.

Хотя у меня включены другие способы доставки.


У меня в пользовании другое расширение (по поводу запасов, находящихся на нескольких складах). Как часть этого расширения, в нем перечислены доступные варианты доставки... так что я могу назначить определенные параметры для определенного склада. Мой новый способ доставки не указан в списке вариантов доставки.


У меня вроде есть все необходимое. Мое другое расширение не улавливает метод... поэтому, должно быть, что-то упущено. Кроме того, учитывая, что у меня нет вариантов доставки в интерфейсе ... сбивает с толку. Был в этом какое-то время... отладка :(

любая помощь высоко ценится.


person ShaunTheSheep    schedule 22.05.2012    source источник
comment
Слишком много информации для обсуждения настройки нового модуля. Если у кого-то есть какие-либо вопросы, я с радостью пройду через этот процесс, и то, что у меня есть сейчас... постараюсь сузить круг моей проблемы.   -  person ShaunTheSheep    schedule 22.05.2012


Ответы (1)


Я создавал сложный способ доставки... а не копию метода бесплатной доставки. Оказывается, мне действительно нужна была копия метода бесплатной доставки, что облегчило мою жизнь... Это было проще, чем я думал.

Не хочу публиковать весь мой код (вам также понадобятся файлы config.xml и system.xml), но вот мой файл логики модели носителя:

class Myco_Clickcollectshipping_Model_Carrier_Mymethod extends Mage_Shipping_Model_Carrier_Abstract {

protected $_code = 'mymethod ';

public function collectRates(Mage_Shipping_Model_Rate_Request $request)
{

    if (!$this->getConfigFlag('active')) {
        return false;
    }

    $freeBoxes = 0;
    if ($request->getAllItems()) {
        foreach ($request->getAllItems() as $item) {
            if ($item->getFreeShipping() && !$item->getProduct()->isVirtual()) {
                $freeBoxes+=$item->getQty();
            }
        }
    }

    $this->setFreeBoxes($freeBoxes);

    $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;
    }

    $shippingPrice = $this->getFinalPriceWithHandlingFee($shippingPrice);

    if ($shippingPrice !== false) {
        $method = Mage::getModel('shipping/rate_result_method');

        $method->setCarrier('mymethod ');
        $method->setCarrierTitle($this->getConfigData('title'));

        $method->setMethod('mymethod ');
        $method->setMethodTitle($this->getConfigData('name'));

        if ($request->getFreeShipping() === true || $request->getPackageQty() == $this->getFreeBoxes()) {
            $shippingPrice = '0.00';
        }

        $method->setPrice($shippingPrice);
        $method->setCost($shippingPrice);

        $result->append($method);

    }

    return $result;
}

public function getAllowedMethods()
{
    return array('mymethod ' => $this->getConfigData('name'));
}
}
person ShaunTheSheep    schedule 31.05.2012