質問 > フロント機能 > EC-CUBE3で購入金額ごとに送料値引き・無料にしたい |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
akiakihi |
投稿日時: 2019/6/16 21:01
対応状況: −−−
|
一人前 登録日: 2014/7/17 居住地: 兵庫県 投稿: 91 |
Re: EC-CUBE3で購入金額ごとに送料値引き・無料にしたい 根本的な解決となっていませんが、とりあえず、の打開策として、
shopping.twigにて、支払い方法を先に選択→その後、配送方法を選択するような順番にすることで問題は回避されました。 |
akiakihi |
投稿日時: 2019/6/16 1:36
対応状況: −−−
|
一人前 登録日: 2014/7/17 居住地: 兵庫県 投稿: 91 |
Re: EC-CUBE3で購入金額ごとに送料値引き・無料にしたい こんにちは
うまく金額が表示されないので、お手数ですがまた教えていただけますでしょうか。 現状、下記のコードで運用していますが、 最初にデフォルトで配送方法としてクリックポストが選択されており、購入金額が3000円以上の場合は0円、3000円以下の場合送料は185円、と記載されています。 そこから、どの配送方法に変更しても送料金額は変わらず、 次に支払い方法を選んだ際にはじめて、レターパックと定形外郵便については正しい送料に変更されるのですが、 ゆうパックについては、送料がデフォルト表示のままで変わりません。 これを、はじめに配送方法は触らず、支払い方法を先に選ぶと、どの送料も正しく表示されます。 また一旦正しい金額になると、以後 配送方法を変更しても、送料はそれぞれ配送法に応じた正しい金額が表示されるようになります。 (値引きもきちんとされています) 購入時、画面の表示に従って、最初に発送方法でゆうパックを選び、次に支払い方法を選択してそのまま決済されると、送料が0円もしくは185円のままになってしまいます お忙しいところを恐縮ですが、解決策についてご教授いただけませんでしょうか ($deliv_id==1と2はサンプル業者(DBで削除できずそのまま)) $deliv_id==3 :クリックポスト(一律185円)←デフォルト表示 $deliv_id==4 レターパックプラス(一律510円) $deliv_id==5 ゆうパック(都道府県により異なる) (見にくいので下記コードから抜いていますが、他に$deliv_id==6として定形外を設定しています。)
|
umebius |
投稿日時: 2019/6/2 2:00
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: EC-CUBE3で購入金額ごとに送料値引き・無料にしたい 解決されたようで何よりです。
また何かございましたらご投稿ください。 |
akiakihi |
投稿日時: 2019/6/2 1:39
対応状況: 解決済
|
一人前 登録日: 2014/7/17 居住地: 兵庫県 投稿: 91 |
Re: EC-CUBE3で購入金額ごとに送料値引き・無料にしたい ありがとうございます!
複数配送は不可設定にしております。 おかげさまで、無事にエラーが出ずに値引きがされるようになりました。 助かりました。ありがとうございましたm(_ _)m ちなみに、一番下のポイントプラグインのエラーについては、PHP7.2にしているからのようです。 付与率の設定がされていない場合は、という内容でしたので、該当部分をコメントアウトで対応しました。 |
umebius |
投稿日時: 2019/6/2 0:56
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: EC-CUBE3で購入金額ごとに送料値引き・無料にしたい とりあえず$deliv_id(配送方法のID)が未定義ではエラーは免れないので
$Shipping = $Order->getShippings()->first(); $deliv_id = $Shipping->getDelivery()->getId(); のような形で$deliv_idを取得してはどうでしょうか。 上記は複数配送不可設定の場合の話で、 複数配送可の場合は$Shipping をforeachでループさせて配送単位で送料を考える必要が出てくるかと思います。
|
akiakihi |
投稿日時: 2019/6/1 21:21
対応状況: −−−
|
一人前 登録日: 2014/7/17 居住地: 兵庫県 投稿: 91 |
EC-CUBE3で購入金額ごとに送料値引き・無料にしたい ▼テンプレート
[EC-CUBE] 3.0.17 [レンタルサーバ]さくらインターネット [OS] Windows10 [PHP] PHP Version 7.2.17 [データベース] MySQL 5.7 [ブラウザ] Chrome 税込み ・3239円未満:送料値引きなし ・3240円以上はクリックポスト(delivery_id:3; 185円)無料 ・3240~7559は送料200円引き ・7560円以上はレターパックプラス(delivery_id:4; 510円)無料 ・7560~17999円は送料510円引き ・18000円以上はゆうパック(delivery_id:5;)無料 としたいと思っています。 EC-CUBE2系では出来ていたので参考にしてみたのですが、3系で下記のように書くとエラーになってしまいます。 /src/Eccube/Service/ShoppingService.php 683行目付近 ------------------------------------------------------------------ public function setDeliveryFreeAmount(Order $Order) { // 配送料無料条件(合計金額) $deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount(); if (!is_null($deliveryFreeAmount)) { // 合計金額が設定金額以上であれば送料無料 if ($Order->getSubTotal() <= 3000) { $Order->setDeliveryFeeTotal(0); }else if ($Order->getSubTotal() <= 6999) { if($deliv_id==3 ) $Order->setDeliveryFeeTotal(0); if($deliv_id==4 ) $Order->setDeliveryFeeTotal(-200); }else if ($Order->getSubTotal() <= 16666) { if($deliv_id==3 ) $Order->setDeliveryFeeTotal(0); if($deliv_id==4 ) $Order->setDeliveryFeeTotal(0); if($deliv_id==5 ) $Order->setDeliveryFeeTotal(-510); }else{ $Order->setDeliveryFeeTotal(0); // お届け先情報の配送料も0にセット $shippings = $Order->getShippings(); foreach ($shippings as $Shipping) { $Shipping->setShippingDeliveryFee(0); } } } } ---------------------------------------------------------------------- エラーコード Notice: Undefined variable: deliv_id in /***/src/Eccube/Service/ShoppingService.php on line 699 Notice: Undefined variable: deliv_id in /***/src/Eccube/Service/ShoppingService.php on line 700 Notice: Undefined variable: deliv_id in /***/src/Eccube/Service/ShoppingService.php on line 701 Warning: count(): Parameter must be an array or an object that implements Countable in /***/app/Plugin/Point/Helper/PointCalculateHelper/PointCalculateHelper.php on line 282 お忙しいところを大変恐縮ですが、 どのように記述したら良いか、ご指導願えませんでしょうか。 よろしくお願いいたします。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |