質問 > フロント機能 > 配送と送料のカスタマイズ |
フロント機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
secKW |
投稿日時: 2021/8/16 16:48
対応状況: −−−
|
新米 登録日: 2021/7/21 居住地: 投稿: 3 |
配送と送料のカスタマイズ EC-CUBE4.0.6で、配送と送料に関して以下のような仕様にしたいと考えています。
基本的な考え方は、メール便は宅配便より送料が安いため購入者のメリットになるということです。 ①配送方法はメール便と宅配便の2種類 ②宅配便の支払い方法は代引きかクレジット、メール便はクレジットのみ ③メール便は一部の対象商品(小さいもの)のみ使用可 ④メール便は商品1点ずつの発送になるので、送料は商品個数分かかる ⑤メール便対象商品と対象外商品は同時決済・同時配送できる ⑥メール便対象商品のみ購入の場合は購入者がメール便と宅配便を選択できる(代引き希望の可能性があるため) ⑦メール便対象商品と対象外商品を同時購入の場合は無条件で宅配便 ⑧メール便対象商品のみ購入の場合でも、5点以上の場合は送料のメリットがなくなるため無条件で宅配便 ①②は通常の設定で問題ないと思います。 ③ではメール便対象商品の識別にタグを使用しようと考えています。 https://umebius.com/eccube/check_if_product_has_tag/ こちらを参考に、Productクラスからタグ情報を引き出せると考えています。 ⑤の仕様から、商品種別による識別は使えないものと思っています。 ④は http://memo.koubousya.jp/contents/246 こちらを参考に実装しました。 ⑥~⑧は、https://note.com/akihi/n/n8ae5cd0ad493 こちらを参考に以下のような関数を書いてみました。これがtrueを返す時だけ配送方法の選択肢にメール便が現れるイメージです。 ただ、この関数が正しいかどうかも、正しいとしてどこでどのように呼び出せば機能するのかもわかりません。 public function process(ItemHolderInterface $itemHolder, PurchaseContext $context) { // Orderの場合はお届け先ごとに判定する. if ($itemHolder instanceof Order) { /** @var Order $Order */ $Order = $itemHolder; /* @var Shipping $Shipping */ foreach ($Order->getShippings() as $Shipping) { $isTakuhai = false; $isMailbin = 0; foreach ($Shipping->getOrderItems() as $Item) { if($Item->isProduct()) { if($Item->getProduct()->hasTag(1)) { $isMailbin += ; }else { $isTakuhai = true; } } } if($isTakuhai) { return false; }elseif($isMailbin > 4) { return false }else { return true; } } } } かなり大それたカスタマイズなのは重々承知ですが、なにかヒントをいただけないでしょうか。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |