下記のお問い合わせがありました。

商品合計6300円以下は送料200円、合計金額6301円から8000円まで540円、それ以上は無料 としたモジュールを考えています。

というもの。


上記の要望を満たすモジュールが無く、

自身でモジュールの作成を試みたところ、送料周りの制御で苦戦してお問い合わせをしたそうだ。


このお問い合わせに対して、

今回は雑ではあるけれども要件を満たすための解説を書くことにする。


まずは標準配送モジュールの複製を行い、

以後のバージョンアップに耐えられるようにする。


モジュール(プラグイン)の複製は下記の記事を参考にして、

標準配送モジュールであるdelivery_normalディレクトリの複製を行う。

SOY Shopのプラグインやモジュールの複製方法


複製したモジュールをdelivery_normal2として、

/soyshop/webapp/src/module/plugins/delivery_normal2/soyshop.delivery.php

を開いてみると、getPrice()というメソッドがある。


getPriceメソッドは、


delivery_normal_custom


返り値で金額を返すことで、配送料を決めることができる。


今回はgetPriceメソッドを

/************************************************/

商品合計6300円以下は送料200円、合計金額6301円から8000円まで540円、それ以上は無料 としたモジュールを考えています。

/************************************************/

冒頭の要件に合わせて書き換えてみる。


書き換えは下記のようになる。


function getPrice(){
	$total = $this->getCart()->getItemPrice();    //商品合計金額を取得
	if ($total <= 6300) return 200;
	if ($total <= 8000) return 540;
	return 0;
} 

これで標準配送モジュールの他の機能は利用しつつ、

送料のみ自身の希望した内容を返すカスタマイズは終了となる。


関連記事

支払いの拡張ポイントsoyshop.payment.php