バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > フロント機能 > 受注管理画面のCSVダウンロードで商品情報を出力していて、1注文の情報を横一列で出力したい

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
tsurtua
投稿日時: 2017/10/20 16:29
対応状況: 開発中
常連
登録日: 2017/3/31
居住地:
投稿: 57
受注管理画面のCSVダウンロードで商品情報を出力していて、1注文の情報を横一列で出力したい
[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ダウンロードで注文商品の個数を出力できるようにカスタマイズしており、
1件の注文分は横一列に出力するようにしたいです。

現在、受注管理画面のCSVダウンロードの出力項目は
注文番号、商品番号、商品名、数量(その商品の注文個数、商品がアイスLサイズ、チョコLサイズのとき注文個数の2倍)
を出力するようにカスタマイズしています。
具体的なカスタマイズ内容は、以下です。
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の出力項目は、注文番号、商品番号、商品名、個数(商品がアイスLサイズ、チョコLサイズのとき注文個数の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' or dtb_order_detail.product_code = '006'
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 asc";

//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);
}


以上のカスタマイズにより、
現在はCSVファイルは以下例のように出力されています。

受注番号,品番,商品名,数量
4224,3,アイス,4
4224,7,チョコ,1
4225,6,ケーキ,6
4226,6,ケーキ,2

これを、

受注番号,品番,商品名,数量
4224,3,アイス,4,4224,7,チョコ,1
4225,6,ケーキ,6
4226,6,ケーキ,2

もしくは、

受注番号,品番,商品名,数量
4224,3,アイス,4,7,チョコ,1
4225,6,ケーキ,6
4226,6,ケーキ,2

としたいです。
例でいうと、
受注番号が4224の分の注文を横一列に
ということです。
どちらかというと後者が理想で、これは4224の注文の二商品目以降の情報には受注番号がありません。

実装方法として、
SC_Helper_CSV.phpのcbOutputCSVの
fputcsv($this->fpOutput, $data);

辺りをカスタマイズすればいい気はするのですが、分かりません。
fputcsvもEC-CUBEで作られたメソッドでは無いですし、、


分かる方いらっしゃいましたら、どうかご教示ください。

フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » 受注管理画面のCSVダウンロードで商品情報を出力していて、1注文の情報を横一列で出力したい tsurtua 2017/10/20 16:29
     Re: 受注管理画面のCSVダウンロードで商ン情報をだしていて、1注文の情報を横一列で出力したい yuh 2017/10/20 17:07
       Re: 受注管理画面のCSVダウンロードで商ン情報をだしていて、1注文の情報を横一列で出力したい tsurtua 2017/10/20 17:25
         Re: 受注管理画面のCSVダウンロードで商ン情報をだしていて、1注文の情報を横一列で出力したい yuh 2017/10/20 17:42
           Re: 受注管理画面のCSVダウンロードで商ン情報をだしていて、1注文の情報を横一列で出力したい tsurtua 2017/10/20 17:45
             Re: 受注管理画面のCSVダウンロードで商ン情報をだしていて、1注文の情報を横一列で出力したい yuh 2017/10/20 17:59
               Re: 受注管理画面のCSVダウンロードで商ン情報をだしていて、1注文の情報を横一列で出力したい tsurtua 2017/10/23 9:27
                 Re: 受注管理画面のCSVダウンロードで商ン情報をだしていて、1注文の情報を横一列で出力したい yuh 2017/10/23 11:04

 



ログイン


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

統計情報

総メンバー数は88,882名です
総投稿数は110,000件です

投稿数ランキング

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
1295
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.