バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 配送CSVで出力したときに、1受注1レコードで出力したい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
toku
投稿日時: 2020/4/14 17:29
対応状況: −−−
新米
登録日: 2020/4/14
居住地:
投稿: 5
配送CSVで出力したときに、1受注1レコードで出力したい

[EC-CUBE] EC-CUBE 4.0.3 新規インストール
[レンタルサーバ] さくらレンタルサーバ
[Perl]  5.14.4
[PHP] 7.2.28 (CGI)
[データベース] MySQL 5.7
[WEBサーバ] Apache/2.4.41

[問い合わせ内容]

初めてEC-CUBEを使って構築しています。
配送CSVで受注を出力した場合、明細単位でCSVのレコードが作成されますが、
送り状を印刷するためのデータとして利用するには不要な行を削除しないといけません。
1受注に対して1明細行で出力するようにするには、どうすればいいでしょうか?
ただし、他のCSV出力は明細を使用するので、
影響がでないようにしたいです。
おわかりなる方、教えてください。
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()の動きを簡単に解説すると
$this->csvExportService->exportData(function ($entity, $csvService) use ($request) {
~
});

の間が受注データの件数分ループされます。
ループ内に以下のような記述がありますが
$OrderItems = $Order->getOrderItems();
foreach ($OrderItems as $OrderItem) {
~
}

ここで受注毎の受注明細を取得し、さらに受注明細分ループしています。
2回目(受注明細)のループ内でCSV1行分のデータを作っています。

$ExportCsvRow = new ExportCsvRow(); => 新しい行を追加

$csvService->fputcsv($ExportCsvRow->getRow()); => 1行分のデータの書き出し

よって明細単位でCSVが出力されています。
この2回目のループを排除する事で受注単位でのCSV出力に変更する事が出来ます。
ただ2回目のループを排除した場合、以下の記述で取得している
出荷データ(配送先)を取得できなくなりますので
$Shipping = $OrderItem->getShipping()
$Orderから出荷データを取得するように変更する必要があります。

この辺りはEntityのリレーションを理解していないと難しいかもしれません。
あと、出荷先を複数に分けているような(分納)注文については
単純に受注単位でのCSV出力を行った場合、
正しい配送先と梱包すべき商品が分からなくなると思います。(CSVに商品情報が出力されなくなる為)

その為、配送CSVも受注明細単位で出力されていると思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

toku
投稿日時: 2020/4/16 16:20
対応状況: −−−
新米
登録日: 2020/4/14
居住地:
投稿: 5
Re: 配送CSVで出力したときに、1受注1レコードで出力したい
468様

回答ありがとうございました。
初心者には難しいですね。
余り予算もないので、できれば自分で何とかしたかったのですが、
時間もかかりそうですし、何より動かなくなると困るので
自分でするのは諦めます。
有料プラグインもあるようなので、
そちらを検討してみます。
ありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

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.