バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 商品別集計で追加項目

管理機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
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

 



ログイン


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

統計情報

総メンバー数は89,269名です
総投稿数は110,060件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1652
8
red
1570
9
mcontact
1299
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.