送料カスタマイズ|EC-CUBE覚え書き
当館ネットショップでは「冷凍商品」「冷蔵商品」「通常商品」を扱っており、「冷凍」と「冷蔵・通常」商品は同梱では送れません。冷凍商品である「あか牛の精肉」は冷凍状態で発泡スチロールに入れて発送しますので、発泡スチロールの箱代と保冷剤代はお客様に負担いただきます。冷蔵・通常品は適当な段ボール箱に入れて発送しますので、箱代は頂きません。また発泡スチロール箱代は重量によって変わってきますので、その組み合わせによって変わる送料・梱包材料代を表示するためのカスタマイズが必要になりました。
ということで、いつもお世話になっている「EC-CUBE開発コミュニティサイト」へアクセスして検索。カスタマイズ法が出てきましたので、参考にしながら実装。
チェンジセット17970、17971、18114を適当にカスタマイズ。
自分の場合、「商品送料」を「商品送料パラメータ」として肉の重量を入力することにしました。肉以外の商品は、この項目は入力しません。
そしてseasoftさんの都道府県・重量別送料カスタマイズを少しいじって、総重量1000g以下は300円、3000g以下は600円、4000g以下は900円、6000g以下は1200円、それ以上は1800円の梱包材料代を請求するようにしました。
配送業者の送料は有効なので、パラメータは”OPTION_PRODUCT_DELIV_FEE”、”OPTION_DELIV_FEE”ともに1です。
data/class_extends/helper_extends/SC_Helper_DB_Ex.phpに以下を追加します。
class SC_Helper_DB_Ex extends SC_Helper_DB {
function lfCalcAllProductsDelivFee(&$arrData, &$objCartSess) {
// 商品送料に入力された重量(g)を取得
$weight = parent::lfCalcAllProductsDelivFee($arrData, $objCartSess);
// 重量に応じた梱包材料代を返す
switch ($arrData['deliv_pref']) {
default: // 他
if ($weight == 0) return 0;
if ($weight <= 1000) return 300;
if ($weight <= 3000) return 600;
if ($weight <= 4000) return 900;
if ($weight <= 6000) return 1200;
return 1800;
}
}
}
これで、肉類は重量によって梱包材料代が送料に加算されるようになりました。
(8/18追記:最初の状態では、すべての商品に梱包材料代が請求されていた(汗)ので、パラメータ0時には金額も0を追加しました(^_^;;)
コメントはまだありません。