【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;
}
以上です。
