質問 > フロント機能 > 受注管理画面の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の分の注文を横一列に ということです。 どちらかというと後者が理想で、これは4224の注文の二商品目以降の情報には受注番号がありません。 実装方法として、 SC_Helper_CSV.phpのcbOutputCSVの
辺りをカスタマイズすればいい気はするのですが、分かりません。 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 |