バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 【EC-CUBE 2.11.4】管理機能の商品管理>商品マスター一覧画面で種別を切り替えたいです・・・。

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
MPV
投稿日時: 2012/1/28 17:59
対応状況: −−−
仙人
登録日: 2011/3/27
居住地:
投稿: 309
【EC-CUBE 2.11.4】管理機能の商品管理>商品マスター一覧画面で種別を切り替えたいです・・・。
稼働環境

[EC-CUBE] 2.11.4
[レンタルサーバ] WADAX
[OS] Red Hat Linux
[PHP] PHP 5.1.6
[データベース] MySQL 5.0.77
[WEBサーバ] Apache
[ブラウザ] Firefox 9.0.1 Google Chrome 16.0.912.77 m IE9

開発環境

[EC-CUBE] 2.11.4
[レンタルサーバ] なし(XAMPP 1.7.7のため)
[OS] Windows7 Professional
[PHP] PHP 5.3.8
[データベース] MySQL 5.5.16
[WEBサーバ] Apache/2.2.21
[ブラウザ] Firefox 9.0.1 Google Chrome 16.0.912.77 m IE9

お世話になります。

題記の通りなのですが、管理画面の商品マスター一覧画面で
種別の公開・非公開を、削除の場合と同様にリンクをクリックして
切り替えできるようにしたいと考えております。

その際、削除の処理と同様に行い、dtb_productsのstatusを
随時更新(1→2 or 2→1)する流れになると思うのですが、

?削除時の処理を流用する(更新箇所をdel_flgからstatusに
 変更する)のが一番容易でしょうか?
 それとも、他の簡便な方法はありますでしょうか。

?dtb_productsのstatusのみの更新を行っても、他への影響は
 ないでしょうか?

初歩的な質問かもしれず、大変恐縮なのですが
ご助言等頂ければ幸いです。

どうぞよろしくお願いいたします。
seasoft
投稿日時: 2012/1/28 23:24
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7365
Re: 【EC-CUBE 2.11.4】管理機能の商品管理>商品マスター一覧画面で種別を切り替えたいです・・・。
> ?削除時の処理を流用する(更新箇所をdel_flgからstatusに
>  変更する)のが一番容易でしょうか?

一番かはともかく、良いアイディアだとは思います。


> ?dtb_productsのstatusのみの更新を行っても、他への影響は
>  ないでしょうか?

それだけだと、カテゴリとメーカーの商品件数が更新されなく、不都合があるかも。

商品マスタの編集のロジックに「件数カウントバッチ実行」というコメント箇所があるので、その辺りを真似する対応が必要かもしれません。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

MPV
投稿日時: 2012/1/30 12:55
対応状況: −−−
仙人
登録日: 2011/3/27
居住地:
投稿: 309
Re: 【EC-CUBE 2.11.4】管理機能の商品管理>商品マスター一覧画面で種別を切り替えたいです・・・。
seasoft様

お世話になります。
ご助言頂きましてありがとうございます。
また、当方の返事が遅れました事、お詫びします。

引用:

> ?削除時の処理を流用する(更新箇所をdel_flgからstatusに
>  変更する)のが一番容易でしょうか?

一番かはともかく、良いアイディアだとは思います。


ありがとうございます。
この方向で進めようと思っております。

引用:

> ?dtb_productsのstatusのみの更新を行っても、他への影響は
>  ないでしょうか?

それだけだと、カテゴリとメーカーの商品件数が更新されなく、不都合があるかも。

商品マスタの編集のロジックに「件数カウントバッチ実行」というコメント箇所があるので、その辺りを真似する対応が必要かもしれません。


ご教授頂きましてありがとうございます。
対象ロジックを確認いたしましたところ、

data/class/helper/SC_Helper_DB.php 内

sfCountCategory
 → こちらはSQLの条件にstatusは使用していないようです。

sfCountMaker
 → こちらはSQLの条件にstatusを使用しており、
   件数が更新されそうです。

仰られる通り、件数不具合が出そうなので
上記関数の呼び出しを行おうと思います。

あと、当方が理解不足なのかもしれませんが、公開/非公開の
切り替えで、カテゴリ数やメーカー商品件数の更新が必要となる
のは以下認識で正しいでしょうか?

カテゴリ数:商品の非公開によるカテゴリ表示/非表示の
      切り替えが必要になる為

メーカー商品件数:商品の非公開により、取扱いメーカー件数が
         変わる為

もしよろしければ再度ご教授頂ければ幸いです。
MPV
投稿日時: 2012/1/30 15:19
対応状況: −−−
仙人
登録日: 2011/3/27
居住地:
投稿: 309
Re: 【EC-CUBE 2.11.4】管理機能の商品管理>商品マスター一覧画面で種別を切り替えたいです・・・。
自レスで恐縮です。

実装して動作確認をしてみました。
修正内容は以下の通りです。


(1)data/class/pages/admin/products/LC_Page_Admin_Products.php

 ●action()内のswitch文に以下処理を追加

        switch ($this->getMode()) {

        case 'change_status':
            // 商品、子テーブル(商品規格)、顧客お気に入り商品の変更
            $this->doChangeStatus("product_id = ?", array($objFormParam->getValue('product_id')));
            // 件数カウントバッチ実行
            $objDb->sfCountCategory($objQuery);
            $objDb->sfCountMaker($objQuery);
            // 変更後に検索結果を表示するため breakしない

 ●種別変更用の関数を追加

    /**
     * 商品マスタの種別変更
     *
     * @param string $where 種別変更対象の WHERE 句
     * @param array $arrParam 種別変更対象の値
     * @return void
     */
    function doChangeStatus($where, $arrParam = array()) {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $sqlval['update_date'] = 'CURRENT_TIMESTAMP';
        $objQuery->begin();

        $col = "status";
        $arrRet = $objQuery->select($col, 'dtb_products', $where, $arrParam);

        if ( $arrRet[0]['status'] == 1 ){
            $sqlval['status'] = 2;
        }
        else {
            $sqlval['status'] = 1;
        }

        $objQuery->update('dtb_products', $sqlval, $where, $arrParam);
        $objQuery->commit();
    }

(2)data/Smarty/templates/admin/products/index.tpl

 ●種別をリンク表示させる

                    <!--{assign var=key value=$arrProducts[cnt].status}-->

                    <td class="menu" rowspan="2">
                        <span class="icon_change_status">
                            <a href="<!--{$smarty.const.ROOT_URLPATH}-->" onclick="fnSetFormValue('category_id', '<!--{$arrProducts[cnt].category_id}-->'); fnModeSubmit('change_status', 'product_id', <!--{$arrProducts[cnt].product_id}-->); return false;"><!--{if $key == "1"}-->公開<!--{else}-->非公開<!--{/if}-->
                            </a>
                        </span>
                    </td>

(3)html/js/site.js

 ●fnModeSubmit内のswitch文に判定処理を追加

    case 'change_status':
        if(!window.confirm('種別を変更しても宜しいですか?')){
            return;
        }
        break;



これだと、種別は毎回更新されるのですが、削除の処理と
同じような検索結果の商品マスタ一覧表示が行われずに
閉じた状態になってしまい、再度検索ボタンを押下しないと
表示されません。

削除の時と同じようにしているつもりなのですが・・・。

ちょっと行き詰まっております。
もし、誤り等ございましたらご指摘頂ければ幸いです。
MPV
投稿日時: 2012/1/30 17:28
対応状況: 解決済
仙人
登録日: 2011/3/27
居住地:
投稿: 309
Re: 【EC-CUBE 2.11.4】管理機能の商品管理>商品マスター一覧画面で種別を切り替えたいです・・・。
再度自レスで申し訳ありません。
解決しました。

data/Smarty/templates/admin/products/index.tplの
商品マスタ一覧を表示させる条件が抜けておりました・・・(T_T)
その為以下を追加しました。


<!--{if count($arrErr) == 0 and ($smarty.post.mode == 'search' or $smarty.post.mode == 'delete' or $smarty.post.mode == 'change_status')}-->


あと、data/class/pages/admin/products/LC_Page_Admin_Products.phpの処理について
一部重複していたので、以下のように変更しました。


        switch ($this->getMode()) {

        case 'delete':
        case 'change_status':

            if( $this->getMode() == 'delete' ){
                // 商品、子テーブル(商品規格)、顧客お気に入り商品の削除
                $this->doDelete("product_id = ?", array($objFormParam->getValue('product_id')));
            }
            elseif ( $this->getMode() == 'change_status' ){
                // 商品、子テーブル(商品規格)、顧客お気に入り商品の変更
                $this->doChangeStatus("product_id = ?", array($objFormParam->getValue('product_id')));
            }

            // 件数カウントバッチ実行
            $objDb->sfCountCategory($objQuery);
            $objDb->sfCountMaker($objQuery);
            // 削除後に検索結果を表示するため breakしない

        // 検索パラメーター生成後に処理実行するため breakしない


当方の検証では、

dtb_productsのstatus : 公開/非公開で更新されます。
dtb_category_countのproduct_count : 公開/非公開で更新されます。
dtb_maker_countのproduct_count : 公開/非公開で更新されます。

と問題なさそうでした。

ご助言頂きましたseasoft様、ありがとうございました。<(_ _)>

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.