質問 > フロント機能 > 送料無料の際に、北海道・沖縄を無料ではなく値引きをしたい |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
rastars |
投稿日時: 2019/3/29 14:40
対応状況: 解決済
|
新米 登録日: 2015/9/30 居住地: 投稿: 8 |
送料無料の際に、北海道・沖縄を無料ではなく値引きをしたい ▼テンプレート
[EC-CUBE] 3.0.17 [レンタルサーバ] エックスサーバ [PHP] 7.1.18 [データベース] MySQL 5.7.16 「1万円以上送料無料」の設定をしているのですが、「1万円以上送料 800円値引き」にしたい。 または、本州は「1万円以上送料無料」北海道と沖縄は「1万円以上で通常送料から800円値引き」をしたいと思っております。 「1万円以上送料 800円値引き」に関しては【ご注文内容のご確認】ページを開いたタイミングでは-800円された送料が記載されているのですが、支払方法を変更すると-800の表記になってしまい、それ以降どれを選択しても-800表記になってしまいます。 /** * 配送料無料条件(合計金額)の条件を満たしていれば配送料金を0に設定 * * @param Order $Order */ public function setDeliveryFreeAmount(Order $Order) { // 配送料無料条件(合計金額) $deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount(); if (!is_null($deliveryFreeAmount)) { // 合計金額が設定金額以上であれば送料無料 if ($Order->getSubTotal() >= $deliveryFreeAmount) { $Order->setDeliveryFeeTotal($Order->getDeliveryFeeTotal() - 800); // お届け先情報の配送料も0にセット $shippings = $Order->getShippings(); foreach ($shippings as $Shipping) { $Shipping->setShippingDeliveryFee(0); } } } } 「1万円以上送料無料」の設定をしているのですが、北海道と沖縄は通常送料から800円値引きにしたい。に関してはこちらの記事を参考にしたのですが希望の動きにならず詰まってしまっています。。 https://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=20910&forum=10 【ご注文内容のご確認】ページを開いたタイミングでは、設定した送料が記載されており、 北海道と沖縄に関しては、支払方法を変更するたびに送料が-800円ずつ引かれていき、本州に関しては1万円以上かごに入れても送料無料表記になりません。 /** * 配送料無料条件(合計金額)の条件を満たしていれば配送料金を0に設定 * * @param Order $Order */ public function setDeliveryFreeAmount(Order $Order) { // 配送先都道府県情報を取得。 $Shippings = $Order->getShippings(); $Shipping = $Shippings[0]; $prefId = $Shipping->getPref()->getId(); // 配送料無料条件(合計金額) $deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount(); if (!is_null($deliveryFreeAmount)) { // 合計金額が設定金額以上であれば送料無料 if ($Order->getSubTotal() >= $deliveryFreeAmount) { // 北海道・沖縄 if (in_array($prefId, array(1,47))) { $Shipping->setShippingDeliveryFee($Shipping->getShippingDeliveryFee() - 800); } // それ以外 } else { $Order->setDeliveryFeeTotal(0); // お届け先情報の配送料も0にセット $shippings = $Order->getShippings(); foreach ($shippings as $Shipping) { $Shipping->setShippingDeliveryFee(0); } } } } テンプレートを弄る程度の知識しかない為、これ以上どうすればいいのか分かりません。 お手数おかけしますがどのように変更すればよいかご教示いただけますでしょうか。 どうぞよろしくお願いいたします。 |
468 |
投稿日時: 2019/4/1 8:38
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 送料無料の際に、北海道・沖縄を無料ではなく値引きをしたい 支払方法を切り替えた時の処理を確認すると、
配送料については最初から再計算するのではなく、 切替前の送料を利用して処理をしているようですね。 (送料無料判定は処理されているようです。その為、切り替える都度-800円されるのだと思います) /src/Eccube/Controller/ShoppingController.php 448行目 function payment() 配送業者を変更した時に処理されるfunction delivery()を確認すると配送料をイチから再計算してると思われますので、 383行目~406行目までの記述が参考となりそうです。 ($shippings = $data['shippings'];以下の記述) あと、北海道・沖縄の判定ですが、 {}の数がおかしいと思います。 ここは一度、再確認されたほうがよいかと思います。 提示いただいたソースでは、elseが「合計金額が設定金額以上であれば送料無料 以外」の意味となっており、 設定金額未満の時に送料が常に0になるかと思います。
|
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |