Magento:以编程方式设置自定义送货方式

时间:2013-12-26 12:59:41

标签: php magento shipping

我对Magento很新,并且在尝试以编程方式设置自定义送货方式时遇到问题。我正在将一个xml从第三方转换成一个订单,其他一切(我到目前为止工作过)工作正常。此外,我在“以编程方式”拼写时遇到问题,但我不会要求你提供帮助。

我设置了自定义送货方式,如下所示: 要激活运输模块 应用程序的/ etc /模块/ Extension_Shipping.xml

<?xml version=
"1.0"?>
<config>
    <modules>
        <Extension_Shipping>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Shipping/>
            </depends>
        </Extension_Shipping>
    </modules>
</config>

然后配置它 应用程序/代码/本地/扩展/运输的/ etc / config.xml中

<?xml version=
"1.0" ?>
<config>
    <modules>
        <Extension_Shipping>
            <version>0.1.0</version>
        </Extension_Shipping>
    </modules>
    <global>
        <models>
            <extension_shipping>
                <class>Extension_Shipping_Model</class>
            </extension_shipping>
        </models>
    </global>
    <default>
        <carriers>
            <extension_myrate>
                <active>1</active>
                <model>extension_shipping/carrier_myrate</model>
                <title>Extension Shipping</title>
                <name>Default Rate</name>
            </extension_myrate>
        </carriers>
    </default>
</config>

然后添加类 应用程序/代码/本地/扩展/运输/型号/运营商/ MyRate.php

<?php

class Extension_Shipping_Model_Carrier_MyRate
    extends Mage_Shipping_Model_Carrier_Abstract
    implements Mage_Shipping_Model_Carrier_Interface
{
    protected $_code = 'extension_myrate';
    protected $_isFixed = true;

    public function collectRates(Mage_Shipping_Model_Rate_Request 
$request)
    {

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

        $result = Mage::getModel('shipping/rate_result');

        $method = Mage::getModel('shipping/rate_result_method');
        $method->setCarrier('extension_myrate');
        $method->setCarrierTitle($this->getConfigData('title'));
        $method->setMethod('extension_myrate');
        $method->setMethodTitle($this->getConfigData('name'));
        $method->setPrice(5);
        $method->setCost(2);

        $result->append($method);

        return $result;
    }

    public function getAllowedMethods()
    {
        return array('extension_myrate' => $this->getConfigData('name'));
    }
}

基本上我跟着http://www.magentotricks.com/creating-a-customer-magento-shipping-method/

我认为这一切都运行正常,因为运送方法现在显示在结帐屏幕中,并且可以由客户或管理员“创建新订单”设置。但是,我无法以编程方式设置它。

在我的控制器中,我正在尝试使用代码

设置送货方式
$shippingAddress = $quote->getShippingAddress()->addData($addressData);
$shippingAddress->setCollectShippingRates(true)->collectShippingRates()
                ->setShippingMethod('extension_myrate')
                ->setPaymentMethod('checkmo');

为了增加我的困惑,它曾经工作过一次。但是只有一次测试订单。将“setShippingMethod”更改为“freeshipping_freeshipping”或“flatrate_flatrate”会使其正确更新运费。因为这个,因为我是新手,但仍然遇到文件结构问题,我猜我的问题是setShippingMethod('extension_myrate'),但我不完全确定。任何建议都会有所帮助和赞赏。

0 个答案:

没有答案