バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > [2.13.5] 販売最低購入数について

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
l58
投稿日時: 2016/12/17 20:00
対応状況: −−−
常連
登録日: 2015/2/15
居住地:
投稿: 36
[2.13.5] 販売最低購入数について
商品ごとに最低販売個数を設けるにはどうすればよいのでしょうか。

商品Aは1個から(1個、2個〜)
商品Bは20個から(21個、22個、〜)
としたいです。

下記の過去のスレッドを拝見しましたが、わかりませんでした。
具体的にお分かりになる方がいましたらご教授願えますでしょうか。

http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=10144&forum=10

http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=9070&forum=10

当方初心者です。
どうかよろしくお願い致します。

---------------------------------------------------------------
[EC-CUBE]  2.13.5
[レンタルサーバ] WADAX
[OS] WIN7
[PHP] PHP 5.3.3
[データベース]   MySQL 5.1.73
-------------------------------------------------------------
468
投稿日時: 2016/12/19 12:13
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: [2.13.5] 販売最低購入数について
商品ごとに最低販売個数を設けるという事は、
・DBの商品テーブルに項目を追加
・管理画面の商品登録画面に項目を追加してDBへの登録処理を実装
・フロントの購入処理の中で最低販売個数を判定する処理を実装
と色々な箇所のカスタマイズが必要ではないかと思います。

商品数が10個未満と少なく、入れ替わりも無いのであれば、
DBや管理側のカスタマイズはせずに、フロントのカスタマイズだけでも対応できるかもしれませんが・・・。


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

l58
投稿日時: 2016/12/19 21:25
対応状況: −−−
常連
登録日: 2015/2/15
居住地:
投稿: 36
Re: [2.13.5] 販売最低購入数について
ご連絡ありがとうございます。
やはり難しいのですね。
プラグインなどあれば大変うれしいのですが、探しましたが見つからず、どうしても付けたい機能なので途方にくれています。

商品数は1000以上あり、商品によって、20個以上、30個以上、50個以上とメーカー希望個数があります。

販売個数に上限はないので、例えば販売制限数の箇所を全て上限から下限に変更すればよいのかと思いましたが、修正ファイルの全てがどこにあるのかわかりません。

修正ファイルの箇所だけでもお分かりになりますでしょうか?
468
投稿日時: 2016/12/20 11:29
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: [2.13.5] 販売最低購入数について
手元にあったソースがECCUBE2.13.3なので、行数は異なるかもしれませんが、
/data/class/SC_CartSession.php 608行目
function 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;
                    }
                }

このあたりの条件を書き換えれば、上限を下限として変更できると思います。


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

l58
投稿日時: 2016/12/20 19:06
対応状況: −−−
常連
登録日: 2015/2/15
居住地:
投稿: 36
Re: [2.13.5] 販売最低購入数について
ありがとうございます。
やってみます。

取り急ぎお礼まで。
また報告させて頂きます。
l58
投稿日時: 2016/12/25 21:35
対応状況: −−−
常連
登録日: 2015/2/15
居住地:
投稿: 36
Re: [2.13.5] 販売最低購入数について
ご教授いただいたとおり、

data/class/SC_CartSession.phpを下記のように変更したところ
「販売制限数」を「最低販売数」に変更することが出来ました。
ありがとうございました!!

/*
* 販売制限数, 在庫数のチェック
*/
$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'] . "」は{$limit}個以上 からのお買い上げとなります。\n";
continue;
}

------------------------------------------------------------

追加の質問なのですが
さらに、商品詳細ページ購入箇所の「数量」を指定する欄に設定した「最低販売数」を表示させるにはどうすればよいのでしょうか。

通常は「1」と表示されているのですが
data/Smarty/templates/my_template/detail.tpl

<!--★数量★-->
<tr>
<th>数量:</th>
<td><input type="text" class="box60" name="quantity" value="<!--{$arrForm.quantity.value|default:1|h}-->" maxlength="<!--{$smarty.const.INT_LEN}-->" style="<!--{$arrErr.quantity|sfGetErrorColor}-->" />
<!--{if $arrErr.quantity != ""}-->
<br /><span class="attention"><!--{$arrErr.quantity}--></span>
<!--{/if}-->

</td>
</tr>

上記の中の
<input type="text" class="box60" name="quantity" value="<!--{$arrForm.quantity.value|default:1|h}-->

を修正すればよいのかとは思ったのですが、
「1」ではなくて「最低販売制限数」を表示させるにはどうすればよいのでしょうか。

また、ここの横に注意書き等で
{$sale_limit}個以上 からのお買い上げとなります
等の記述を加えるにはどのように書けばよいのでしょうか。

下記を参考に見てみましたが、バージョンが違うためか、修正箇所が見つけられませんでした。
http://ec-cube.nakweb.com/blog/1906.html

お分かりになりましたら、ご教授いただけると幸いです。
よろしくお願い致します。
468
投稿日時: 2016/12/26 11:57
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: [2.13.5] 販売最低購入数について
まず商品詳細画面に渡されている商品情報にsale_limitが含まれていませんので、DBから値を取得するところから変更する必要があります。
商品詳細のデータを取得する際の項目を指定している箇所は以下のようです。

/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php
/data/class/db/SC_DB_DBFactory.php

function alldtlSQL()の中に該当のSQLの記述があります。
MySQLとPostgreSQLで実行している箇所が違いますのでご注意ください。

そこでdtb_products_class.sale_limitを取得する記述を追記すれば、
/product/detail.tpl内で、$arrProduct.sale_limitで販売制限を取得する事が出来そうです。

<!--{$arrForm.quantity.value|default:$arrProduct.sale_limit|h}-->
の記述でデフォルト値もセット出来そうですし、
<!--{$arrProduct.sale_limit|h}-->個以上から購入可能です。といったメッセージも表示できると思います。

SQLを記述する際の注意点は、dtb_products_classにsale_limitのカラムがあるようですので、stockなどと同じようにMAX()かMIN()等の集約関数を記述する必要があるかと思います。

以上、よろしくお願いします。


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

l58
投稿日時: 2017/1/13 18:31
対応状況: −−−
常連
登録日: 2015/2/15
居住地:
投稿: 36
Re: [2.13.5] 販売最低購入数について
返信が遅くなってしまって申し訳ありません。
色々調べてみたのですが、
dtb_products_class.sale_limitを取得する記述がよくわかりませんでした。
大変恐縮なのですが、もう少し具体的に教えて頂けませんでしょうか?
468
投稿日時: 2017/1/13 23:07
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: [2.13.5] 販売最低購入数について
/data/class/db/dbfactory/SC_DB_DBFactory_PGSQL.php
/data/class/db/SC_DB_DBFactory.php

function alldtlSQL() に記述するSQLの記述が分からないという事でしょうか?
ご利用のDBによって記述が変わりますが、
MySQLでしょうか?PostgreSQLでしょうか?


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

l58
投稿日時: 2017/1/17 16:31
対応状況: −−−
常連
登録日: 2015/2/15
居住地:
投稿: 36
Re: [2.13.5] 販売最低購入数について
ご連絡ありがとうございます。
function alldtlSQL() に記述するSQLの記述が分かりません。
DBはMySQLになります。

初心者なりに思考錯誤しておりますが。まだまだ勉強不足で申し訳ありません。

よろしくお願いします。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,708名です
総投稿数は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.