質問 > 管理機能 > 規格の在庫数を連動させたい |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
niwi |
投稿日時: 2013/11/23 0:21
対応状況: −−−
|
新米 登録日: 2013/11/22 居住地: 投稿: 4 |
規格の在庫数を連動させたい お世話になっております。
どなたかご教授・アドバイス等頂けませんでしょうか。 商品管理の商品規格に関しまして、在庫数を商品に対して規格に連動した形で在庫数る仕組みで以下のようなものを考えております。 例)規格1に「購入方法」規格2に「サイズ」を入れた場合 サンプル:S:在庫10 サンプル:M:在庫10 サンプル:L:在庫10 購入する:S:在庫10 購入する:M:在庫10 購入する:L:在庫10 ↓「購入する」「Mサイズ」を2枚購入 サンプル:S:在庫10 サンプル:M:在庫8 サンプル:L:在庫10 購入する:S:在庫10 購入する:M:在庫8 購入する:L:在庫10 ※規格に対して在庫を減らす連動は出来たのですが、 (例:商品A・B・Cの全てのサイズが連動して減ってしまう) 商品単位で連動するしたいと考えております。 初心者なのでどなたか分かりやすくご教授いただければ ありがたいです。 なにとぞよろしくお願いいたします。 -------------------------------------- EC-CUBEバージョン 2.12.4 PHPバージョン PHP 5.3.15 DBバージョン MySQL 5.6.11-log -------------------------------------- |
tsuji |
投稿日時: 2013/11/25 10:07
対応状況: −−−
|
仙人 登録日: 2013/11/19 居住地: 投稿: 958 |
Re: 規格の在庫数を連動させたい 在庫を管理しているDBのカラムは正しく更新されていますか?
商品A・B・Cの在庫がDB上正しく更新されているのであれば、 表示の際に在庫の参照先が正しくないことになります。 商品A・B・Cの在庫がDB上正しく更新されていない、 すべてのサイズが連動して減っているようであれば、 DBの更新するプログラムが正しくないことになります。 |
niwi |
投稿日時: 2013/11/25 16:17
対応状況: −−−
|
新米 登録日: 2013/11/22 居住地: 投稿: 4 |
Re: 規格の在庫数を連動させたい tsuji様
DBの方については慣れていないため触っておりません。 色々と調べた上で /data/class/SC_Product.php の 在庫を減少させる項目を下記に差し替えたところ規格2にサイズを 入れることにより連動はするようになりましたが全ての商品が共通で減る設定になりました。 function reduceStock($productClassId, $quantity) { if ($quantity == 0) { return false; } $objQuery =& SC_Query_Ex::getSingletonInstance(); $arrRet = $objQuery->select('classcategory_id2','dtb_products_class', 'product_class_id=?',array($productClassId)); if (empty($arrRet)) { return false; } $objQuery->update('dtb_products_class', array(), "classcategory_id2 = ?", array($arrRet[0]['classcategory_id2']), array('stock' => 'stock - ?'), array($quantity)); $productsClass = $this->getDetailAndProductsClass($productClassId); if ($productsClass['stock_unlimited'] != '1' && $productsClass['stock'] < 0) { return false; } return true; } もし上記の内容の変更で対応が可能であれば是非ご教授頂きたいと思っております。 |
tsuji |
投稿日時: 2013/11/26 11:28
対応状況: −−−
|
仙人 登録日: 2013/11/19 居住地: 投稿: 958 |
Re: 規格の在庫数を連動させたい product_idで商品を指定しなければ、全商品で在庫数が減ってしまう結果となります。
dtb_product_classにproduct_idがありますので、それを取得して検索条件に入れて在庫数の更新をするなら、特定の商品で在庫数を管理できると思います。 また、EC-CUBEのバージョンやPHPのバージョン等の環境情報を記載していただければ、解決に役立つと思います。 |
niwi |
投稿日時: 2013/11/26 23:21
対応状況: −−−
|
新米 登録日: 2013/11/22 居住地: 投稿: 4 |
Re: 規格の在庫数を連動させたい tsuji様
再度ご回答ありがとうございます。 バージョンですが最初の投稿の下部に書いていたのですが 下記になります。 -------------------------------------- EC-CUBEバージョン 2.12.4 PHPバージョン PHP 5.3.15 DBバージョン MySQL 5.6.11-log -------------------------------------- コード等は見真似で触っているのであまり理解できておりません。 |
tsuji |
投稿日時: 2013/11/27 9:25
対応状況: −−−
|
仙人 登録日: 2013/11/19 居住地: 投稿: 958 |
Re: 規格の在庫数を連動させたい > バージョンですが最初の投稿の下部に書いていたのですが
下記になります。 大変申し訳ございません。すっかり失念しておりました。 reduceStockを下記のように書き換えたらいかがでしょうか? これで商品ごとに在庫が減るようになると思います。 しかし、下記のコードでniwi様の仕様を満たしたかどうかはわかりませんので、あらかじめご了承ください。 function reduceStock($productClassId, $quantity) { if ($quantity == 0) { return false; } $objQuery =& SC_Query_Ex::getSingletonInstance(); $arrRet = $objQuery->select('classcategory_id2, product_id','dtb_products_class', 'product_class_id=?',array($productClassId)); if (empty($arrRet)) { return false; } $objQuery =& SC_Query_Ex::getSingletonInstance(); $objQuery->update('dtb_products_class', array(), 'classcategory_id2 = ? AND product_id = ? ', array($arrRet[0]['classcategory_id2'], $arrRet[0]['product_id']), array('stock' => 'stock - ?'), array($quantity)); $productsClass = $this->getDetailAndProductsClass($productClassId); if ($productsClass['stock_unlimited'] != '1' && $productsClass['stock'] < 0) { return false; } return true; } |
niwi |
投稿日時: 2013/11/27 20:36
対応状況: 解決済
|
新米 登録日: 2013/11/22 居住地: 投稿: 4 |
Re: 規格の在庫数を連動させたい tsuji様
ご回答頂きありがとうございます。 頂いたコードで思っていた通りの動作をしております。 色々とアドバイス頂きありがとうございました。 |
tsuji |
投稿日時: 2013/11/28 13:02
対応状況: −−−
|
仙人 登録日: 2013/11/19 居住地: 投稿: 958 |
Re: 規格の在庫数を連動させたい niwi様
お役に立てて良かったです。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |