複数のお届け先を考慮すると、
こんなふうになるのかな。
public function checkInsertOrderProducts(&$objFormParam, $arrProductClassIds, $insert_product_class_id, $arrAddProductInfo)
{
if (!$arrProductClassIds || !in_array($insert_product_class_id, $arrProductClassIds)) {
$arrAddProducts = array();
$arrTax = SC_Helper_TaxRule_Ex::getTaxRule(0, $insert_product_class_id);
$arrAddProductInfo['product_name'] = ($arrAddProductInfo['product_name'])
? $arrAddProductInfo['product_name']
: $arrAddProductInfo['name'];
$arrAddProductInfo['price'] = ($arrAddProductInfo['price'])
? $arrAddProductInfo['price']
: $arrAddProductInfo['price02'];
$arrAddProductInfo['quantity'] = 1;
$arrAddProductInfo['tax_rate'] = ($objFormParam->getValue('order_tax_rate') == '')
? $arrTax['tax_rate']
: $objFormParam->getValue('order_tax_rate');
$arrAddProductInfo['tax_rule'] = ($objFormParam->getValue('order_tax_rule') == '')
? $arrTax['tax_rule']
: $objFormParam->getValue('order_tax_rule');
// added
// 「変更」の場合、お届け先情報の位置から受注情報の位置を求める
$product_class_id = $objFormParam->getValue('add_product_class_id');
if (SC_Utils_Ex::isBlank($product_class_id)) {
$change_no = $objFormParam->getValue('no');
$pre_product_class_id = $arrProductClassIds[$change_no];
$arrWorkProductClassIds = $objFormParam->getValue('product_class_id');
$pre_change_no = 0;
foreach ($arrWorkProductClassIds as $productClassId) {
if ($productClassId == $pre_product_class_id) {
break;
}
$pre_change_no++;
}
}
// added
foreach ($this->arrProductKeys as $insert_key) {
$value = $objFormParam->getValue($insert_key);
$arrAddProducts[$insert_key] = (is_array($value))? $value: array();
// added
if (SC_Utils_Ex::isBlank($product_class_id)) {
// 「変更」の場合
$arrWorkProducts = array();
$insert_change_no = 0;
foreach ($arrAddProducts[$insert_key] as $data) {
$arrWorkProducts[] = $data;
if ($insert_change_no == $pre_change_no) {
$arrWorkProducts[] = $arrAddProductInfo[$insert_key];
}
$insert_change_no++;
}
$arrAddProducts[$insert_key] = $arrWorkProducts;
} else {
// 「商品の追加」の場合
// added
$arrAddProducts[$insert_key][] = $arrAddProductInfo[$insert_key];
// added
}
// added
}
return $arrAddProducts;
} else {
//受注商品の数量は、複数配送側の集計で出しているので、重複しても数量を増やさない。
return null;
}
}