バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
468
投稿日時: 2020/9/24 15:16
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2692
Re: 購入制限数のロジックについて
そうですね。
全く別のロジックが必要と思います。


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

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

つまり、販売制限数・在庫数のロジックとはまた異なる処理が必要という認識でしょうか
468
投稿日時: 2020/9/23 11:09
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2692
Re: 購入制限数のロジックについて
1つの商品に対して判定を行う販売制限数, 在庫数のチェック処理と
カート全体の金額に対して判定を行う上限金額チェック処理は
ロジックが別物と考えたほうが良いと思います。

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


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

000
投稿日時: 2020/9/23 10:25
対応状況: −−−
常連
登録日: 2020/1/29
居住地:
投稿: 56
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/22 8:32
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 2692
Re: 購入制限数のロジックについて
販売金額を超えた時の投入パターンによって
カートに対する処理を分岐させる必要があるのではないでしょうか?

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

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


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

000
投稿日時: 2020/9/17 12:37
対応状況: −−−
常連
登録日: 2020/1/29
居住地:
投稿: 56
購入制限数のロジックについて
[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);

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

ご教授いただけますと幸いです。
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

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

統計情報

総メンバー数は67,422名です
総投稿数は98,786件です

投稿数ランキング

1
seasoft
7333
2
AMUAMU
2712
3
468
2692
4
nanasess
2115
5
umebius
1788
6
yuh
1612
7
red
1427
8
h_tanaka
1051
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.