「受注管理>受注登録」画面にて、商品変更すると受注商品情報がおかしくなる
PHP 8.0、7.4
【不具合内容】 「受注管理>受注登録」画面で既存の受注情報に以下の様に商品を追加、変更を行うと不具合発生 1.注文対し、新たに別の「商品B」を一つ追加 → 結果、二行目にその商品Bが追加される(問題なし) 2.更に新たに別の「商品C」を一つ追加 → 結果、三行目にその商品Cが追加される(問題なし) 3.三行目の「商品C」を変更ボタンを押し、「商品B」へ変更 → 結果、三行目の商品Cは、三行目に数量0で残ったままとなり、以降、削除、数量変更等が行えなくなる。(不具合発生)
少し調べてみますと、 LC_Page_Admin_Order_Edit.php の shipmentEditProduct() の一部のコードが過去に削除されてしまった為に起きている不具合と思われます。
過去に削除されたコード
//更新のみの場合、全配列を持っていないので、新しい配列を取得
$arrNewShipmentProducts = $this->getShipmentProducts($objFormParam);
$is_product_delete = true;
foreach ($arrNewShipmentProducts['shipment_product_class_id'] as $shipping_id => $arrShipmentProductClassIds) {
if (in_array($pre_shipment_product_class_id, $arrShipmentProductClassIds)) {
$is_product_delete = false;
break;
}
}
//商品情報から削除
if ($is_product_delete) {
$this->checkDeleteProducts($objFormParam, $arrPreProductClassIds, $pre_shipment_product_class_id, $this->arrProductKeys);
}
public function shipmentEditProduct()の末尾に戻しましたところ、上記不具合は解消されました。 おそらく過去のコード整理におけるデグレードでは無いかと思われます。
2015-12-10 GitCommit:a3f523ec149b public function shipmentEditProduct() 内から以下のコードが削除
//更新のみの場合、全配列を持っていないので、新しい配列を取得
$arrNewShipmentProducts = $this->getShipmentProducts($objFormParam);
$is_product_delete = true;
2016-05-06 GitCommit:02308a530ef9 public function shipmentEditProduct() 内から以下のコードが削除
foreach ($arrNewShipmentProducts['shipment_product_class_id'] as $shipping_id => $arrShipmentProductClassIds) {
if (in_array($pre_shipment_product_class_id, $arrShipmentProductClassIds)) {
$is_product_delete = false;
break;
}
}
//商品情報から削除
if ($is_product_delete) {
$this->checkDeleteProducts($objFormParam, $arrPreProductClassIds, $pre_shipment_product_class_id, $this->arrProductKeys);
}
詳しい方ご確認頂けますようお願い致します。
public function shipmentEditProduct()の末尾に戻しましたところ、上記不具合は解消されました。
すみません、解消されません。 ダメですね、これやっちゃうと2アイテム(2行)以上ある時、1つめの商品変更をかけると1アイテム(1行)商品が消えます。