質問 > 管理機能 > dtb_shipment_itemテーブルにorder_detail_idの値を格納したい |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
mtec |
投稿日時: 2015/10/8 17:33
対応状況: −−−
|
常連 登録日: 2014/11/18 居住地: 投稿: 60 |
Re: dtb_shipment_itemテーブルにorder_detail_idの値を格納したい ------------どうしても解決できない処理------------------------
同じ商品コードでもオプション項目3つを追加し、 オプション項目が違えば、別商品としてカートに格納されるように 以下のように修正し、購入までは無事に終えることができます。 1.dtb_order_detailテーブルに、項目を追加 項目名「all_data」 2.SC_CartSession.phpを編集 public function addProduct($product_class_id, $quantity,$tuika1,$tuika2,$tuika3){ ////略///// if ($this->cartSession[$productTypeId][$i]['id'] == $product_class_id && $this->cartSession[$productTypeId][$i]['tuika1'] == $tuika1 && $this->cartSession[$productTypeId][$i]['tuika2'] == $tuika2 && $this->cartSession[$productTypeId][$i]['tuika3'] == $tuika3) { $this->cartSession[$productTypeId][$i]['quantity'] += $quantity; //途中省略しています } if (!$find) { $this->cartSession[$productTypeId][$max+1]['id'] = $product_class_id; $this->cartSession[$productTypeId][$max+1]['quantity'] = $quantity; $this->cartSession[$productTypeId][$max+1]['cart_no'] = $this->getNextCartID($productTypeId); //この部分に追加 $this->cartSession[$productTypeId][$max+1]['tuika1'] = $tuika1; $this->cartSession[$productTypeId][$max+1]['tuika2'] = $tuika2; $this->cartSession[$productTypeId][$max+1]['tuika3'] = $tuika3; //記述は悪いですが、3つの項目を1つにまとめてセッションに追加し動作させています。 $all_data = $tuika1.",".$tuika2.",".$tuika3; $this->cartSession[$productTypeId][$max+1]['all_data'] = $all_data; } ※途中ところどころ省略し、説明させていただきます。 ------------------------------------------------------------------------------------- 2.SC_Helper_Purchase.phpを編集 public function registerOrderComplete($orderParams, &$objCartSession, $cartKey){ ////略///// foreach ($cartItems as $item) { $arrDetail[$i]['all_data']=$item['all_data']; } ////略///// $this->registerOrderDetail($orderParams['order_id'], $arrDetail); } ////略///// public function getOrderDetail($order_id, $has_order_status = true){ $objQuery =& SC_Query_Ex::getSingletonInstance(); $dbFactory = SC_DB_DBFactory_Ex::getInstance(); $col = <<< __EOS__ T3.product_id, T3.product_class_id as product_class_id, T3.product_type_id AS product_type_id, T2.product_code, T2.product_name, T2.classcategory_name1 AS classcategory_name1, T2.classcategory_name2 AS classcategory_name2, T2.price, T2.quantity, T2.point_rate, T2.tax_rate, T2.tax_rule, T2.all_data, __EOS__; } ------------------------------------------------------------------------------------------ のように、編集しました。 無事、商品購入まではできますが、受注管理画面にてつまずきます。 通常の購入は問題なく動作するのですが、 同じ商品コードで、オプションの違う商品を2つ以上購入した場合に、エラー表示されてしまいます。 原因は、配送商品の中にあるdtb_shipment_itemには商品コード1つの配送商品しか登録されないのに あると考えるのですが、うまく修正できず、本当に困っています。 どんな些細な事でも構いませんので、助言をいただけますと幸いです |
yuh |
投稿日時: 2015/10/8 17:53
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1819 |
Re: dtb_shipment_itemテーブルにorder_detail_idの値を格納したい LC_Page_Admin_Order_Edit.phpのdtb_shipment_itemとdtb_order_detail周りにまずはすべて追加していって、テンプレート側に追加するデータのフォームを追加する感じです。
あとたしか受注編集部分でdtb_order_detailは一度削除してから入れなおす処理を行っていたと思うので、そこらへんも注意してください。 EC-CUBEの中で一番管理画面の受注編集がめんどくさいので、大変かとは思いますが頑張ってください。 |
mtec |
投稿日時: 2015/10/8 19:23
対応状況: −−−
|
常連 登録日: 2014/11/18 居住地: 投稿: 60 |
Re: dtb_shipment_itemテーブルにorder_detail_idの値を格納したい アドバイス大変ありがとうございます。
いつもコメントをいただきまして、心よりお礼申し上げます。 LC_Page_Admin_Order_Edit.phpを今さらっと見ましたが 悩んでたところが解消されそうなさわやかな気持ちになれました。 がんばってみます。 |
mtec |
投稿日時: 2015/10/14 0:08
対応状況: −−−
|
常連 登録日: 2014/11/18 居住地: 投稿: 60 |
Re: dtb_shipment_itemテーブルにorder_detail_idの値を格納したい たびたび申し訳ありません。
dtb_shipping_itemテーブルに、新しい項目を追加し、 主キーに設定したのですが、 この操作は受注商品の重複のエラーとは関係ないのでしょうか? かなりの時間を費やしておりませんが、なかなか解決に至りません。 |
yuh |
投稿日時: 2015/10/14 0:28
対応状況: −−−
|
神 登録日: 2013/1/9 居住地: 大阪 投稿: 1819 |
Re: dtb_shipment_itemテーブルにorder_detail_idの値を格納したい たぶん追加したパラメータがうまくわたっていなくて、
shipping_id, product_class_id, order_id,order_detail_id でプライマリキーが張られているところに order_detail_idがわたってない事で、 order_detail_id = NULLとなってしまい、プライマリキーの重複エラーになったと思います。 詳しくはDB周り・カスタマイズ部分を確認しないことにはわかりませんが、たぶんそんな感じだとは思います。 |
mtec |
投稿日時: 2015/10/14 1:04
対応状況: −−−
|
常連 登録日: 2014/11/18 居住地: 投稿: 60 |
Re: dtb_shipment_itemテーブルにorder_detail_idの値を格納したい さっそくのアドバイス心よりお礼申し上げます。
そうなると、dtb_oder_detailテーブルに2つの商品として 登録されるように、dtb_shipment_itemテーブルにも 2つの商品として登録される必要があるということですかね。 現在、dtb_order_detailテーブルに2つの商品として登録され、 dtb_shipment_itemテーブルには1つの商品とみなされ登録されています。 やはりSC_Helper_Purchase.phpにて、 oder_detail_idに値を格納する必要がありますね。 |
mtec |
投稿日時: 2015/10/17 16:53
対応状況: −−−
|
常連 登録日: 2014/11/18 居住地: 投稿: 60 |
Re: dtb_shipment_itemテーブルにorder_detail_idの値を格納したい SC_Helper_Purchase.phpの中にある
setShipmentItemTempメソッドは、 どのタイミングで利用されるのでしょうか? order_detail_idを格納するのはあきらめて、 cart_noを格納しようと考えています。 話は変わりますが、 なぜ、$_SESSIONの["cart"]に重複商品が格納されるのに $_SESSION["shipment_item"]には1つとして認識されるかの ロジックが分かりません。 |
mtec |
投稿日時: 2015/10/17 22:02
対応状況: 解決済
|
常連 登録日: 2014/11/18 居住地: 投稿: 60 |
Re: dtb_shipment_itemテーブルにorder_detail_idの値を格納したい アドバイスをいただいたyuh様心よりお礼申し上げます。
もう必死でいじり倒したら、わけが分からないのですが、 出来ました。 心よりお礼申し上げます。 良く分かりませんが解決部分の最後のフレーズです。 getShipmentItemsメソッド内に記述 $arrItems = $objQuery->select('dtb_shipment_item.*', 'dtb_shipment_item join dtb_order_detail USING (product_class_id, order_id,order_detail_id)', 'order_id = ? AND shipping_id = ?',array($order_id, $shipping_id)); 非常に長くの期間を要しましたが、とにかく最高の気分です。 ありがとうございました。 |
« 1 (2) |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |