ヤマト家財便の発送料金をコードに追加することで商品登録時に家財便専用の送料を追加できます。
というか家財便のモノしか送れなくなります。
※ちなみに下記の設定は関東地区からの発送の場合になります。
管理画面-システム設定-パラメタ設定を下記に変更
DELIV_ADDR_MAX ・・・0
OPTION_DELIV_FEE ・・・1
OPTION_PRODUCT_DELIV_FEE ・・・1
まずさきにヤマト家財便のお届け地方が50コード(北海道4分割)存在するので変更。
[ec-cube既存の都道府県コード]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
1 = 北海道 2 = 青森県 3 = 岩手県 4 = 宮城県 5 = 秋田県 6 = 山形県 7 = 福島県 8 = 茨城県 9 = 栃木県 10 = 群馬県 11 = 埼玉県 12 = 千葉県 13 = 東京都 14 = 神奈川県 15 = 新潟県 16 = 富山県 17 = 石川県 18 = 福井県 19 = 山梨県 20 = 長野県 21 = 岐阜県 22 = 静岡県 23 = 愛知県 24 = 三重県 25 = 滋賀県 26 = 京都府 27 = 大阪府 28 = 兵庫県 29 = 奈良県 30 = 和歌山県 31 = 鳥取県 32 = 島根県 33 = 岡山県 34 = 広島県 35 = 山口県 36 = 徳島県 37 = 香川県 38 = 愛媛県 39 = 高知県 40 = 福岡県 41 = 佐賀県 42 = 長崎県 43 = 熊本県 44 = 大分県 45 = 宮崎県 46 = 鹿児島県 47 = 沖縄県 |
MySQLのDBを下記に変更
今回はmtb_prefテーブルを削除後に再度DB(下記)をid:1から50として変更追加
※先に顧客登録があると都道府県がズレます。なので初期インストール時に実行する為のもの。
(アップデート仕様のものは制作中)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
-- -- テーブルの構造 `mtb_pref` -- CREATE TABLE `mtb_pref` ( `id` smallint(6) NOT NULL DEFAULT '0', `name` text, `rank` smallint(6) NOT NULL DEFAULT '0', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=ujis; -- -- テーブルのデータをダンプしています `mtb_pref` -- INSERT INTO `mtb_pref` (`id`, `name`, `rank`) VALUES (1, '札幌', 1) (2, '函館', 2) (3, '道北', 3) (4, '道東', 4) (5, '青森県', 5) (6, '岩手県', 6) (7, '宮城県', 7) (8, '秋田県', 8) (9, '山形県', 9) (10, '福島県', 10) (11, '茨城県', 11) (12, '栃木県', 12) (13, '群馬県', 13) (14, '埼玉県', 14) (15, '千葉県', 15) (16, '東京都', 16) (17, '神奈川県', 17) (18, '新潟県', 18) (19, '富山県', 19) (20, '石川県', 20) (21, '福井県', 21) (22, '山梨県', 22) (23, '長野県', 23) (24, '岐阜県', 24) (25, '静岡県', 25) (26, '愛知県', 26) (27, '三重県', 27) (28, '滋賀県', 28) (29, '京都府', 29) (30, '大阪府', 30) (31, '兵庫県', 31) (32, '奈良県', 32) (33, '和歌山県', 33) (34, '鳥取県', 34) (35, '島根県', 35) (36, '岡山県', 36) (37, '広島県', 37) (38, '山口県', 38) (39, '徳島県', 39) (40, '香川県', 40) (41, '愛媛県', 41) (42, '高知県', 42) (43, '福岡県', 43) (44, '佐賀県', 44) (45, '長崎県', 45) (46, '熊本県', 46) (47, '大分県', 47) (48, '宮崎県', 48) (49, '鹿児島県', 49) (50, '沖縄県', 50); |
mtb_constantsテーブルのid=DELIVFEE_MAXのレコードを47 -> 50に変更
/data/mtb_constants_init.phpのDELIVFEE_MAXのレコードを47 -> 50に変更
/data/cache/mtb_constants.php を削除
/data/cache/mtb_pref.php を削除
上記を削除してから「お客様情報入力」ページを開くと反映されていますとりあえずは都道府県の再登録完了。
管理画面>基本情報設定>配送設定 の中で48以降の県が増えているので一応料金を設定。(ここで設定した料金は支払い情報には反映されませんが。)
※離島・海外等の処理はまた後日
——————-
管理画面-システム設定-パラメタ設定で別のお届け先最大登録数
DELIV_ADDR_MAX に0を設定する。
商品送料を商品重量に変更する
data/Smarty/templates/admin/products/confirm.tpl
132行目 商品送料→送料ランク
135行目 円→/3辺合計
data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
320行目
|
$objFormParam->addParam(“商品送料”, “deliv_fee”, PRICE_LEN, ‘n’, array(“NUM_CHECK”, “SPTAB_CHECK”, “MAX_LENGTH_CHECK”)); |
↓
|
$objFormParam->addParam(“送料ランク”, “deliv_fee”, PRICE_LEN, ‘n’, array(“EXIST_CHECK”, “NUM_CHECK”, “SPTAB_CHECK”, “MAX_LENGTH_CHECK”)); |
data\Smarty\templates\admin\products\product.tpl
198行目付近
商品送料をランクに変更↓
送料ランク *213行目
円→/3辺合計
data/class/SC_CartSession.php
609行目付近 「配送業者の送料を加算」の次に「配送ランクを加算」を追加
ここではサイズをcmではなくmmで設定しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
// 配送業者の送料を加算 if (OPTION_DELIV_FEE == 1 && !SC_Utils_Ex::isBlank($deliv_pref) && !SC_Utils_Ex::isBlank($deliv_id)) { $results['deliv_fee'] += $objDb->sfGetDelivFee($deliv_pref, $deliv_id); } // 配送ランクを加算 $deliv_rank = $results['deliv_fee']; switch ($deliv_pref[0]) { case 1: //札幌 if ($deliv_rank <= 600){ $results['deliv_fee'] = 1160;} elseif ($deliv_rank <= 800){ $results['deliv_fee'] = 1370;} elseif ($deliv_rank <= 1000){ $results['deliv_fee'] = 1580;} elseif ($deliv_rank <= 1200){ $results['deliv_fee'] = 1790;} elseif ($deliv_rank <= 1400){ $results['deliv_fee'] = 2000;} elseif ($deliv_rank <= 1600){ $results['deliv_fee'] = 2210;} elseif ($deliv_rank <= 2000){ $results['deliv_fee'] = 5600;} elseif ($deliv_rank <= 2500){ $results['deliv_fee'] = 10000;} elseif ($deliv_rank <= 3000){ $results['deliv_fee'] = 14500;} elseif ($deliv_rank <= 3500){ $results['deliv_fee'] = 23000;} elseif ($deliv_rank <= 4000){ $results['deliv_fee'] = 29900;} elseif ($deliv_rank <= 4500){ $results['deliv_fee'] = 39500;} else { $results['deliv_fee'] = 0;}; break; //以下割愛 }; |
とりあえず都道府県のコード1まで記述。
残りのコードはこちらのリンクから”ヤマト家財便 発送料金”
※関東地区からの発送の場合になります。
後は商品登録時に商品送料ランクの部分に三辺合計を指示するのみです。
「ヤマト家財便の発送料金をコードに追加することで商品登録時に家財便専用の送料を追加できます。」とか書いておきながら。
この設定では家財便のモノしか送れなくなります。なので別途で送料指定が可能なものを模索中・・・
商品種別を増やしてやればうまいこと行くかもしれないけれど・・・しかも家財便の場合代引きができないことも多いしな・・・
支払方法を増やすか支払方法でク分けるかor商品送料自体を2つにして2重チェック(?)したらいいんだろうか。
というか、書いてある「// 配送業者の送料を加算」コードの最終行(break;の次の行)に、下記追記で対応できますねw
|
default: if ($deliv_rank <=10000){ $results['deliv_fee'] = 1000;}//10000mmの場合1000円(基本4500mm以上の数字で設定。) elseif ($deliv_rank <= 15000){ $results['deliv_fee'] = 50;}//以下適当にelseifを必要な分だけ増やす。 else { $results['deliv_fee'] = 0;}; break; |
このdefault:文は試していないのでうまくいくかどうかは検証してみます。。。