バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 受注管理画面のCSVダウンロードで特定の商品の場合のみ、注文数を2倍で出力したい。

フロント機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tsurtua
投稿日時: 2017/10/20 11:36
対応状況: 解決済
常連
登録日: 2017/3/31
居住地:
投稿: 57
受注管理画面のCSVダウンロードで特定の商品の場合のみ、注文数を2倍で出力したい。
[EC-CUBE] EC-CUBEのバージョン:2.13.5
        新規インストールかアップデートか:新規インストール
[OS] OS:Windows8.1
[PHP] PHPのバージョン:PHP 5.6.24
[データベース] DB:MySQL 5.7.18
[ブラウザ] ブラウザ名:Chome
[導入プラグイン] プラグイン:のし対応 1.3.5/クロネコヤマト カード・後払い一体型決済コア機能プラグイン 1.0


いつもお世話になります。

受注管理画面のCSVダウンロードで注文商品の個数を出力できるようにカスタマイズしており、
特定の商品のときだけ、個数を2倍の数で出力したいと思っています。

商品については、アイスクリーム(仮)で、
商品規格が3サイズあります。
商品IDは三つとも「1」
商品コードはアイスクリームサイズSが「001」、アイスクリームサイズMが「002」、アイスクリームサイズLが「003」
です。
2倍の個数で出力する対象は、
商品名:アイスクリームLサイズ、商品ID:1、商品コード:003
のみです。


現在、受注管理画面のCSVダウンロードの出力項目は
注文番号、商品番号、商品名、数量(その商品の注文個数)
を出力するようにカスタマイズしています。
具体的なカスタマイズ内容は、以下です。
SC_Helper_CSV.phpのsfDownloadCsvを以下のようにカスタマイズしています。
受注管理画面のCSVダウンロードを押したときは、該当の情報を出力するSQL文をが流れるようにしています。

    public function sfDownloadCsv($csv_id, $where = '', $arrVal = array(), $order = '', $is_download = false)
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();

        // CSV出力タイトル行の作成
        $arrOutput = SC_Utils_Ex::sfSwapArray($this->sfGetCsvOutput($csv_id, 'status = ' . CSV_COLUMN_STATUS_FLG_ENABLE));
        if (count($arrOutput) <= 0) return false; // 失敗終了
        $arrOutputCols = $arrOutput['col'];

        $cols = SC_Utils_Ex::sfGetCommaList($arrOutputCols, true);

        // 商品の場合
        if ($csv_id == 1) {
            // この WHERE 句を足さないと無効な規格も出力される。現行仕様と合わせる為追加。
            $inner_where = 'dtb_products_class.del_flg = 0';
            $from = SC_Product_Ex::prdclsSQL($inner_where);
        // 会員の場合
        } elseif ($csv_id == 2) {
            $from = 'dtb_customer';
        // 注文の場合
        } elseif ($csv_id == 3) {
            $from = 'dtb_order';
        // レビューの場合
        } elseif ($csv_id == 4) {
            $from = 'dtb_review AS A INNER JOIN dtb_products AS B on A.product_id = B.product_id';
        // カテゴリの場合
        } elseif ($csv_id == 5) {
            $from = 'dtb_category';
        }

        $objQuery->setOrder($order);
        //CSVフォーマットIDが3(受注管理画面からのCSVダウンロード)のとき、CSVダウンロードの検索クエリとヘッダーを変更
        if($csv_id == 3){
        	//受注管理画面からCSVダウンロードをする際の検索クエリをカスタマイズ CSVの出力項目は、注文番号、商品番号、商品名、個数
        	$sql = "SELECT dtb_order.order_id, dtb_order_detail.product_code, dtb_order_detail.product_name, dtb_order_detail.quantity 
        	FROM dtb_order 
        	INNER JOIN dtb_order_detail ON dtb_order.order_id = dtb_order_detail.order_id 
        	WHERE ". $where. "
        	ORDER BY dtb_order.order_id DESC";

        	//CSVファイルのヘッダーをすべて削除して更新
        	unset($arrOutput['disp_name']);
        	$arrOutput['disp_name'] = array("受注番号","品番","商品名","数量");
        } else {
        	$sql = $objQuery->getSql($cols, $from, $where);
        }

        return $this->sfDownloadCsvFromSql($sql, $arrVal, $this->arrSubnavi[$csv_id], $arrOutput['disp_name'], $is_download);
    }


このカスタマイズをおこなった上で、
商品がアイスクリームLサイズのときだけ、個数を2倍で出力する
というふうにする必要があります。

SQLで取得したデータをどこかで、
if (商品コード == 003){
    アイスクリームLサイズの数量×2;
}

といった感じにすればよさそうですが、
どこでこの処理を行えばよいのかわかりません。
また、商品番号や数量といった情報が入った変数なども分かりません。(関係ありそうな変数の中身をデバッグで見ても見つけることができませんでした。。)


以上、こちらを実現する方法が分かる方、ご教示お願い致します。
yuh
投稿日時: 2017/10/20 11:48
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1819
Re: 受注管理画面のCSVダウンロードで特定の商品の場合のみ、注文数を2倍で出力したい。

$sql = "
SELECT 
    dtb_order.order_id, 
    dtb_order_detail.product_code, 
    dtb_order_detail.product_name, 
    CASE
        WHEN
            dtb_order_detail.product_code = '003'
        THEN
            dtb_order_detail.quantity * 2
        ELSE
            dtb_order_detail.quantity 
    END as quantity
FROM 
    dtb_order INNER JOIN 
    dtb_order_detail ON dtb_order.order_id = dtb_order_detail.order_id 
WHERE ". $where. "
ORDER BY 
    dtb_order.order_id DESC";

こんな感じですかね。


----------------


http://ec-lab.net/

tsurtua
投稿日時: 2017/10/20 13:40
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 57
Re: 受注管理画面のCSVダウンロードで特定の商品の場合のみ、注文数を2倍で出力したい。
yuh様昨日に引き続き、ありがとうございます。

教えて頂いた記述で実現できました!
クエリ自体で計算してセレクトする方法は考えておりませんでした。。
ありがとうございます!

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


 



ログイン


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

統計情報

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

投稿数ランキング

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