バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 受注管理画面ー注文編集画面で「この内容で登録する」押下後にdtb_shipment_itemの対象レコードが無くなっている。

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tsurtua
投稿日時: 2017/7/12 15:01
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 57
受注管理画面ー注文編集画面で「この内容で登録する」押下後にdtb_shipment_itemの対象レコードが無くなっている。

[EC-CUBE] EC-CUBEのバージョン:2.13.5 :新規インストール
[OS] OS:Windows8.1
[PHP] PHPのバージョン:PHP 5.6.24
[データベース] DB:MySQL 5.7.18
[ブラウザ] ブラウザ名:Chome
[導入プラグイン] プラグイン:のし対応 1.3.5/クロネコヤマト カード・後払い一体型決済コア機能プラグイン 1.0/全ページ対応パンくずリスト表示プラグイン 無料版 0.5


いつもお世話になっております。
表題のバグについて、皆様のお力をお借りしたく投稿致します。
どなたかこちらの件について何かお気づきのことがあれば些細なことでもよいのでご教授ください。


バグの条件として、
1.注文をおこなう
2.管理画面-受注管理画面の注文の編集画面で一度「この内容で登録する」ボタンをクリックして,
編集登録をおこなう(実際に何か編集してもしなくても良い)

以上の操作をおこなうと、dtb_shipment_itemにあった対象レコードがなくなります。
受注管理画面から注文を編集する際の仕様で、
”一度レコードの削除をおこなって、編集した内容で再登録している”
というような情報を見かけたことがあるのですが、この情報が正しければ再登録でうまくいっていないのか
とも思います。。

また、dtb_shipment_itemテーブルは、カスタマイズで以下二つのカラムを追加しています。
こちらが原因でカラム数などが影響して再登録がうまくいっていない等でしょうか?
○dtb_shipment_itemへ追加しているカラム
 ・tdk_no
 ・item_weight

なお、同バージョンのEC-CUBEのショッピングサイト(dtb_shipment_itemのカラム追加は行っていない)では
上記の現象は起きませんでした。


どなたか、原因か解決策などお分かりの方ご教授いただけないでしょうか?
些細な情報や予想でもよろしいので心当たりのある方は教えてください。。


以上、何卒よろしくお願いいたします。
yuh
投稿日時: 2017/7/14 11:27
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 受注管理画面ー注文編集画面で「この内容で登録する」押下後にdtb_shipment_itemの対象レコードが無くなっている。
dtb_shipment_itemテーブルへのカスタマイズってどのように処理を追加してますか?
そこらへん結構ややこしくて、色々手を加えないとなんでよくそのような不具合が起こる箇所です。


----------------


http://ec-lab.net/

tsurtua
投稿日時: 2017/7/14 13:50
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 57
Re: 受注管理画面ー注文編集画面で「この内容で登録する」押下後にdtb_shipment_itemの対象レコードが無くなっている。
yuh様ご返信ありがとうございます。

dtb_shipment_itemテーブルへのカスタマイズは、tdk_noとitem_weightの2カラムを追加しております。


まずtdk_noについては、
注文時に、値を作成してデフォルトであるカラム(quantity等)と同じようにDBに格納するようにしています。
具体的なソース上の修正点は、
SC_CartSession.phpのcalculateメソッドのforeach ( $_SESSION['shipping'] as $deli) {の下に、
$tdk_no += 1;
$_SESSION['shipping'][$deli['shipping_id']]['tdk_no'] = $tdk_no;

と記述、
SC_Helper_Purchase.phpのregisterShipmentItemメソッドの$arrValues['price'] = $price;の下に、
$arrValues['tdk_no'] = $arrParams['tdk_no'];

と記述しています。


item_weightについては、
注文時に、値を作成してデフォルトであるカラム(quantity等)と同じようにDBに格納するようにしています。
関係の具体的なソース上の修正点は、
SC_Helper_Purchase.phpのregisterShipmentItemメソッドの$arrValues['price'] = $price;の下(tdk_noと同様に)に、
$arrValues['item_weight'] = $price01 * $arrValues['quantity'];//梱包重量

と記述しています。
($price01には商品の梱包重量を登録しているので、商品1つの梱包重量と個数を掛け合わせて算出しています。)

以上です。
やはり何か足りないのでしょうか。。?
yuh
投稿日時: 2017/7/14 14:13
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 受注管理画面ー注文編集画面で「この内容で登録する」押下後にdtb_shipment_itemの対象レコードが無くなっている。
すいません、そもそもな感じですが
受注編集を行った際にレコードが無くなるんですか?tdk_noとitem_weightのカラムデータが無くなるんでしょうか?

カラムのデータが無くなる場合はおそらくLC_Page_Admin_Order_Editで適切にデータを読み出せていないもしくは、registerShipmentItemにデータを渡せていない事が原因かと思われます。


----------------


http://ec-lab.net/

tsurtua
投稿日時: 2017/7/14 14:21
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 57
Re: 受注管理画面ー注文編集画面で「この内容で登録する」押下後にdtb_shipment_itemの対象レコードが無くなっている。
dtb_shipment_itemテーブルのレコードそのものが無くなります。
それでもやはり怪しいのはregisterShipmentItemな気がします。

registerShipmentItemは以下です。
確認して頂けますでしょうか?

    public function registerShipmentItem($order_id, $shipping_id, $arrPrm)
    {
        $arrParams = $arrPrm['shipment_item'];
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $table = 'dtb_shipment_item';
        $where = 'order_id = ? AND shipping_id = ?';
        $objQuery->delete($table, $where, array($order_id, $shipping_id));

        $objProduct = new SC_Product_Ex();
        foreach ($arrParams as $arrValues) {
            if (SC_Utils_Ex::isBlank($arrValues['product_class_id'])) {
                continue;
            }
            $d = $objProduct->getDetailAndProductsClass($arrValues['product_class_id']);
            $name = SC_Utils_Ex::isBlank($arrValues['product_name'])
                ? $d['name']
                : $arrValues['product_name'];

            $code = SC_Utils_Ex::isBlank($arrValues['product_code'])
                ? $d['product_code']
                : $arrValues['product_code'];

            $cname1 = SC_Utils_Ex::isBlank($arrValues['classcategory_name1'])
                ? $d['classcategory_name1']
                : $arrValues['classcategory_name1'];

            $cname2 = SC_Utils_Ex::isBlank($arrValues['classcategory_name2'])
                ? $d['classcategory_name2']
                : $arrValues['classcategory_name2'];

            $price = SC_Utils_Ex::isBlank($arrValues['price'])
                ? $d['price']
                : $arrValues['price'];
                
            $price01 = SC_Utils_Ex::isBlank($arrValues['price01'])
                ? $d['price01']
                : $arrValues['price01'];

            $arrValues['order_id'] = $order_id;
            $arrValues['shipping_id'] = $shipping_id;
            $arrValues['product_name'] = $name;
            $arrValues['product_code'] = $code;
            $arrValues['classcategory_name1'] = $cname1;
            $arrValues['classcategory_name2'] = $cname2;
            $arrValues['price'] = $price;
            $arrValues['tdk_no'] = $arrPrm['tdk_no'];
            $arrValues['item_weight'] = $price01 * $arrValues['quantity'];//梱包重量

            $arrExtractValues = $objQuery->extractOnlyColsOf($table, $arrValues);
            $objQuery->insert($table, $arrExtractValues);
        }
    }


すいません、お願いします。
yuh
投稿日時: 2017/7/14 14:34
対応状況: −−−
登録日: 2013/1/9
居住地: 大阪
投稿: 1818
Re: 受注管理画面ー注文編集画面で「この内容で登録する」押下後にdtb_shipment_itemの対象レコードが無くなっている。
ここら辺の処理ってなぜ変更されたかってわかりますか?


public function registerShipmentItem($order_id, $shipping_id, $arrPrm) { 
//↑ここの元々$arrParamsだった箇所を$arrPrmに変更した事
$arrParams = $arrPrm['shipment_item'];
//↑この処理の追加。

もし、completeOrderの部分のみ対応して、管理画面のLC_Page_Admin_Order_EditのregisterShipmentItemを使用している部分を変更していないのであれば、データは消えます。
あと、決済モジュール等でその部分を使用する場合があった時にも、同様に消える事となるので、そこらへんの引数とかの構造はあまり変更しない方がいいかと思います。


----------------


http://ec-lab.net/

tsurtua
投稿日時: 2017/7/14 14:59
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 57
Re: 受注管理画面ー注文編集画面で「この内容で登録する」押下後にdtb_shipment_itemの対象レコードが無くなっている。
ご指摘の箇所に関係する処理を一度見直させて頂きます。
また引き続き相談させて頂くかと思いますが何卒よろしくお願い致します。
tsurtua
投稿日時: 2017/7/24 13:37
対応状況: −−−
常連
登録日: 2017/3/31
居住地:
投稿: 57
Re: 受注管理画面ー注文編集画面で「この内容で登録する」押下後にdtb_shipment_itemの対象レコードが無くなっている。
yuh様、お久しぶりです。

その後、こちらの課題、解決しました。
やはり、ご指摘いただいた箇所のカスタマイズが原因でした。
$arrParams = $arrPrm['shipment_item'];

を私がやったカスタマイズに合わせて修正したところ、解決できました。
現在他の人間に注文と管理画面からの編集登録のテストを色々とやってもらっていますが、おそらく大丈夫です。

本当にありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
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.