質問 > 管理機能 > 配送CSVで出力したときに、1受注1レコードで出力したい |
管理機能
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
468 |
投稿日時: 2020/4/16 11:22
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 配送CSVで出力したときに、1受注1レコードで出力したい 受注CSVと配送CSVの出力処理は
/src/Eccube/Controller/Admin/Order/OrderController.phpの function exportCsv()に記述されております。 CSV出力の流れを確認していくとURLから繋がる2つのアクション function exportOrder()と function exportShipping()がそれぞれ定義されているのですが 最終的に$this->exportCsv()という形でfunction exportCsv()を呼び出しているようです。 (ECCUBE4ではCSV出力処理が共通化されています) その為、配送CSVのみ形態を変えたい場合、 function exportCsv()内部で判定を追加して処理を分岐させる、 function exportCsv()をコピーして配送CSV用のfunctionを新しく追記するといった形が考えられます。 function exportCsv()の動きを簡単に解説すると
の間が受注データの件数分ループされます。 ループ内に以下のような記述がありますが
ここで受注毎の受注明細を取得し、さらに受注明細分ループしています。 2回目(受注明細)のループ内でCSV1行分のデータを作っています。 $ExportCsvRow = new ExportCsvRow(); => 新しい行を追加 $csvService->fputcsv($ExportCsvRow->getRow()); => 1行分のデータの書き出し よって明細単位でCSVが出力されています。 この2回目のループを排除する事で受注単位でのCSV出力に変更する事が出来ます。 ただ2回目のループを排除した場合、以下の記述で取得している 出荷データ(配送先)を取得できなくなりますので $Shipping = $OrderItem->getShipping() $Orderから出荷データを取得するように変更する必要があります。 この辺りはEntityのリレーションを理解していないと難しいかもしれません。 あと、出荷先を複数に分けているような(分納)注文については 単純に受注単位でのCSV出力を行った場合、 正しい配送先と梱包すべき商品が分からなくなると思います。(CSVに商品情報が出力されなくなる為) その為、配送CSVも受注明細単位で出力されていると思います。
|
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
配送CSVで出力したときに、1受注1レコードで出力したい | toku | 2020/4/14 17:29 |
» Re: 配送CSVで出力したときに、1受注1レコードで出力したい | 468 | 2020/4/16 11:22 |
Re: 配送CSVで出力したときに、1受注1レコードで出力したい | toku | 2020/4/16 16:20 |