【EC-CUBE2.13.1】EC-CUBE2.13.1で受注商品の数量変更を行うと異なる商品の数量が変更されるバグを修正する方法

【EC-CUBE2.13.1】EC-CUBE2.13.1の管理画面において受注商品の数量変更を行うと異なる商品の数量が変更されるバグを修正する方法です。

商品購入関連のヘルパークラスを修正する

商品購入関連ヘルパークラスの配送商品を取得する処理にバグがあるので、商品購入関連ヘルパーの拡張クラスに以下のメソッドを追加して下さい。

商品購入関連ヘルパーの拡張クラスの場所は以下のとおりです。

/data/class_extends/helper_extends/SC_Helper_Purchase_Ex.php

    /**
     * 配送商品を取得する.
     *
     * @param  integer $order_id    受注ID
     * @param  integer $shipping_id 配送先ID
     * @param  boolean $has_detail  商品詳細も取得する場合 true
     * @return array   商品規格IDをキーにした配送商品の配列
     */
    public function getShipmentItems($order_id, $shipping_id, $has_detail = true)
    {
        $objQuery =& SC_Query_Ex::getSingletonInstance();
        $objProduct = new SC_Product_Ex();
        $arrResults = array();
		$objQuery->setOrder('order_detail_id');
		$arrItems = $objQuery->select('dtb_shipment_item.*',
										'dtb_shipment_item JOIN dtb_order_detail
											ON dtb_shipment_item.product_class_id = dtb_order_detail.product_class_id
											AND dtb_shipment_item.order_id = dtb_order_detail.order_id',
										'dtb_order_detail.order_id = ? AND shipping_id = ?',
										array($order_id, $shipping_id));

        foreach ($arrItems as $key => $arrItem) {
            $product_class_id = $arrItem['product_class_id'];

            foreach ($arrItem as $detailKey => $detailVal) {
                $arrResults[$key][$detailKey] = $detailVal;
            }
            // 商品詳細を関連づける
            if ($has_detail) {
                $arrResults[$key]['productsClass']
                    =& $objProduct->getDetailAndProductsClass($product_class_id);
            }
        }

        return $arrResults;
    }

以上です。

お気軽にコメントをどうぞ

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください