バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

バグ報告 > 管理機能 > 【EC-CUBE 2.12.1】クロネコヤマト送り状発行ソフトB2対応CSVダウンロードプラグインのSQLにつきまして

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
MPV
投稿日時: 2012/8/27 19:19
対応状況: −−−
仙人
登録日: 2011/3/27
居住地:
投稿: 309
【EC-CUBE 2.12.1】クロネコヤマト送り状発行ソフトB2対応CSVダウンロードプラグインのSQLにつきまして
[EC-CUBE] 2.11.5 → 2.12.1
[レンタルサーバ] WADAX
[OS] Red Hat Linux
[PHP] PHP 5.1.6
[データベース] MySQL 5.0.95
[WEBサーバ] Apache
[ブラウザ] Firefox 14.0.1 Google Chrome 21.0.1180.83 IE9

開発環境

[EC-CUBE] 2.12.1
[レンタルサーバ] なし(XAMPP 1.7.7のため)
[OS] Windows7 Professional
[PHP] PHP 5.3.8
[データベース] MySQL 5.5.16
[WEBサーバ] Apache/2.2.21
[ブラウザ] Firefox 14.0.1 Google Chrome 21.0.1180.83 IE9

お世話になります。

題記プラグインを導入して確認していたのですが
当方の環境では以下の箇所で引っかかり、csvがきちんと
出力されていませんでした。

data/downloads/plugin/KuronekoB2/KuronekoB2.php の47行目


    $dtb_csv_val = array ('no'=>628,'csv_id'=>6,'col'=>'(select product_name from dtb_order_detail where dtb_order_detail.order_id = dtb_shipping.order_id)  as Y28','disp_name'=>'品名1','rank'=>28,'rw_flg'=>1,'status'=>1,'create_date'=>'CURRENT_TIMESTAMP',        'update_date'=>'CURRENT_TIMESTAMP','mb_convert_kana_option'=>'','size_const_type'=>'','error_check_types'=>'') ; $objQuery->insert('dtb_csv',$dtb_csv_val);


DBを確認したところ、同じorder_idで複数レコード存在する場合が
あるので、ダメだったようです。

当方は暫定的ですが、以下のようにしました。


    $dtb_csv_val = array ('no'=>628,'csv_id'=>6,'col'=>'(select product_name from dtb_order_detail where dtb_order_detail.order_id = dtb_shipping.order_id group by order_id)  as Y28','disp_name'=>'品名1','rank'=>28,'rw_flg'=>1,'status'=>1,'create_date'=>'CURRENT_TIMESTAMP', 'update_date'=>'CURRENT_TIMESTAMP','mb_convert_kana_option'=>'','size_const_type'=>'','error_check_types'=>'');
    $objQuery->insert('dtb_csv',$dtb_csv_val);


あと、dtb_csvに登録された(インストール時に登録される)
SQL文については、以下のようにphpmyadminで変更しました。
ちなみに当方はmySQLですので、文字列連結は一応CONCATで
行っています。

もちろん
data/downloads/plugin/KuronekoB2/KuronekoB2.php
の該当箇所も修正しました。


UPDATE dtb_csv SET col='CONCAT(lpad(order_id,6,0), \'_\', lpad(shipping_id,2,0)) as Y1' WHERE no=601;
UPDATE dtb_csv SET col='CONCAT(shipping_tel01, \'-\', shipping_tel02, \'-\', shipping_tel03) as Y9' WHERE no=609;
UPDATE dtb_csv SET col='CONCAT(shipping_zip01, shipping_zip02) as Y11' WHERE no=611;
UPDATE dtb_csv SET col='CONCAT(shipping_name01, \' \', shipping_name02) as Y16' WHERE no=616;
UPDATE dtb_csv SET col='(select CONCAT(order_tel01, \'-\', order_tel02, \'-\', order_tel03) from dtb_order where dtb_order.order_id = dtb_shipping.order_id ) as Y20' WHERE no=620;
UPDATE dtb_csv SET col='(select CONCAT(order_zip01, order_zip02) from dtb_order where dtb_order.order_id = dtb_shipping.order_id) as Y22' WHERE no=622;
UPDATE dtb_csv SET col='(select order_addr01 from dtb_order where dtb_order.order_id = dtb_shipping.order_id) as Y23' WHERE no=623;
UPDATE dtb_csv SET col='(select CONCAT(order_name01, \' \', order_name02) from dtb_order where dtb_order.order_id = dtb_shipping.order_id) as Y25' WHERE no=625;
UPDATE dtb_csv SET col='(select CONCAT(order_kana01, \' \', order_kana02) from dtb_order where dtb_order.order_id = dtb_shipping.order_id) as Y26' WHERE no=626;
UPDATE dtb_csv SET col='(select product_name from dtb_order_detail where dtb_order_detail.order_id = dtb_shipping.order_id group by order_id) as Y28' WHERE no=628;


これで確認してみたところ、csvファイルがきちんと
取得できているようでした。

ご確認頂ければ幸いです。
どうぞよろしくお願いいたします。<(_ _)>
MPV
投稿日時: 2012/8/28 13:32
対応状況: −−−
仙人
登録日: 2011/3/27
居住地:
投稿: 309
Re: 【EC-CUBE 2.12.1】クロネコヤマト送り状発行ソフトB2対応CSVダウンロードプラグインのSQLにつきまして
自己レスで恐縮です。

その後確認したのですが、csv生成時には
最初の受注情報の検索条件が有効にはならず
全件取得してしまっているようです。


$arrProcuct_id=array();
$arrProduct_id=$_POST['pdf_order_id'];
if (count($arrProduct_id) > 0) {
    $where = $where." order_id in (";
    $rcnt = 0;
    foreach($arrProduct_id as $product_id) {
            if ($rcnt > 0) {
                $where = $where.",".$product_id;
        }else{
            $where = $where.$product_id;
            }
        $rcnt += 1;
    }
    $where = $where.")";
}else{
    $where = "1=1";
}


当方の環境では、上記処理は必ずelseに流れてしまいました。

ですので、受注条件設定のフォーム内容を取得して
そこから注文番号を取得してSQLで範囲指定するように
変更したところ、注文番号については絞り込みした
結果の表示内容と同じデータがcsvで取得できました。

ただ、他の検索条件も同様にcsvデータの生成時には
考慮されていないので、それぞれについて判別しないと
いけないことがわかりました。

備忘録を兼ねて報告させて頂きます。
mursi
投稿日時: 2012/8/31 20:33
対応状況: −−−
新米
登録日: 2012/8/9
居住地:
投稿: 7
Re: 【EC-CUBE 2.12.1】クロネコヤマト送り状発行ソフトB2対応CSVダウンロードプラグインのSQLにつきまして
当方でも同じように最初の受注情報の検索条件が有効にはならず
全件取得してしまっているのですが、

引用:


ですので、受注条件設定のフォーム内容を取得して
そこから注文番号を取得してSQLで範囲指定するように
変更したところ、注文番号については絞り込みした
結果の表示内容と同じデータがcsvで取得できました。



上記部分をもう少し詳しく、説明いただけませんでしょうか?
MPV
投稿日時: 2012/9/1 12:30
対応状況: −−−
仙人
登録日: 2011/3/27
居住地:
投稿: 309
Re: 【EC-CUBE 2.12.1】クロネコヤマト送り状発行ソフトB2対応CSVダウンロードプラグインのSQLにつきまして
mursi様

コメントありがとうございます。
稚拙なコードで恐縮ですが・・・。

data/downloads/plugin/KuronekoB2/KuronekoB2.php


if ($_POST['mode'] == "csv2") { 
    $objCSV = new SC_Helper_CSV_Ex();
    $objCSV->arrSubnavi[6] = 'kuronekob2';
    $objCSV->arrSubnaviName[6] = 'クロネコ';

    $objFormParam = new SC_FormParam_Ex();
    LC_Page_Admin_Order::lfInitParam($objFormParam);
    $objFormParam->setParam($_POST);

    $objFormParam->convParam();
    $objFormParam->trimParam();

    $search_order_id1 = $objFormParam->getValue('search_order_id1');
    $search_order_id2 = $objFormParam->getValue('search_order_id2');

    /* 注文番号が開始番号指定の場合 */
    if ( ($search_order_id1 !='') && ($search_order_id2 =='') ) {
        $where = 'order_id >= '. $search_order_id1;
    }
    /* 注文番号が終了番号指定の場合 */
    elseif ( ($search_order_id1 =='') && ($search_order_id2 !='') ) {
        $where = 'order_id <= ' . $search_order_id2;
    }
    /* 注文番号が範囲指定の場合 */
    elseif ( ( $search_order_id1 <= $search_order_id2 ) &&
             ($search_order_id1 !='') &&
             ($search_order_id2 !='') ) {
        $where = 'order_id BETWEEN '. $search_order_id1 . ' AND ' . $search_order_id2;
    }
    /* 注文番号全ての場合 */
    elseif ( ($search_order_id1 == '') && ($search_order_id2 =='') ) {
        $where = '1';
    }
    else {
        $where = '1';
    }


但し上記のコードだと、本当に注文番号のみでしか出力の
絞り込みができていないので、全ての検索条件にきちんと
対応するのであれば、

data\class\pages\admin\order/LC_Page_Admin_Order.php

の中にある、buildQuery関数のような形でセットしないと
いけないと思います。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,297名です
総投稿数は109,692件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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