質問 > 管理機能 > 商品別集計で追加項目 |
管理機能
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
468 |
投稿日時: 2011/8/7 14:35
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品別集計で追加項目 こんにちは
私のほうで、以下の条件で商品別集計のカスタマイズを行ってみました。 EC-CUBE2.11.1 MySQL5.2 商品:アイスクリーム 規格1:味 分類:抹茶、チョコ 重量計算の条件:抹茶の時100g、チョコの時2kgで集計 (わざと単位を変えています) カスタマイズの方針:なるべく手を加えるところを少なくする。 (拡張系クラスではなく、ページ系クラスに直接手を加えます) 1./data/class/pages/admin/total/LC_Page_Admin_Total.php 551行目付近の集計項目を指定するSQLを書き直します。 $col = " product_id, product_code, product_name, SUM(quantity) AS products_count, COUNT(order_id) AS order_count, price, (price * SUM(quantity)) AS total"; ↓ $col = " product_id, product_code, product_name, dtb_order_detail.classcategory_name1, SUM(CASE WHEN dtb_order_detail.classcategory_name1 = '抹茶' THEN 100 * quantity WHEN dtb_order_detail.classcategory_name1 = 'チョコ' THEN 2000 * quantity ELSE 0 END) AS total_weight, SUM(quantity) AS products_count, COUNT(order_id) AS order_count, price, (price * SUM(quantity)) AS total"; 2.テンプレートに表示する項目(購入重量と総重量)を追加する。 /data/Smarty/templates/admin/total/page_products.tpl 26行目付近 <th>順位</th> <th>商品コード</th> <th>商品名</th> <th>購入件数</th> <th>数量</th> <th>単価</th> <th>金額</th> ↓ <th>順位</th> <th>商品コード</th> <th>商品名</th> <th>購入重量</th> <th>購入件数</th> <th>数量</th> <th>総重量</th> <th>単価</th> <th>金額</th> 32行目付近 <td class="center"><!--{*順位*}--><!--{$smarty.section.cnt.iteration}--></td> <td class="right"><!--{*商品コード*}--><!--{$arrResults[cnt].product_code|h}--></td> <td class="left"><!--{*商品名*}--><!--{$arrResults[cnt].product_name|sfCutString:40:false|h}--></td> <td class="right"><!--{*購入件数*}--><!--{$arrResults[cnt].order_count}-->件</td> <td class="right"><!--{*数量*}--><!--{$arrResults[cnt].products_count}--></td> <td class="right"><!--{*単価*}--><!--{$arrResults[cnt].price|number_format}-->円</td> <td class="right"><!--{*金額*}--><!--{$arrResults[cnt].total|number_format}-->円</td> ↓ <td class="center"><!--{*順位*}--><!--{$smarty.section.cnt.iteration}--></td> <td class="right"><!--{*商品コード*}--><!--{$arrResults[cnt].product_code|h}--></td> <td class="left"><!--{*商品名*}--><!--{$arrResults[cnt].product_name|sfCutString:40:false|h}--></td> <td class="right"><!--{*購入数量*}--><!--{$arrResults[cnt].classcategory_name1}--></td> <td class="right"><!--{*購入件数*}--><!--{$arrResults[cnt].order_count}-->件</td> <td class="right"><!--{*数量*}--><!--{$arrResults[cnt].products_count}--></td> <td class="right"><!--{*総重量*}--><!--{$arrResults[cnt].total_weight|number_format}-->g</td> <td class="right"><!--{*単価*}--><!--{$arrResults[cnt].price|number_format}-->円</td> <td class="right"><!--{*金額*}--><!--{$arrResults[cnt].total|number_format}-->円</td> 45行目付近 th>順位</th> <th>商品コード</th> <th>商品名</th> <th>購入件数</th> <th>数量</th> <th>単価</th> <th>金額</th> ↓ <th>順位</th> <th>商品コード</th> <th>商品名</th> <th>購入重量</th> <th>購入件数</th> <th>数量</th> <th>総重量</th> <th>単価</th> <th>金額</th> 以上です。 PHPに追記した以下の部分を書き換える事で、集計した情報などを変更する事ができると思います。 CASE WHEN dtb_order_detail.classcategory_name1 = '抹茶' THEN 100 * quantity WHEN dtb_order_detail.classcategory_name1 = 'チョコ' THEN 2000 * quantity ELSE 0 END 意味は、 分類1の名称が抹茶だったら、100×数量、 分類1の名称がチョコだったら、2000×数量、 それ以外は0とする、 という事になります。 規格1ではなく、規格2で判定する場合は、classcategory_name1をclasscategory_name2に置き換えてください。 規格1と規格2の組み合わせで判定する場合は、 WHENとTHENの間を、dtb_order_detail.classcategory_name1 = '抹茶' AND dtb_order_detail.classcategory_name2 = 'S'といった形でANDを指定してください。 (抹茶かつ、Sサイズという場合) 抹茶もしくは、Sサイズという場合は、ANDの代わりにORを指定してください。 上記の方法であれば、規格名を100g→100というふうに数値のみにする必要はありません。 ただし、規格の種類が多い場合や、商品ごとに判定を切り替えたい場合、 または、別規格で同じ分類名を登録されている場合(例えば、規格に購入重量と、内容量があり、 それぞれの分類に100g,200g,300g、100g,200g,300gと同じ名前で登録している等)は、 データベースの定義変更や、仕様の変更が必要となりますので、 かなり難易度が上がると思います。 あと、長々と申し訳ないのですが、CSV出力は、 ./data/class/pages/admin/total/LC_Page_Admin_Total.php 805行目付近の配列を書き直します。 $arrTitleCol = array( '商品コード', '商品名', '購入件数', '数量', '単価', '金額' ); $arrDataCol = array( 'product_code', 'product_name', 'order_count', 'products_count', 'price', 'total', ); ↓ $arrTitleCol = array( '商品コード', '商品名', '購入数量', '購入件数', '数量', '総重量', '単価', '金額' ); $arrDataCol = array( 'product_code', 'product_name', 'classcategory_name1', 'order_count', 'products_count', 'total_weight', 'price', 'total', ); 以上、viperさんの環境に合わせて変更してみてください。 |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
商品別集計で追加項目 | viper | 2011/8/6 12:36 |
Re: 商品別集計で追加項目 | 468 | 2011/8/7 0:48 |
Re: 商品別集計で追加項目 | viper | 2011/8/7 10:43 |
» Re: 商品別集計で追加項目 | 468 | 2011/8/7 14:35 |
Re: 商品別集計で追加項目 | viper | 2011/8/7 15:57 |
Re: 商品別集計で追加項目 | viper | 2011/8/10 13:08 |