Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

「受注管理>受注登録」画面にて、商品変更すると受注商品情報がおかしくなる #830

Open
bbkids opened this issue Feb 4, 2024 · 1 comment

Comments

@bbkids
Copy link
Contributor

bbkids commented Feb 4, 2024

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);
        }

詳しい方ご確認頂けますようお願い致します。

@bbkids
Copy link
Contributor Author

bbkids commented Feb 7, 2024

public function shipmentEditProduct()の末尾に戻しましたところ、上記不具合は解消されました。

すみません、解消されません。
ダメですね、これやっちゃうと2アイテム(2行)以上ある時、1つめの商品変更をかけると1アイテム(1行)商品が消えます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant