バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 3系の受注CSVに配送情報や顧客情報を追加したい

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tirco
投稿日時: 2020/2/10 11:36
対応状況: 解決済
半人前
登録日: 2020/2/6
居住地:
投稿: 22
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
できました!ありがとうございます!
大変助かりました。

こちらで解決済みとさせていただきます。
umebius
投稿日時: 2020/2/10 11:33
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
参照渡しで use ($app, $request, &$i)でもダメでしょうか?

試してないのでダメだったらすみません..
tirco
投稿日時: 2020/2/10 11:31
対応状況: −−−
半人前
登録日: 2020/2/6
居住地:
投稿: 22
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
ありがとうございます。

$i = 0;の位置を
$app['eccube.service.csv.export']->exportDataの上に変更し、
$app['eccube.service.csv.export']->exportData(function ($entity, $csvService) use ($app, $request, $i)としたのですが、結果は変わらずでした。

渡す位置が違うのでしょうか。
umebius
投稿日時: 2020/2/10 10:49
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
$i = 0;は
$app['eccube.service.csv.export']->exportData(function ($entity, $csvService) use ($app, $request) {
よりも上で書いた方がいいんじゃないでしょうか。

このfunctionが実行されるのが受注単位ですので。

それで、use に参照渡しで渡せばいいんじゃないでしょうか。


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

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

tirco
投稿日時: 2020/2/10 9:47
対応状況: −−−
半人前
登録日: 2020/2/6
居住地:
投稿: 22
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
exportDataのforeach ($OrderDetails as $OrderDetail)のループ前に$i = 0;を挿入し、
いただいたコードをforeach ($Csvs as $Csv)の中に追記したところ、受注内で1,2,3と連番にはなるのですが、次の受注になるとまた1,2,3と1から始まってしまいます。
受注ごとではなく、ダウンロードしたCSVを通した連番にしたいのですが、変数とコードの位置を変えれば実現できるでしょうか?
umebius
投稿日時: 2020/2/8 17:20
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
連番を作るのはdtb_csvにレコード追加してもしなくても、どちらでもできるですが、追加する前提で考えると、dtb_csvのその項目が来た時に、連番の値を代入してやれば良いんですね。

exportDataのコールバックを登録する前に$i = 0;のように初期化しておいて、
exportDataのコールバックに参照渡しで渡してやり、あとは

登録したdtb_csvの項目が来た時に、$ExportCsvRow->setDataしてやれば良いと思います。

if ($Csv->getFieldName() === 'hogehoge'){
$ExportCsvRow->setData(++$i);
}


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

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

tirco
投稿日時: 2020/2/7 14:43
対応状況: −−−
半人前
登録日: 2020/2/6
居住地:
投稿: 22
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
ありがとうございます!
いただいたコードを追加して、無事に値が取得できました。
本当に助かりました。感謝いたします。

データの加工はShipping.phpのgetで
$this->tel01.'-'.$this->tel02.'-'.$this->tel03;
などすることでできました。
時間帯の加工も自分でやってみます。


出力したCSVに毎回1行目から連番を振る列をつくる、という機能は、
ここではなく新たにスレッドを立てた方が良いのでしょうか?
umebius
投稿日時: 2020/2/7 14:18
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
お届け先電話番号01〜03を繋げる、などはまた別の話になってしまいますが、とりあえず試していただければ。
addr02なんかはこれでいけるのではないでしょうか。
umebius
投稿日時: 2020/2/7 14:17
対応状況: −−−
登録日: 2016/7/22
居住地:
投稿: 2085
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
だとすると、Shippingのデータを取るにはOrderControllerのexportOrder内で



// 受注データを検索.
                        $ExportCsvRow->setData($csvService->getData($Csv, $Order));
                        if ($ExportCsvRow->isDataNull()) {
                            // 受注データにない場合は, 受注明細を検索.
                            $ExportCsvRow->setData($csvService->getData($Csv, $OrderDetail));
                        }

の後に

if ($ExportCsvRow->isDataNull()) {
                            // 受注データにない場合は, 受注明細を検索.
                            $ExportCsvRow->setData($csvService->getData($Csv, $Order->getShippings()->first()));
                        }


を付け加えてやります。

このカスタマイズをした上ででdtb_csvテーブルに、entity_nameをOrderDetailやOrderではなくShippingで出力したい項目のレコードを挿入してやります。
そうすればShippingからデータが取り出せると思います。


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

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

tirco
投稿日時: 2020/2/7 12:55
対応状況: −−−
半人前
登録日: 2020/2/6
居住地:
投稿: 22
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
そこそこ項目があり、また加工も必要なため、大変困っておりました。

複数配送なしが前提のサイトになります。
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
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.