バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 購入制限数のロジックについて

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
000
投稿日時: 2020/9/17 12:37
対応状況: −−−
常連
登録日: 2020/1/29
居住地:
投稿: 69
購入制限数のロジックについて
[EC-CUBE]2.13.5

カート内にて、設定された合計金額を超える購入をした場合は
超えた商品をカートから削除(販売制限数と同じ処理)を入れたいと思っておりますが
うまく実装できずにおります。

SC_CartSessionのcheckProductsメソッド内にある
/*
* 販売制限数, 在庫数のチェック
*/
                $limit = $objProduct->getBuyLimit($product);
                if (!is_null($limit) && $arrItem['quantity'] > $limit) {
                    if ($limit > 0) {
                        $this->setProductValue($arrItem['id'], 'quantity', $limit, $productTypeId);
                        $total_inctax = $limit * SC_Helper_TaxRule_Ex::sfCalcIncTax($arrItem['price'],
                            $product['product_id'],
                            $arrItem['id'][0]);
                        $this->setProductValue($arrItem['id'], 'total_inctax', $total_inctax, $productTypeId);
                        $tpl_message .= '※「' . $product['name'] . '」は販売制限(または在庫が不足)しております。';
                        $tpl_message .= "一度に数量{$limit}を超える購入はできません。\n";
                    } else {
                        $this->delProduct($arrItem['cart_no'], $productTypeId);
                        $tpl_message .= '※「' . $product['name'] . "」は売り切れました。\n";
                        continue;
                    }
                }

こちらのコードを参考にしており、現時点でエラーメッセージを表示させることはできているのですが

商品をセットする部分
$this->setProductValue($arrItem['id'], 'total_inctax', $total_inctax, $productTypeId);

こちらのコードにあたる部分をうまく書き換えることができずに困っております。

ご教授いただけますと幸いです。
468
投稿日時: 2020/9/22 8:32
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 購入制限数のロジックについて
販売金額を超えた時の投入パターンによって
カートに対する処理を分岐させる必要があるのではないでしょうか?

・カートに1つも入っていない商品が投入され販売金額を越えた
・カートに既に入っている商品の数量が追加され販売金額を超えた

上記の参考にされている販売制限数の処理は
後者の数量が追加された事を前提にしているので
前者の商品が新しく投入された場合は
$this->delProduct($arrItem['cart_no'], $productTypeId);
を処理させる必要があるかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

000
投稿日時: 2020/9/23 10:25
対応状況: −−−
常連
登録日: 2020/1/29
居住地:
投稿: 69
Re: 購入制限数のロジックについて
お返事ありがとうございます。

引用:

if ($定価 > $販売上限金額) {
if ($販売上限金額 > 0) {
$objCartSess->setProductValue($arrItem['id'], '定価 ', $販売上限金額, $productTypeId);
$objCartSess->delProduct($arrItem['cart_no'], $productTypeId);
$tpl_message .= "※ 定価合計金額が販売上限金額を超える購入はできません。\n";
} else {
$objCartSess->delProduct($arrItem['cart_no'], $productTypeId);
$tpl_message .= "※ 定価合計金額が販売上限金額を超える購入はできません。\n";
continue;
}
}


現在、上記のようなソースを組んでおりますが
動作としては
(上限販売金額 10万円と過程)
①5万円の商品を2個カートに入れ、カート内で数量を3個に変更する
→エラーメッセージが表示され、3個ともが削除されてしまう。
(この時、カートブロックは数量0、金額0で表示されるが
現在のカゴの中画面ではエラーメッセージは出ているものの
数量3、金額15000が表示されたまま)
②商品一覧から5万円の商品を数量を3でかごに入れる
→カートブロックは数量0、金額0で表示されるが
現在のカゴの中画面ではエラーメッセージは出ているものの
数量3、金額15000が表示されたまま
③2000円の商品と5万円の商品をカートに入れ、カート内で5万円の商品の数量を2に増やした場合、2000円の商品が削除される。
(この時、カートブロックは数量0、金額0で表示されるが
現在のカゴの中画面ではエラーメッセージは出ているものの
数量2、金額10000が表示されたまま)

以上のような動作になってしまっております。
どこからどう、手直しをすればいいのかが分からず路頭に迷っている状況です。
468
投稿日時: 2020/9/23 11:09
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 購入制限数のロジックについて
1つの商品に対して判定を行う販売制限数, 在庫数のチェック処理と
カート全体の金額に対して判定を行う上限金額チェック処理は
ロジックが別物と考えたほうが良いと思います。

販売制限数, 在庫数のチェックは
カート内の商品をループして判定しており、
そのループの中でカート全体の上限金額をチェックする事に無理があると思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

000
投稿日時: 2020/9/23 11:33
対応状況: −−−
常連
登録日: 2020/1/29
居住地:
投稿: 69
Re: 購入制限数のロジックについて
ご確認いただき、ありがとうございます。

つまり、販売制限数・在庫数のロジックとはまた異なる処理が必要という認識でしょうか
468
投稿日時: 2020/9/24 15:16
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 購入制限数のロジックについて
そうですね。
全く別のロジックが必要と思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
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.