バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 自動でセット商品化を導入したい

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
wa.shi
投稿日時: 2020/2/12 15:29
対応状況: 解決済
常連
登録日: 2018/2/20
居住地:
投稿: 41
自動でセット商品化を導入したい
EC-CUBE:3.0.17
DBサーバー:MySQL 5.5.45
WEBサーバー:Apache

いつも大変お世話になっております。
以下のようなカスタマイズを考えております。

商品A¥3,000を3つカートに入れる



商品購入ページへ進む。



カート内の商品が
自動的に商品Aが商品Aセット¥8,000(¥1,000 OFF)に変わり、
「商品Aが3つ購入されましたため、セット商品Aに切り替わりました。」というアラート。


※商品Aセットは既に商品マスタには登録されており、
現在も販売中です。

商品Aセットという商品があるのにも関わらず、
商品Aを3つ購入し、¥1,000 OFFされないという
損をされるお客様を考慮し、
上記カスタマイズを実装したく存じます。


上記を実装するにあたって、
どちらのファイルを改変すべきか等、
アドバイスやヒントを頂けますと大変助かりますm(__)m

よろしくお願い致します。
umebius
投稿日時: 2020/2/12 20:55
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1649
Re: 自動でセット商品化を導入したい
色々方法は考えられますが、
src/Eccube/Service/CartService.phpのカートへ追加する処理のaddProductやsetProductQuantityメソッド、
あるいはカートを表示される時にCartController内か最初に実行されるCartServiceのgetCartメソッドあたりでそう言った処理を書けばよいと思います。


----------------
EC-CUBE4系 カスタマイズ ECのプロがシステム特急案件承ります。
EC-CUBE開発 リモートで働くエンジニア募集中

wa.shi
投稿日時: 2020/2/13 10:32
対応状況: −−−
常連
登録日: 2018/2/20
居住地:
投稿: 41
Re: 自動でセット商品化を導入したい
umebius様

ご回答ありがとうございます。
早速、ご教示頂きました箇所の処理を追いかけてみて
検証しようかと存じます。
wa.shi
投稿日時: 2020/2/13 11:01
対応状況: −−−
常連
登録日: 2018/2/20
居住地:
投稿: 41
Re: 自動でセット商品化を導入したい
umebius様

度々申し訳ございません。
ご教示頂きました内容ですが、
カートページにおけるカート商品情報の変更かと存じますが、
できれば、カートページはそのままの表示で
商品購入ページにて商品が切り替わるような処理を入れたく思います。

つまり、商品が確定した商品購入ページで商品がセット商品に変わるような処理を考えています。

(その時点で、やっぱり気が変わって、商品を変えたい、減らしたい場合は、カート内の商品はセット商品のままで止むを得ないですが・・・。)

この場合、カスタマイズを施す場所はどちらが適切でしょうか?

よろしくお願い致します。
umebius
投稿日時: 2020/2/13 11:04
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1649
Re: 自動でセット商品化を導入したい
それであればShoppingServiceのregisterPreOrderあたりでできると思います。

その場合、カートの商品の方はセットに変える方が難しいと思うので、注文画面の方だけになりますが。


----------------
EC-CUBE4系 カスタマイズ ECのプロがシステム特急案件承ります。
EC-CUBE開発 リモートで働くエンジニア募集中

wa.shi
投稿日時: 2020/2/13 11:27
対応状況: −−−
常連
登録日: 2018/2/20
居住地:
投稿: 41
Re: 自動でセット商品化を導入したい
umebius様

早急なご回答感謝致します。
さっそく見てみます。
wa.shi
投稿日時: 2020/2/13 19:00
対応状況: −−−
常連
登録日: 2018/2/20
居住地:
投稿: 41
Re: 自動でセット商品化を導入したい
umebius様

お陰様で、解決致しました。
この度はありがとうございました!

registerPreOrderの
// お届け先情報を作成
$Order = $this->getNewShipping($Order, $Customer, $deliveries);
の下箇所に以下を追加し想定通りの動きとなりました。
(即席で見栄え悪いロジックですが・・・。)

引用:


foreach ($this->cartService->getCart()->getCartItems() as $item) {

$ProductClass = $item->getObject();

$ProductClassId = $ProductClass->getId();

$quantity = $item->getQuantity();

// 該当商品の個数が3の倍数時以下の処理が発動
if ($ProductClassId == 単品商品のID && $quantity %3 >= 0) {

// 該当商品の個数 ÷ 3 = セット商品の個数(小数点切り捨て)
$convertQuantity = floor($quantity / 3);


// 該当商品の個数が全てセット商品に切り替わった場合、該当商品自体を削除
if ($quantity %3 == 0) {
$this->cartService->removeProduct($ProductClassId);
}else{
// 切り替わったセット商品分、単品商品の個数を減らす
$sum = 0;
$i = 1;

$removeQuantity = $convertQuantity * 3;

while ($i <= $removeQuantity) {
$this->cartService->downProductQuantity($ProductClassId);
$sum += $i;
$i++;
}
}

$convertProductClassId = セット商品のID;

// 切り替わったセット商品をカートに追加
$this->cartService->addProduct($convertProductClassId, $convertQuantity);
}
}
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は64,306名です
総投稿数は97,176件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
468
2478
4
nanasess
2088
5
umebius
1649
6
yuh
1612
7
red
1410
8
h_tanaka
1029
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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