質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

解決済

1回答

720閲覧

EC-CUBE3 送料計算のswitch分の書き換えについてご教授ください

mogemoge1203

総合スコア11

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

0クリップ

投稿2018/12/03 02:12

皆様いつもお世話になっております。
現在EC-CUBE3にてショップの運営を行っております。
前提として下記のように商品が大きくわけられています。
・商品種別A=年間通して販売されている商品
・商品種別B=年末年始のみ販売する商品(福袋)
また、基本設定として、送料無料の条件として¥10,000以上が送料無料になっております。

商品種別Bの商品のみ送料無料の条件から除外したいと考えております。
また、商品種別AとBは同時にカートにいれることはできないので、
混合することはありません。

希望としては、下記のとおりです。
・商品種別A:通常通り¥10,000以上であれば送料無料
・商品種別B:いくら購入であっても送料計算

現在下記記事で紹介されている送り先に基づいた送料の除外はできております。
この条件を商品種別Aと商品種別Bに変更したいと考えております。
【3.0.15】送料無料条件(金額)を超えても特定の都道府県は送料無料にしない方法

また、EC=CUBE3のフォーラムにも今回挑戦した内容を投稿しております。
商品種別Bを送料無料条件から除外する方法について

ご教授いただけますと、幸いです。
よろしくお願いいたします。

[EC-CUBE] 3.0.15 , 新規インストール
[レンタルサーバ] heteml
[OS] macOS High Sierra ver10.13.3
[PHP] 7,0
[ブラウザ] Google Chrome

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2018/12/03 02:19 編集

terarail のヘルプ [他のサービスにも質問投稿をしたい(してしまった)](https://teratail.com/help#posted-otherservice)に「teratailでは、マルチポストの推奨はしていません。やむを得ず複数のサイトに質問を投稿された場合は、質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。」と書かれているようにマルチポストは推奨されていません。
mogemoge1203

2018/12/03 04:16

CHERRY様 teratailのルールを侵してしまい、大変申し訳ありません。 今後気をつけるよういたします。 また、本件解決済とさせていただきます。
guest

回答1

0

ベストアンサー

まずCHERRYさんの言う通り、やむを得ずマルチポストするならルールに従ってください。
あと、やむを得ずマルチポストするなら同じ情報をこちらにも記載してください。あちこち見ないといけないので回答者としても後から見た人も困ります。

EC-CUBE3の元々の機能である送料無料条件を利用して、「10,000円以上は送料無料」になっております。

ただ、商品種別Bに含まれる商品は梱包の兼ね合いもあり、送料無料対象から除外を考えております。
しかし、送料無料条件が設定されていると、商品種別Bの商品も送料が無料になってしまいます。

setDeliveryFreeAmountの中で、カートの商品種別がBだった場合に早期リターンをしてあげれば良いでしょう。

public function setDeliveryFreeAmount(Order $Order) { $productTypes = $this->cartService->getProductTypes(); $productType = $productTypes[0]; // 商品種別BのID=2前提(必要に応じて修正ください) if ($productType->getId() === 2) { return; } // 配送料無料条件(合計金額) $deliveryFreeAmount = $this->BaseInfo->getDeliveryFreeAmount(); if (!is_null($deliveryFreeAmount)) { // 合計金額が設定金額以上であれば送料無料 if ($Order->getSubTotal() >= $deliveryFreeAmount) { $Order->setDeliveryFeeTotal(0); // お届け先情報の配送料も0にセット $shippings = $Order->getShippings(); foreach ($shippings as $Shipping) { $Shipping->setShippingDeliveryFee(0); } } } }

商品種別AとBは同時にカートにいれることはできないので、混合することはありません。

ちなみにこちらを前提とした実装です。

投稿2018/12/03 03:28

編集2018/12/03 03:31
xenbeat

総合スコア4258

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mogemoge1203

2018/12/03 04:18

xenbeat様 マルチポストの件大変失礼しました。 今後気をつけさせていただきます。 また、いただいたソースに当てはめて記述したところ、無事希望通りの動きとなりました。 お忙しい中ご教授いただき、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問