EC-CUBE 3系 受注CSVに利用ポイントと加算ポイントを掲載する
EC-CUBE 3.0.16 でカスタマイズしています。
受注CSVに利用ポイントと加算ポイントを追加しました。
カスタマイズ方法としては、
- dtb_csv に利用ポイントと加算ポイントを挿入
- プログラムに処理を追加 です。
3系になってからは、標準項目の追加なら、DBに値を追加するだけで出力してくれるので非常に便利でした。
ただプラグインの場合はそのプラグインがCSVの処理を入れてない場合 1. だけでは出力できないので、 プログラム側にカスタマイズが必要でした。
そこで今回は苦戦しました。またあまり正しくない方法で取り急ぎの対応…になります。
ググってみると、
- https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=18139&forum=13
- https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=19444&forum=11
- https://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=19318&forum=11
- https://github.com/EC-CUBE/ec-cube/pull/1944 などなど、参考になりそうなトピックスがありました。
まずは、1. dtb_csv に利用ポイントと加算ポイントを挿入を実行。
SQLでサクッと行います。
entity_name
は恐らく 'Plugin\Point\Entity\Point' であっていると思いますが、field_name
と reference_field_name
とはダミーになります。
↑は、'Plugin\Point\Entity\Point' で定義されているファイルの中の変数を入れると思いますが、 適切なものが見当たりませんでしたので… この辺アドバイスされたい…(>_<)
次に、2. プログラムに処理を追加
本来は新たに処理用のプラグインを作るようですが、今回は取り急ぎのため本体コードを編集します。
/src/Eccube/Controller/Admin/Order/OrderController.php が、 管理画面の受注画面をコントロールしているファイルになります。
exportOrder関数の中の、だいたい260行目に $event = new EventArgs( とあるので、その上に下記を追記します。
まず会員であるかをチェックして、非会員の場合は空欄(場合によっては0を出力してもよいかも)にしています。 非会員でも加算ポイントを取得しようとするとエラーが出るので会員チェックは重要です。
次に 'eccube.plugin.point.repository.point' でポイントのリポジトリにアクセスできるので、 用意されている関数に $Order を渡すと利用ポイント取得、加算ポイント取得が取得できます。
取得できたポイントを $Csv->getDispName() が '利用ポイント' と '加算ポイント' との時に、 CSVにセットする、という感じになっています。
配送CSVも同じ作業でできました。
以上ですが、冒頭にも言いましたがこれは良い方法でないので、 参考程度が良いかと思います。
それにしてもSymfonyとSilexを勉強しないとついていけませんね...。