1

情報: マジェント 1.7.0.2 CE

cron スケジュールによって外部フィードから注文をインポートするためのモジュールを作成しました。カスタム キャリアも作成します。

すべてうまくいきますが、送料を設定できません...これがコードです:

        $shippingAddress = $quote->getShippingAddress()->addData($addressData);

        $shippingAddress->setCollectShippingRates(true)->collectShippingRates()
                ->setShippingMethod('customname_customname')
                ->setShippingAmount('10')
                ->setBaseShippingAmount('10');

        $quote->collectTotals();    
        $quote->save();

$addressData には顧客情報が含まれます

別の方法を試しましたが、送料を設定できません。ヘルプ!

カスタム キャリア コー​​ドは次のとおりです。

    protected $_code = 'customname';  

    /** 
    * Collect rates for this shipping method based on information in $request 
    * 
    * @param Mage_Shipping_Model_Rate_Request $data 
    * @return Mage_Shipping_Model_Rate_Result 
    */  
    public function collectRates(Mage_Shipping_Model_Rate_Request $request){  
        $result = Mage::getModel('shipping/rate_result');  
        $method = Mage::getModel('shipping/rate_result_method');  
        $method->setCarrier($this->_code);  
        $method->setCarrierTitle($this->getConfigData('title'));
        $method->setMethod($this->_code);  
        $method->setMethodTitle($this->getConfigData('name'));
        $method->setPrice('0.00');
    $method->setCost('0.00');
        $result->append($method);  
        return $result;  
    }  

    /**
     * Get allowed shipping methods
     *
     * @return array
     */
    public function getAllowedMethods()
    {
        return array($this->_code=>$this->getConfigData('name'));
    }
}  
4

4 に答える 4

2

私は別の解決策を使用して「うまくいく」はずです(そしてそれを総計に追加します):

削除する:

->setShippingAmount('10')
->setBaseShippingAmount('10');

次の行を追加注文スクリプトに追加します。

Mage::register('shipping_cost', $shippingPrice); 

そして、配送方法の次の行を置き換えます。

$method->setPrice('0.00');
$method->setCost('0.00');

と:

if(Mage::registry('shipping_cost')){
    $method->setPrice(Mage::registry('shipping_cost'));
    $method->setCost(Mage::registry('shipping_cost'));
} else {
    $method->setPrice('0.00');
    $method->setCost('0.00');
}

PS Magento 1.6.1でテストしました。PS->setShippingAmount('10')注文からobjも削除する必要がある場合があります。そうしないと、税金が2回追加されます

于 2013-08-20T22:30:07.180 に答える
1

配送モジュールの collectRates(Mage_Shipping_Model_Rate_Request $request) メソッドを確認してください。送料合計がどのように初期化されているかを確認してください。

送料合計が更新され、このメソッドの $price 変数に保存されていることを確認してください。

    $handling = Mage::getStoreConfig('carriers/'.$this->_code.'/handling');
    $result = Mage::getModel('shipping/rate_result');
    $show = true;
    if($show){

        $method = Mage::getModel('shipping/rate_result_method');
        $method->setCarrier($this->_code);
        $method->setMethod($this->_code);
        $method->setCarrierTitle($this->getConfigData('title'));
        $method->setMethodTitle($this->getConfigData('name'));
        $method->setPrice($price); // Set shipping price here
        $method->setCost($price);
        $result->append($method);

    }else{
        $error = Mage::getModel('shipping/rate_result_error');
        $error->setCarrier($this->_code);
        $error->setCarrierTitle($this->getConfigData('name'));
        $error->setErrorMessage($this->getConfigData('specificerrmsg'));
        $result->append($error);
    }
    return $result;
于 2014-09-08T15:26:03.220 に答える