EC-CUBE 2系

EC-CUBE 2系で注文を受けた商品の規格を後で削除すると、管理画面で受注内容を編集できなくなる

by TheVOS posted Jan 02, 2020
?

Shortcut

Prev前へ 書き込み

Next次へ 書き込み

Larger Font Smaller Font 上へ 下へ Go comment 印刷
?

Shortcut

Prev前へ 書き込み

Next次へ 書き込み

Larger Font Smaller Font 上へ 下へ Go comment 印刷
Extra Form
原文出所 http://www.neobit.jp/archives/573

注文された規格を削除して、dtb_products_classテーブルから該当する規格データが無くなると、受注内容のたとえば発送先住所などを編集しようとしても数量の上限チェックに引っかかりエラーが出て受注内容の変更ができなくなってしまいます。

※ この現象は、規格のチェックBOXを外して更新 → チェックBOXを再度立てて更新 でも発生します。見た目は同じ規格が存在しているように見えますが、内部のproduct_class_idが変わってしまうのが原因です

product_class_idも引用してこれていないので画面処理もうまくいきません。
対応策として、もし規格データが削除されていた場合は在庫数チェックを行わないようにする事で受注内容の編集をできるようにしてみます。

まずdtb_products_classから規格データが無くなっていてもproduct_class_idやproduct_idを引用できるように商品詳細dtb_order_detailの方から参照するようにします
SC_Helper_Purchase.php の
function getOrderDetail のSQL文を書き換えます

-            T3.product_id,
-            T3.product_class_id as product_class_id,
+            T2.product_id,
+            T2.product_class_id as product_class_id,

LC_Page_Admin_Order_Edit.php の
function lfCheckError に処理をスルーさせるIF文を追加

            // 在庫数のチェック
            $arrProduct = $objProduct->getDetailAndProductsClass($arrValues['product_class_id'][$i]);

+            // 規格が削除されていたら在庫数チェックしない
+            if ($arrProduct['product_class_id'] == '') {
+                continue;
+            }

商品種類 product_type_id も引用してこれていなくて、画面にはエラー表示されませんが必須チェックに引っかかり先に進めなくなるのでこれもスルーさせます。
LC_Page_Admin_Order_Edit.php の
function lfInitParam を修正

        // 受注詳細情報
-        $objFormParam->addParam('商品種別ID', 'product_type_id', INT_LEN, 'n', array('EXIST_CHECK', 'MAX_LENGTH_CHECK', 'NUM_CHECK'), '0');
+        $objFormParam->addParam('商品種別ID', 'product_type_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'), '0');

視覚的にも、規格が削除されていて在庫数が連動しない商品だと分かったほうが良いので、数量欄のあるTDの背景色を赤色で表示してみます。
/data/Smarty/templates/admin/order/edit.tpl を修正

-                    <td class="center">
-                        <!--{assign var=key value="quantity"}-->
+                    <td class="center"<!--{if $arrForm.product_type_id.value[$product_index] == ''}--> style="background-color:#fdd"<!--{/if}-->>
+                        <!--{assign var=key value="quantity"}-->

そもそも関連データが存在している規格データを容易にdeleteしてしまう実装ってどうなの?っていう話なんですが。

Facebook [ja]コメント 


List of Articles
カテゴリー 番号 タイトル 日付 閲覧数
ヒント&ノウハウ共有 39 페이스북위젯 삽입하기 file 2018.12.15 61
クラス 38 클래스의 사용 2019.10.03 104
クラス 37 클래스의 구조 2019.10.03 48
クラス 36 클래스와 객체의 기초 file 2019.10.03 70
メールサービス 35 메일 사용자 설명서 2019.03.29 117
ヒント&ノウハウ共有 34 구글 캘린더 합치기 1 file 2018.12.12 504
EC-CUBE 3系 33 관리 화면의 사이드 메뉴에 항목 추가하는 방법 file 2019.11.11 182
EC-CUBE 4系 32 管理機能一覧 2020.11.12 47
EC-CUBE 3.x 31 新規作成したページURLから「user_data」を消す方法とURLを出力するテンプレートタグ file 2019.04.10 1216
EC-CUBE 2.x 30 商品数や階層に関係なく全カテゴリーを表示させる方法 file 2019.04.10 270
EC-CUBE 2.x 29 商品名などで長くなったテキストを省略する方法 file 2019.04.10 62
EC-CUBE 2.x 28 商品ステータスを変更・追加する方法 file 2019.04.10 74
EC-CUBE 2系 27 単体テストガイドライン 2019.09.28 120
EC-CUBE 2系 26 リファクタリングガイドライン 2019.09.28 179
EC-CUBE 4系 25 フロント機能一覧 2020.11.12 45
EC-CUBE 3.x 24 デフォルトのtitleを任意のものに変更する方法 file 2019.04.10 242
EC-CUBE 2.x 23 サイトデザインをPCで統一させる方法 file 2019.04.10 67
EC-CUBE 2系 22 イベントセット販売プラグインマニュアル file 2019.11.07 152
EC-CUBE 3.x 21 titleの並びや区切り記号を変更する方法 file 2019.04.10 109
マニュアル 20 THEVOS Youtube BOARD SKIN 사용 설명 2018.11.11 129
Board Pagination Prev 1 2 Next
/ 2