バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tirco
投稿日時: 2020/2/6 13:04
対応状況: −−−
新米
登録日: 2020/2/6
居住地:
投稿: 8
3系の受注CSVに配送情報や顧客情報を追加したい
[EC-CUBE] EC-CUBE3.0.18

いつも拝見させていただいてお世話になっています。

受注CSVのダウンロード項目でEccube\Entity\OrderとEccube\Entity\OrderDetailのデータがとれると思うのですが、さらにEccube\Entity\ShippingやEccube\Entity\Customerなどからもデータを追加したいと思っています。

以下の過去スレなどを見ながら、OrderController.phpにコードを追加したり、Order.phpを変更してみたものの、うまくいきませんでした。
https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=22182&forum=11


プラグインで対応するのではなく、デフォルトの受注CSVに追加したいと思っています。
どのようにしたらいいか、ご教授いただけますと幸いです。
よろしくお願いいたします。
tirco
投稿日時: 2020/2/6 17:16
対応状況: −−−
新米
登録日: 2020/2/6
居住地:
投稿: 8
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
phpMyadminでdtb_csvの該当レコードのentity_nameにEccube\Entity\Orderを指定し、
src/Eccube/Entity/Order.php内で
$this->Customer['buy_times'];
とすることで、
Customerからはデータ(購入回数)が取れました。

ただ、同じようにしてもShippingsからはデータがとれません。
引き続き、分かる方いらっしゃったらご教授ください。
よろしくお願いいたします。
umebius
投稿日時: 2020/2/7 12:19
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1562
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
配送CSVではなく、受注CSVの方でShippingsのデータを取得したいということでしょうか?

また、Shippingsのどのようなデータを取得されたいのでしょうか?


----------------
EC-CUBE3系4系 カスタマイズ ECのプロがシステム特急案件承ります。
公式インテグレートパートナー エンジニア募集中

tirco
投稿日時: 2020/2/7 12:40
対応状況: −−−
新米
登録日: 2020/2/6
居住地:
投稿: 8
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
ご返信ありがとうございます。

umebiusさまのおっしゃる通り、配送CSVではなく受注CSVのほうでShippingsのデータを取得したいです。

Shippingsの取得したいデータは、
・tel01-tel02-tel03(お届け先電話番号01〜03を繋げたデータ)
・name01name02(お届け先名を繋げたデータ)
・zip01-zip02(お届け先郵便番号を繋げたデータ)
・Pref.addr01(都道府県名と住所1を繋げたデータ)
・addr02(お届け先住所2)
・company_name(お届け先会社名)
・shipping_delivery_date(お届け予定日をY/m/d形式で)
・shipping_delivery_time(お届け希望時間、こちらは例えば「
午前中」を「0812」などに置き換えたいと思っています)

また、Shippingsではないかもしれませんが、
1から連番を吐き出す列もつくりたいと思っています。

もしお分かりでしたら、よろしくお願いいたします。
umebius
投稿日時: 2020/2/7 12:43
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1562
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
なるほど、結構項目ありますね。

複数配送は無しという前提のサイトになりますか?

Shippingsが複数になる可能性があるのであれば、その対応をしないといけないための確認になります。


----------------
EC-CUBE3系4系 カスタマイズ ECのプロがシステム特急案件承ります。
公式インテグレートパートナー エンジニア募集中

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

複数配送なしが前提のサイトになります。
umebius
投稿日時: 2020/2/7 14:17
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1562
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-CUBE3系4系 カスタマイズ ECのプロがシステム特急案件承ります。
公式インテグレートパートナー エンジニア募集中

umebius
投稿日時: 2020/2/7 14:18
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1562
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
お届け先電話番号01〜03を繋げる、などはまた別の話になってしまいますが、とりあえず試していただければ。
addr02なんかはこれでいけるのではないでしょうか。
tirco
投稿日時: 2020/2/7 14:43
対応状況: −−−
新米
登録日: 2020/2/6
居住地:
投稿: 8
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
ありがとうございます!
いただいたコードを追加して、無事に値が取得できました。
本当に助かりました。感謝いたします。

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


出力したCSVに毎回1行目から連番を振る列をつくる、という機能は、
ここではなく新たにスレッドを立てた方が良いのでしょうか?
umebius
投稿日時: 2020/2/8 17:20
対応状況: −−−
登録日: 2016/7/22
居住地: 東京日本橋
投稿: 1562
Re: 3系の受注CSVに配送情報や顧客情報を追加したい
連番を作るのはdtb_csvにレコード追加してもしなくても、どちらでもできるですが、追加する前提で考えると、dtb_csvのその項目が来た時に、連番の値を代入してやれば良いんですね。

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

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

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


----------------
EC-CUBE3系4系 カスタマイズ ECのプロがシステム特急案件承ります。
公式インテグレートパートナー エンジニア募集中

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は59,022名です
総投稿数は95,066件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
2035
4
468
1978
5
yuh
1612
6
umebius
1562
7
red
1391
8
h_tanaka
970
9
fukap
907
10
tsuji
863
11
shutta
835
12 ramrun 789
13
tao_s
783
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.