質問 > 管理機能 > 商品別集計で追加項目 |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
viper |
投稿日時: 2011/8/6 12:36
対応状況: −−−
|
新米 登録日: 2011/7/30 居住地: 投稿: 10 |
商品別集計で追加項目 続けての質問で失礼致します。
2.11.1の商品別集計では 商品コード、商品名、購入件数、数量、単価、金額 上記の6つの項目が表示されますが、購入時重量、総重量を追記出来るでしょうか? 例えば 100gが150円のお茶があったとします。 【注文】 Aさん 200g×1 Bさん 100g×1 Cさん 100g×3 【商品別集計】 順位 商品コード 商品名 購入件数 数量 単価 金額 1 ocha001 お茶 2件 4 150 600 2 ocha001 お茶 1件 1 300 300 上記の様に表示されます。 この中に購入時の購入重量(1包装重量)と総重量を記載したいです。 順位 商品コード 商品名 購入重量 購入件数 数量 総重量 単価 金額 1 ocha001 お茶 100g 2件 4 400g 150 600 2 ocha001 お茶 200g 1件 1 200g 300 300 後、商品別集計の円グラフでは中国語が文字化けしてしまいます。 円グラフは多言語化出来ますでしょうか? どうかよろしくお願い致します。 連続のスレ立て失礼しました。 |
468 |
投稿日時: 2011/8/7 0:48
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品別集計で追加項目 こんばんわ。
購入時重量は、どのように商品に登録されているのでしょうか? 規格を利用されているのでしょうか? それとも項目をカスタマイズしているのでしょうか? 結論から申しますと、商品別集計に購入時重量、総重量を追加することは、カスタマイズを加える事で対応可能ですが、 データの格納方法によって、集計方法が変わってくる為、 現在の情報では、その手段までは説明できません。 あと、円グラフの件はよくわからないので、申し訳ないです。 |
viper |
投稿日時: 2011/8/7 10:43
対応状況: −−−
|
新米 登録日: 2011/7/30 居住地: 投稿: 10 |
Re: 商品別集計で追加項目 468さん
お返事ありがとうございます。 購入時重量は規格を利用しています。(100g・200g・300g等) 集計はカスタマイズで可能ということですが この場合は、今規格で使用している100g等のgやkgは外しておいた方がいいのでしょうか? 数字以外を規格内に記入していると集計時に問題がありますよね? 前回説明不足ですみませんでした。 何とかなりますでしょうか? |
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/7 15:57
対応状況: 確認中
|
新米 登録日: 2011/7/30 居住地: 投稿: 10 |
Re: 商品別集計で追加項目 468様
わざわざ商品別集計のカスタマイズまで行ってもらい 本当にありがとうございます! 記述して頂いた通りにカスタマイズした後、再度報告をさせてもらいます。 海外での販売の為に色々とカスタマイズしているのですが わからない事ばかりでお恥ずかしい限りです。 一時はECCUBE以外を検討しておりましたが 最新バージョンになり多言語対応になったという事で 期限も迫ってきた事もあり、見切り発車したのですが まだまだ問題も多いです。焦るばかりで。。。 後日また結果をご報告致します。 ひとまず、ありがとうございました! |
viper |
投稿日時: 2011/8/10 13:08
対応状況: −−−
|
新米 登録日: 2011/7/30 居住地: 投稿: 10 |
Re: 商品別集計で追加項目 468様
ご連絡が遅くなってすみません。 抹茶とチョコの場所を変更しただけで 後は、教えて頂いた通りにカスタマイズしたらバッチリ理想通りになりました! ありがとうございます!! お陰で規格も変更する必要がなくなり、CSVまで出力することが出来るなんて完璧です。 468様、お忙しいなか本当にありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |