バージョン選択

フォーラム

メニュー

オンライン状況

72 人のユーザが現在オンラインです。 (63 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 72
もっと...

サイト内検索

 > フロント機能 > カート内の商品IDと個数を取得したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kyou
投稿日時: 2016/11/1 15:34
対応状況: −−−
新米
登録日: 2016/8/15
居住地:
投稿: 10
カート内の商品IDと個数を取得したい
カートに入っている商品IDを参照し、
一部の商品IDに送料無料設定追加する

[EC-CUBE] 3.0.10
[PHP] PHP 5.6.24
[ブラウザ] GoogleChrome
[導入プラグインの有無] お問い合わせ管理、orderPDF,Cart推移しません、受注ステータス色分け、配送伝票番号、注文ステータス一括変更

下記の仕様を組み込みたくて
施行錯誤してみたのですがうまくいかずに困っています。

[現在]
20000円以上お買い上げで送料無料

[追加する仕様]
1.商品idが「1」の商品が3個購入されたら
  その注文での送料は20000円未満でも無料になる。
2.商品idが「2」の商品が1つでも購入されていれば
  その注文での送料は20000円未満でも無料になる。
3.それ以外の注文では20000円以上購入で送料無料となる。

ここのフォーラムで商品種別IDを利用して
商品別の少量設定をしているので対応箇所はわかったのですが
種別IDではなくて商品IDの方が取得できなくて困っています。

対応ファイル:ShoppingService.php
対応箇所:setDeliveryFreeAmount(Order $Order)

上記に条件文を入れて処理させたいです。
商品IDおよびそのIDの購入個数を取得する場合は
ほかのファイルも手を加えなくては駄目でしょうか?


少しでも情報をお持ちの方がいればご教授願います
hata
投稿日時: 2016/11/2 21:17
対応状況: −−−
長老
登録日: 2015/8/3
居住地: 宮城県(2017/09末引退)
投稿: 156
Re: カート内の商品IDと個数を取得したい
試してはおりませんが、

既存の処理の後で送料がまだ無料になっていなかったら
foreach ($Order->getOrderDetails() as $orderDetail) で回りながら
$orderDetail->getProduct()->getId()で商品idをみて
商品id毎に$orderDetail->getQuantity()で数量を加算
商品id毎に送料無料にする条件をチェックして、無料になる場合は
既存の処理と同じように送料無料設定($Orderと$Shippingに)をしてから
breakしてループを抜ける

という流れでご期待の動作にならないでしょうか?
尚、ご参考程度ですので十分に検証・確認なさった上での実装をお願いいたします。
kyou
投稿日時: 2016/11/4 17:09
対応状況: −−−
新米
登録日: 2016/8/15
居住地:
投稿: 10
Re: カート内の商品IDと個数を取得したい
hata 様


教えて頂きありがとうございました

おかげで希望通りの処理が組み込めました

本当に感謝です

一応記載した処理は

[既存の送料無料処理]

foreach ($Order->getOrderDetails() as $orderDetail) {
// 商品ID:3 が3つ以上買われれば送料無料
if ($orderDetail->getProduct()->getId() == 3){
// 3つ以上であれば送料無料
if ($orderDetail->getQuantity() >= 3) {
$Order->setDeliveryFeeTotal(0);
// お届け先情報の配送料も0にセット
$shippings = $Order->getShippings();
foreach ($shippings as $Shipping) {
$Shipping->setShippingDeliveryFee(0);
}
break;
}
}
// 商品ID:4 が1つ以上買われれば送料無料
else if ($orderDetail->getProduct()->getId() == 4){
// 1つ以上であれば送料無料
$Order->setDeliveryFeeTotal(0);
// お届け先情報の配送料も0にセット
$shippings = $Order->getShippings();
foreach ($shippings as $Shipping) {
$Shipping->setShippingDeliveryFee(0);
}
break;
}
}
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,860名です
総投稿数は109,996件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1294
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.