質問 > その他 > 受注データCSVについて |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
kiki |
投稿日時: 2010/12/6 12:40
対応状況: −−−
|
常連 登録日: 2010/9/9 居住地: 投稿: 51 |
受注データCSVについて 受注データCSVの出力内容を下記のようにしたいと思っておりますが、どのPHPを修正すればよいか困っております。
電話番号 → ハイフンつなぎ 住所 → 県名+住所1 配送日 → 曜日をなくしたい 配送時間 → 4桁の数字にしたい(例)午前8時〜午後12時の場合 → 0812) 同じようなカスタマイズをされた方がいらっしゃいましたら、教えていただけると非常に助かります。 よろしくお願い致します。 開発環境 ------------ EC-CUBEバージョン:2.3.0 DB:MySQL |
sumkjr |
投稿日時: 2010/12/6 14:43
対応状況: −−−
|
一人前 登録日: 2010/10/8 居住地: 投稿: 103 |
Re: 受注データCSVについて カスタマイズはしたことないですが、ソースを読んでみました。
(手元にあった2.4.1で調べました) カスタマイズはホントはextendsに書いた方がいいと思いますが、extendsじゃない方の修正を書いておきます。 あと、影響調査も全くしていないので、思わぬところで動作がおかしくなるかもしれません。 ・CSV出力設定でdtb_csvの内容を表示する項目だけにする。 電話をハイフン繋ぎで1行にするということは、電話番号の項目は3つもいらないので、01だけにする ・data/class/pages/admin/order/LC_Page_Admin_Order.php L284でデータ部分を書き込んでいるので $data = $objCSV->lfGetOrderCSV("dtb_order", $where, $option, $arrval, $arrCsvOutputCols); と書き換える。 (lfGetCSVがどこで使われているかわからないから新規で作ります) ・data/class/helper/SC_Helper_CSV.php lfGetCSVをコピーし、for文の中の $data .= $this->lfMakeCSV($list_data[$i]); を $data .= $this->lfMakeOrderCSV($list_data[$i]); にし、メソッド名をlfGetOrderCSVにする。 IfMakeCSVをコピーし、 switch文の中をどのように出力したいかを書き変えて メソッド名をlfMakeOrderCSVにする。 たとえば、電話番号は「ハイフンつなぎ」ということで case 'order_tel01': $tmp = $list['order_tel01'].'-'.$list['order_tel02'].'-'.$list['order_tel03']; break; case 'order_tel02': case 'order_tel03': break; にするとかでしょうかね。。 (電話番号を01だけにしたら、02と03はいらないかも。) 実際に動かしてはいないので、これで出ないかもしれません。 |
kiki |
投稿日時: 2010/12/6 18:43
対応状況: −−−
|
常連 登録日: 2010/9/9 居住地: 投稿: 51 |
Re: 受注データCSVについて ご返信ありがとうございます!
電話番号の連結が問題なくできました。 受注商品詳細情報を出したいと思っておりますが、 可能でしょうか。 よろしくお願い致します。 |
sumkjr |
投稿日時: 2010/12/6 19:34
対応状況: −−−
|
一人前 登録日: 2010/10/8 居住地: 投稿: 103 |
Re: 受注データCSVについて わかりやすく、自分が書いたものを例にすると
・data/class/helper/SC_Helper_CSV.php のlfGetOrderCSVのメソッドの最初に dtb_orderとdtb_order_detailを取得するSQLを作る必要があります。 order_idをキーに内部結合させて取得すれば問題ないかと思います。 ただ、受注商品ごとに1行なのか、受注ごとに1行なのかで、取得の方法かCSVに出力させていく方法が変わります。 |
kiki |
投稿日時: 2010/12/6 20:02
対応状況: −−−
|
常連 登録日: 2010/9/9 居住地: 投稿: 51 |
Re: 受注データCSVについて 早速のお返事ありがとうございます。
先ほど「SC_Helper_CSV.php」を修正してみましたが、 CSV側では2行出力されているようですが、肝心の「商品名」がいっこうに出力されません。 <修正内容↓↓↓> ▼「lfGetOrderCSV」 ------- function lfGetOrderCSV($from, $where, $option, $arrval, $arrCsvOutputCols = "") { $cols = SC_Utils_Ex::sfGetCommaList($arrCsvOutputCols); $objQuery = new SC_Query(); $objQuery->setoption($option); $from = "dtb_order join dtb_order_detail using(order_id)"; $list_data = $objQuery->select($cols, $from, $where, $arrval); $max = count($list_data); if (!isset($data)) $data = ""; for($i = 0; $i < $max; $i++) { // 各項目をCSV出力用に変換する。 $data .= $this->lfMakeOrderCSV($list_data[$i]); } return $data; } ---------- また、「dtd_csv」にも項目を一つ増やしています。 ▼「DB追加」 ----------- insert into dtb_csv (csv_id,col,disp_name,rank,status,create_date,update_date) values (6,'product_name','商品名',1,1,now(),now()) ------------- ▼「lfMakeOrderCSV」 ------------- function lfMakeOrderCSV($list) { $line = ""; reset($list); while(list($key, $val) = each($list)){ $tmp = ""; switch($key) { case 'order_pref': $tmp = $this->arrPref[$val]; break; case 'deliv_pref': $tmp = $this->arrPref[$val]; break; case 'order_tel01': $tmp = $list['order_tel01'].'-'.$list['order_tel02'].'-'.$list['order_tel03']; break; case 'deliv_zip01': $tmp = $list['deliv_zip01'].'-'.$list['deliv_zip02']; break; default: $tmp = $val; break; } $tmp = ereg_replace("[\",]", " ", $tmp); $line .= "\"".$tmp."\","; } // 文末の","を変換 $line = $this->replaceLineSuffix($line); return $line; } ------------- どうしたら「商品名」が出力されるようになるでしょうか。 |
sumkjr |
投稿日時: 2010/12/7 10:12
対応状況: −−−
|
一人前 登録日: 2010/10/8 居住地: 投稿: 103 |
Re: 受注データCSVについて 商品名は受注及び受注詳細テーブルに持っていないようなので、
商品マスタからも取得させる必要があります。 ただ、商品マスタから取ってくることになるので、 商品名などが変更されたら、受注した時の商品名と変わります。 (価格は受注詳細テーブルに持っています。) どこにどんな情報があるかは http://wiki.ec-cube.net/ ここのマニュアルを見ればわかると思います。 |
kiki |
投稿日時: 2010/12/8 18:05
対応状況: 解決済
|
常連 登録日: 2010/9/9 居住地: 投稿: 51 |
Re: 受注データCSVについて sumkjr様ありがとうございます。
こちらDB「dtd_csv」のインストールの際に間違えてしまっていたようです。 無事商品情報が出力されました! |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |