バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 受注CSVに送料、手数料のレコードを出力させないようにしたい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tschappie
投稿日時: 2019/4/5 19:55
対応状況: 解決済
半人前
登録日: 2019/3/22
居住地:
投稿: 12
受注CSVに送料、手数料のレコードを出力させないようにしたい
配送システムに読み込ませる為、
受注CSVを出力した際に、同じ注文IDで
商品名の箇所が
「送料」、「手数料」
となっている行がそれぞれ別途出力されてしまいます。
一行で受注情報をまとめる方法、あるいはプラグインをお教えいただけませんでしょうか。

↓こうなってしまうのを1行に纏めたい
注文番号,受注日,.............. 商品名,個数,価格,合計
1,"2019-03-26 20:21:43",.......商品名●●●,2,3400.00,8144.00
1,"2019-03-26 20:21:43",.......手数料,1,0.00,8144.00
1,"2019-03-26 20:21:43",.......送料,1,800.00,8144.00


[EC-CUBE] 4.0.2 新規
[レンタルサーバ] さくらVPS
[OS] win10 CentOs7
[PHP] 7.1
[データベース] MySQL5.5
umebius
投稿日時: 2019/4/6 9:47
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1200
Re: 受注CSVに送料、手数料のレコードを出力させないようにしたい
受注CSV出力はsrc/Eccube/Controller/Admin/Order/OrderController.phpのexportCsvメソッドで出力されます。

CsvExportServiceのexportDataしている部分のコールバックfunctionで決定されます。
ですので、ここをカスタマイズしてやればご希望の挙動にできます。

カスタマイズディレクトリにこのメソッド自体コピーしてカスタマイズしてやるのが簡単かと思います。


----------------
EC-CUBE3系4系 カスタマイズ ECのプロがシステム特急案件承ります。
公式インテグレートパートナー (株)U-Mebius

tschappie
投稿日時: 2019/4/8 19:26
対応状況: −−−
半人前
登録日: 2019/3/22
居住地:
投稿: 12
Re: 受注CSVに送料、手数料のレコードを出力させないようにしたい
ありがとうございます。
OrderController.phpの該当箇所におきまして


手数料、送料のレコードでは商品コードがNULLのため、
商品コードの有無で読み込むレコードを分岐出来ないかとは思うのですが
記述が分からず難儀しております。

 
下記では分らぬまま書いて当たり前ですが商品コードのみ表示になってしまいます。
 
記述例をご教授頂けますと大変ありがたく存じます。


// データ行の出力.
            $this->csvExportService->setExportQueryBuilder($qb);
            $this->csvExportService->exportData(function ($entity, $csvService) use ($request) {
			
			
			
                $Csvs = $csvService->getCsvs();

                $Order = $entity;
                $OrderItems = $Order->getOrderItems();
              //  $OrderItems = $Order->getOrder();

                foreach ($OrderItems as $OrderItem) {
				
                    $ExportCsvRow = new ExportCsvRow();

                    // CSV出力項目と合致するデータを取得します.
                    foreach ($Csvs as $Csv) {
                        // 受注データを検索.
                        $ExportCsvRow->setData($csvService->getData($Csv, $Order));
                        if ($ExportCsvRow->isDataNull()) {
                            // 受注データにない場合は, 受注明細を検索.
                            $ExportCsvRow->setData($csvService->getData($Csv, $OrderItem));
                        }
                        if ($ExportCsvRow->isDataNull() && $Shipping = $OrderItem->getShipping()) {
                            // 受注明細データにない場合は, 出荷を検索.
                            $ExportCsvRow->setData($csvService->getData($Csv, $Shipping));
                        }

						if ($Csv->getDispName()=='商品コード') {
						
							$event = new EventArgs(
                            [
                                'csvService' => $csvService,
                                'Csv' => $Csv,
                                'OrderItem' => $OrderItem,
                                'ExportCsvRow' => $ExportCsvRow,
                            ],
                            $request
							);
							$this->eventDispatcher->dispatch(EccubeEvents::ADMIN_ORDER_CSV_EXPORT_ORDER, $event);

							$ExportCsvRow->pushData();
						
                        }
						
						
                    }

                    //$row[] = number_format(memory_get_usage(true));
                    // 出力.
                    $csvService->fputcsv($ExportCsvRow->getRow());
                }
            });
468
投稿日時: 2019/4/9 10:12
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1685
Re: 受注CSVに送料、手数料のレコードを出力させないようにしたい
foreach ($Csvs as $Csv) {
はカラムのループで、その外側の
foreach ($OrderItems as $OrderItem) {
がレコードのループになります。

$ExportCsvRow = new ExportCsvRow();

$csvService->fputcsv($ExportCsvRow->getRow());
の間で1行分のCSVデータが作られていますので
商品コードの有無の判定を入れる箇所は上記コードの外側になるかと思います。

送料、手数料のレコードを出力しないだけなら簡単なのですが、
その情報はどこに持って行く予定でしょうか?
CSVのカラムを増やしたいのであれば、dtb_csvにレコードを追加する必要があると思います。
また、注文明細をループで順番に処理している以上、
CSVの出力処理とは別にOrderItemsの全レコードをループさせる必要があると思います。
今のままだと、1行目(商品)の注文明細のCSV出力時に
まだループで参照していない2行目(手数料)、3行目(送料)の情報を出力したいという形になるかと思いますので...


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

tschappie
投稿日時: 2019/4/9 11:29
対応状況: −−−
半人前
登録日: 2019/3/22
居住地:
投稿: 12
Re: 受注CSVに送料、手数料のレコードを出力させないようにしたい
ありがとうございます。
出力したCSVはクロネコヤマトのリピート通販ECシステムに読み込ませる予定なのですが、1商品につき1行内にまとまっていないと読み込めない仕様の為です。
 
dtb_csvにレコードは追加しており、カラムで送料・コレクト手数料は正しく表示されています。
抜き出すとこのようになっています。

送料,コレクト手数料,商品コード,商品名,.....
1160.00,324.00 ,S0001 ,商品名○○,
1160.00,324.00 , ,手数料,.....
1160.00,324.00 , ,送料,.....
 
2行目(手数料)、3行目(送料)レコードで更に表示されている状態になってしまっています。
tschappie
投稿日時: 2019/4/9 18:52
対応状況: −−−
半人前
登録日: 2019/3/22
居住地:
投稿: 12
Re: 受注CSVに送料、手数料のレコードを出力させないようにしたい
引用:

468さんは書きました:
foreach ($Csvs as $Csv) {
はカラムのループで、その外側の
foreach ($OrderItems as $OrderItem) {
がレコードのループになります。

$ExportCsvRow = new ExportCsvRow();

$csvService->fputcsv($ExportCsvRow->getRow());
の間で1行分のCSVデータが作られていますので
商品コードの有無の判定を入れる箇所は上記コードの外側になるかと思います。

送料、手数料のレコードを出力しないだけなら簡単なのですが、
その情報はどこに持って行く予定でしょうか?
CSVのカラムを増やしたいのであれば、dtb_csvにレコードを追加する必要があると思います。
また、注文明細をループで順番に処理している以上、
CSVの出力処理とは別にOrderItemsの全レコードをループさせる必要があると思います。
今のままだと、1行目(商品)の注文明細のCSV出力時に
まだループで参照していない2行目(手数料)、3行目(送料)の情報を出力したいという形になるかと思いますので...


重ねて申し訳ありません。
レコードのループの内側のカラムを条件にしては、おかしくなる件承知いたしました。
簡単に送料、手数料のレコードを出さない手段が分からず、何卒お教えいただけませんでしょうか。
468
投稿日時: 2019/4/10 11:14
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1685
Re: 受注CSVに送料、手数料のレコードを出力させないようにしたい
以下のようなコードで商品コードを判定して、
CSVレコードを出力しているループをスキップさせればよいのではないかと思います。
foreach ($OrderItems as $OrderItem) {
    //商品コードがなければループをスキップする
    if (!$OrderItem->getProductCode()) {
        continue;
    }
    $ExportCsvRow = new ExportCsvRow();


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

tschappie
投稿日時: 2019/4/10 16:29
対応状況: −−−
半人前
登録日: 2019/3/22
居住地:
投稿: 12
Re: 受注CSVに送料、手数料のレコードを出力させないようにしたい
ありがとうございます!
1行だけ取り出せるようになりました!
大変助かりました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


ec-cube.co

統計情報

総メンバー数は42,317名です
総投稿数は90,793件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1882
4
468
1685
5
yuh
1571
6
red
1245
7
umebius
1200
8
fukap
907
9
tsuji
837
10
shutta
827
11 ramrun 789
12
tao_s
699
13
h_tanaka
693
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© LOCKON CO.,LTD. All Rights Reserved.