バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tschappie
投稿日時: 2019/4/10 16:29
対応状況: −−−
半人前
登録日: 2019/3/22
居住地:
投稿: 21
Re: 受注CSVに送料、手数料のレコードを出力させないようにしたい
ありがとうございます!
1行だけ取り出せるようになりました!
大変助かりました。
468
投稿日時: 2019/4/10 11:14
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
Re: 受注CSVに送料、手数料のレコードを出力させないようにしたい
以下のようなコードで商品コードを判定して、
CSVレコードを出力しているループをスキップさせればよいのではないかと思います。
foreach ($OrderItems as $OrderItem) {
    //商品コードがなければループをスキップする
    if (!$OrderItem->getProductCode()) {
        continue;
    }
    $ExportCsvRow = new ExportCsvRow();


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

tschappie
投稿日時: 2019/4/9 18:52
対応状況: −−−
半人前
登録日: 2019/3/22
居住地:
投稿: 21
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行目(送料)の情報を出力したいという形になるかと思いますので...


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

送料,コレクト手数料,商品コード,商品名,.....
1160.00,324.00 ,S0001 ,商品名○○,
1160.00,324.00 , ,手数料,.....
1160.00,324.00 , ,送料,.....
 
2行目(手数料)、3行目(送料)レコードで更に表示されている状態になってしまっています。
468
投稿日時: 2019/4/9 10:12
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 3217
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/8 19:26
対応状況: −−−
半人前
登録日: 2019/3/22
居住地:
投稿: 21
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());
                }
            });
umebius
投稿日時: 2019/4/6 9:47
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 受注CSVに送料、手数料のレコードを出力させないようにしたい
受注CSV出力はsrc/Eccube/Controller/Admin/Order/OrderController.phpのexportCsvメソッドで出力されます。

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

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


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

tschappie
投稿日時: 2019/4/5 19:55
対応状況: 解決済
半人前
登録日: 2019/3/22
居住地:
投稿: 21
受注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
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.