こんばんは、Webプログラマの篠田です。
PCの排熱が凶器になる季節になりました。
オフィスで使っているPCには既に、PCの冷却用空冷ファンを取り付けて快適に過ごしています。
EC-CUBEでサイトを運営されている方も多いと思います。
EC-CUBEの運用の中で出てくる困った問題が「受注商品のCSVダウンロード」です。
この問題に対して、対処方法をご紹介します。
問題点
EC−CUBEでは、受注管理機能としてCSVダウンロードができます。
しかし、その中に「商品名」という項目は存在しないのです。
つまり、商品名付きの受注データをEC-CUBE管理画面からは、ダウンロードができません。
模範解答
この問題に対しての模範解答は下記のとおりです。
「EC-CUBEの商品名を含む受注データのCSVダウンロード機能を実装する!」
「高度な設定でSQLを使いCSVダウンロードする」
このあたりが、Google先生に質問をして、解答として教えてもらえる内容かとおもいます。
プラグインを作る、または魔改造する
多くのWebプログラマが、持てるスキルとGoogle先生の助言をフルに使って、戦いを挑むベターな方法です。
ただし、この手法は「資金」と「時間」があることが前提になります。
「今日中にデータがほし良いんだよ。それも今回だけ。」
このような案件で、チャレンジすると目的を達成することはできません。
EC−CUBEでSQLを使う
これは、Webプログラマであれば、比較的手軽な方法です。
ただし、この方法にも罠があります。
一部のEC-CUBEでは、「高度な設定」を利用してSQLを実行すると、画面が真っ白になるという現象に遭遇します。
正直、お急ぎのときに不具合の原因を解決するというのは、ベストな方法ではありません。
低コストで解決する方法
いくつかの条件が必要となります。
1.1商品1受注データの形式で出力しても良い。
→ 1受注で複数商品を出力してほしいと言われるとダメです。
2.SQLは理解できる。
3.EC-CUBEの「高度な設定」でSQLが動かなかった。
この条件を満たしている場合に限りますので、予めご了承ください。
何をするかというと下記のSQL文を「phpMyAdmin」で実行します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
SELECT dtb_order.order_id, dtb_order.customer_id, dtb_order.message, dtb_order.order_name01, dtb_order.order_name02, dtb_order.order_kana01, dtb_order.order_kana02, dtb_order.order_email, dtb_order.order_tel01, dtb_order.order_tel02, dtb_order.order_tel03, dtb_order.order_fax01, dtb_order.order_fax02, dtb_order.order_fax03, dtb_order.order_zip01, dtb_order.order_zip02, (SELECT mtb_pref.name FROM mtb_pref WHERE mtb_pref.id = dtb_order.order_pref), dtb_order.order_addr01, dtb_order.order_addr02, dtb_order.order_sex, dtb_order.order_birth, dtb_order.order_job, dtb_order_detail.product_name, dtb_order_detail.product_code, dtb_order_detail.classcategory_name1, dtb_order_detail.classcategory_name2, dtb_order_detail.price, dtb_order_detail.quantity, dtb_order.subtotal, dtb_order.discount, dtb_order.deliv_fee, dtb_order.charge, dtb_order.use_point, dtb_order.add_point, dtb_order.tax, dtb_order.total, dtb_order.payment_total, dtb_order.deliv_id, dtb_order.payment_method, dtb_order.note, dtb_order.status, dtb_order.create_date, dtb_order.update_date, dtb_order.commit_date, dtb_order.device_type_id, (SELECT count(*) FROM dtb_shipping WHERE dtb_shipping.order_id = dtb_order.order_id) FROM dtb_order INNER JOIN dtb_order_detail ON dtb_order.order_id = dtb_order_detail.order_id WHERE del_flg = 0 |
この結果を、phpMyAdminの機能である「エクスポート」してください。
エクスポートをするときの設定は下記のとおりです。
1.「エクスポートの方法」:簡易
2.「フォーマット」:CSV
3.「エンコーディングへの変換」:なし
あとは、このCSVを必要に応じて加工するだけです。
Mac環境で調整される場合は「MacでダウンロードしたUTF-8のCSVデータを、文字化けせずにMac版Microsoft Excelで開ける方法」をご参照ください。
まとめ
長期的な運用を考えると、プラグインや魔改造をするのが一番良いと考えています。
ただ、一過性のものであるのであれば、SQLやphpMyAdminを使って、お手軽にデータを集める方が効率が良いかと思いますので、1つの方法としてお役に立てれば、幸いです。
PR
ALAKIでは、絶賛Webプログラマを募集中です!
素敵なリクルートサイトもオープンしましたので、興味のある方は是非、サイトをチェックしてみてくださいね。