質問 > 管理機能 > ヤマトB2へのCSV出力対応について |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
gunpowder |
投稿日時: 2011/5/29 16:18
対応状況: −−−
|
半人前 登録日: 2009/6/21 居住地: 投稿: 17 |
ヤマトB2へのCSV出力対応について いつも参考にさせていただいております。今回下記の質問があり投稿させていただきました。
受注データをクロネコヤマトのB2にCSVで取り込むべく、CSV出力項目設定の高度な設定で以下のSQL文を設定しました。 しかしB2側では伝票の種類を以下のような数値で設定しなければなりません。 ■送り状種類 送り状種類を指定します。 半角1文字 0 : 発払い 2 : コレクト 3 : メール便 4 : タイムサービス 6 : メール便速達 payment_methodで出力される文字列 "代金引換" を "2" とかに変更したいのですが、どのように記述すればいいでしょうか。 過去ログは見たのですが見つかりませんでした。よろしくお願いします。 EC-CUBEバージョン 2.4.0 PHPバージョン PHP 5.2.17 DBバージョン PostgreSQL 7.4.30 ↓設定したSQL↓ order_id as 受注番号 ,to_char(date 'now', 'YYYY/MM/DD') as 出荷予定日 , deliv_tel01 || deliv_tel02 || deliv_tel03 as お届け先TEL , deliv_name01 || deliv_name02 as お届け先名 , deliv_zip01 || deliv_zip02 as お届け先郵便番号 , mtb_pref.pref_name || deliv_addr01 as お届け先住所 , deliv_addr02 as お届け先建物名 , order_tel01 || order_tel02 || order_tel03 as ご依頼主TEL , order_name01 || order_name02 as ご依頼主名 , order_zip01 || order_zip02 as ご依頼主郵便番号 , mtb_pref.pref_name || order_addr01 as ご依頼主住所 , order_addr02 as ご依頼主建物名 , payment_method as 伝票種類 , payment_total as 代引金額 FROM dtb_order , mtb_pref WHERE dtb_order.deliv_pref=mtb_pref.pref_id AND status = 1 AND del_flg = 0 |
seasoft |
投稿日時: 2011/5/30 2:44
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: ヤマトB2へのCSV出力対応について PostgreSQL のマニュアルを見ると早いと思います。
たしか、replace 関数とかあったような。
|
asayama |
投稿日時: 2011/5/30 14:37
対応状況: −−−
|
一人前 登録日: 2008/1/9 居住地: 東京都品川区 投稿: 150 |
Re: ヤマトB2へのCSV出力対応について case使えばできますね。
ですが、代引きだけ抽出するSQLをわけて書いて、 固定で"2"とかにしたほうが簡単かもしれません。
|
gunpowder |
投稿日時: 2011/5/31 1:07
対応状況: −−−
|
半人前 登録日: 2009/6/21 居住地: 投稿: 17 |
Re: ヤマトB2へのCSV出力対応について ありがとうございます。下記のようにやってみたのですがCSVで開くと replaceという題名の列ができて代金引換という文字が入力されているのみです。やはり書き方がむちゃくちゃでしょうか。
order_id as 受注番号 ,to_char(date 'now', 'YYYY/MM/DD') as 出荷予定日 , deliv_tel01 || deliv_tel02 || deliv_tel03 as お届け先TEL , deliv_name01 || deliv_name02 as お届け先名 , deliv_zip01 || deliv_zip02 as お届け先郵便番号 , mtb_pref.pref_name || deliv_addr01 as お届け先住所 , deliv_addr02 as お届け先建物名 , order_tel01 || order_tel02 || order_tel03 as ご依頼主TEL , order_name01 || order_name02 as ご依頼主名 , order_zip01 || order_zip02 as ご依頼主郵便番号 , mtb_pref.pref_name || order_addr01 as ご依頼主住所 , order_addr02 as ご依頼主建物名 , payment_method as 伝票種類 , REPLACE(payment_method,'代金引換','2') , REPLACE(payment_method,'銀行振込','0') , REPLACE(payment_method,'クレジットカード払い','0') , REPLACE(payment_method,'コンビニ払い','0') , REPLACE(payment_method,'コレクト(到着時クレジット払い)','0') , payment_total as 代引金額 FROM dtb_order , mtb_pref WHERE dtb_order.deliv_pref=mtb_pref.pref_id AND status = 1 AND del_flg = 0 |
seasoft |
投稿日時: 2011/5/31 1:31
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: ヤマトB2へのCSV出力対応について 書きたかったのは、DECODE 関数だったのですが、PostgreSQL にはちょうど良い関数が無いようですね。最近 Oracle をチョイチョイ構っているので、混同してました。
一応、REPLACE でもできると思いますが、並列(カンマ区切り)でなく、ネストする必要があります。 REPLACE(REPLACE(payment_method,'発払い','0'),'コレクト','2') AS 送り状種類 ・・・的な。 それよりは、asayama 様の提案されている CASE 条件式を使った方がストレートですね。
|
asayama |
投稿日時: 2011/6/1 10:01
対応状況: −−−
|
一人前 登録日: 2008/1/9 居住地: 東京都品川区 投稿: 150 |
Re: ヤマトB2へのCSV出力対応について おせっかいですが、、
case payment_method when '代金引換' then '2' else '0' という感じです。 payment_id使った方がよいかもしれません。。
|
gunpowder |
投稿日時: 2011/6/1 22:44
対応状況: −−−
|
半人前 登録日: 2009/6/21 居住地: 投稿: 17 |
Re: ヤマトB2へのCSV出力対応について >seasoftさま
ありがとうございます! ご提案していただいた方法で下記のような感じでとりあえず設定しました。すごいことになっていますが、、、。 ここから詰めて行きたいと思います。とりあえずお礼までさせていただきます。 order_id as 受注番号 ,to_char(date 'now', 'YYYY/MM/DD') as 出荷予定日 , deliv_tel01 || deliv_tel02 || deliv_tel03 as お届け先TEL , deliv_name01 || deliv_name02 as お届け先名 , deliv_zip01 || deliv_zip02 as お届け先郵便番号 , mtb_pref.pref_name || deliv_addr01 as お届け先住所 , deliv_addr02 as お届け先建物名 , order_tel01 || order_tel02 || order_tel03 as ご依頼主TEL , order_name01 || order_name02 as ご依頼主名 , order_zip01 || order_zip02 as ご依頼主郵便番号 , mtb_pref.pref_name || order_addr01 as ご依頼主住所 , order_addr02 as ご依頼主建物名 , payment_method as 伝票種類 , REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(payment_method,'代金引換','2'),'銀行振込','0'),'クレジットカード払い','0'),'コンビニ払い','0'),'コレクト(到着時クレジット払い)','0') as 伝票種類 , payment_total as 代引金額 FROM dtb_order , mtb_pref WHERE dtb_order.deliv_pref=mtb_pref.pref_id AND status = 1 AND del_flg = 0 >asayamaさま スマートな方法ありがとうございます。 まだ試していませんが、COMPUTEX TAIPEI 出張から帰ってきたら試してみます。ありがとうございました!感謝。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |