バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 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)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1290
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.