Mage_SalesRule_Model_Quote_Freeshipping
これを行う最善の方法は、SalesRule モジュールでクラスごとに行うのと同じ方法で、独自の「見積もりアドレス合計」を追加すること です。これを複製するには、拡張クラスを作成し、その中に次のようなMage_Sales_Model_Quote_Address_Total_Abstract
名前のメソッドを作成する必要があります。collect()
class Mycompany_Mymod_Model_Sales_Quote_Address_Total_Freeshipping extends Mage_Sales_Model_Quote_Address_Total_Abstract
{
public function collect(Mage_Sales_Model_Quote_Address $address)
{
parent::collect($address);
if(somecondition){
$address->setFreeShipping(true);
}
}
}
次に、モジュール config.xml でカスタムの「見積もりアドレス合計」を宣言します。
<?xml version="1.0" encoding="UTF-8"?>
<config>
<global>
<sales>
<quote>
<totals>
<customfreeshipping>
<class>mymodname/sales_quote_address_total_freeshipping</class>
<after>freeshipping</after> <!-- this ensures our custom total is placed after Mage_SalesRule_Model_Quote_Freeshipping so we can override "$address->setFreeShipping(0);" -->
</customfreeshipping>
</totals>
</quote>
</sales>
</global>
</config>
$request->setFreeShipping($this->getFreeShipping());
これにより、メソッドMage_Sales_Model_Quote_Address
内のクラスでリクエスト オブジェクトに渡されるアドレス オブジェクトの送料無料が宣言され、requestShippingRates()
チェックしているすべての配送モジュールで利用できるようになります$request->getFreeShipping()
。
楽しみ :)