バグ報告 > 管理機能 > v2.13.0 管理画面:受注変更画面(複数配送でない)の数量チェックの動作に不具合がある。 |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
sumida |
投稿日時: 2013/10/7 15:57
対応状況: −−−
|
仙人 登録日: 2013/2/10 居住地: 広島県呉市ときどき瀬戸内海 投稿: 641 |
v2.13.0 管理画面:受注変更画面(複数配送でない)の数量チェックの動作に不具合がある。 受注情報変更画面にて、
デモデータをもとに、 1品目 なべ 数量1 2品目 アイス 数量1 の受注情報に対し、 ・2行目のアイスの数量を2に変更 情報の更新をすると、 1行目のなべの数量欄に2が表示され、「数量が在庫数より少ない」とエラーになります。 この時点で、なべの在庫は、99。アイスは、無制限になっています。 |
sumida |
投稿日時: 2013/10/7 23:06
対応状況: −−−
|
仙人 登録日: 2013/2/10 居住地: 広島県呉市ときどき瀬戸内海 投稿: 641 |
Re: v2.13.0 管理画面:受注変更画面(複数配送でない)の数量チェックの動作に不具合がある。 とりあえず、原因らしきものです。
data/class/pages/admin/order/LC_Page_Admin_Order_edit.php にある新規関数 setProductsQuantity が悪さをしているようです。 呼び出し元をコメントにすると、正常に動作します。
疑問点 (1) $arrProductsQuantity = $objFormParam->getValue('quantity'); いつ使用するのか。 (2) $arrQuantity['quantity'][$relation_key] = $arrUpdateQuantity[$product_class_id]; 受注編集画面の数量と同じ名称('quantity')を使用している。ユーザが操作した情報を強制的に書き換えていることになる。 もし、配送情報をもとにした、数量合計を保持するためであれば、名称('quantity')とは異なる名称にすべきと思います。 |
sumida |
投稿日時: 2013/10/8 18:19
対応状況: −−−
|
仙人 登録日: 2013/2/10 居住地: 広島県呉市ときどき瀬戸内海 投稿: 641 |
Re: v2.13.0 管理画面:受注変更画面(複数配送でない)の数量チェックの動作に不具合がある。 こちらの原因は、複数配送でない場合であっても、
setProductsQuantityが実行されるため、動作不良になっていると思います。 実行すべきかどうかの判断は、 ・複数配送(システムパラメタ)の設定で、判断して良いのか ・配送先の件数で、判断して良いのか この点については、確認していません。 追記: 配送先の件数で、判断してなければならないようです。 $objFormParam->getValue('shipping_quantity') > 1のとき、複数配送 以外のとき、お届け先1口 関数 setProductsQuantity 内で判断するなら、 count($arrShipmentsItems) > 1 再追記: 複数配送の場合、 各お届け先の数量を合計して、受注商品情報の数量に反映している。 複数配送でない場合、 逆に、受注商品情報の数量を、お届け先の数量にコピーする必要があると思う。 理由: edit.tplに、複数配送でない場合、 「配送先が1つでも、shipment_itemを更新するために必要」 というコメントがあり、コピーする必要があるのでは。 |
sumida |
投稿日時: 2013/10/10 17:23
対応状況: −−−
|
仙人 登録日: 2013/2/10 居住地: 広島県呉市ときどき瀬戸内海 投稿: 641 |
Re: v2.13.0 管理画面:受注変更画面(複数配送でない)の数量チェックの動作に不具合がある。 対策案です。
(追記:最新の修正案は、以降の投稿を参照してください。) data/class/pages/admin/order/LC_Page_Admin_Order_edit.php
|
sumida |
投稿日時: 2013/10/10 22:11
対応状況: 解決済
|
仙人 登録日: 2013/2/10 居住地: 広島県呉市ときどき瀬戸内海 投稿: 641 |
Re: v2.13.0 管理画面:受注変更画面(複数配送でない)の数量チェックの動作に不具合がある。 申し訳ありませんが、
再現できなくなりましたので、一旦、取り下げさせてください。 追記: 再現できていませんでしたが、再現できました。 v2.13.0をインストールした直後の場合、 商品2個、お届け先1件の受注情報を変更します。 変更内容: 商品2個目(2行目)の数量を変更すると、商品1個目(1行目)の数量になってしまいます。 |
sumida |
投稿日時: 2013/10/11 18:30
対応状況: −−−
|
仙人 登録日: 2013/2/10 居住地: 広島県呉市ときどき瀬戸内海 投稿: 641 |
Re: v2.13.0 管理画面:受注変更画面(複数配送でない)の数量チェックの動作に不具合がある。 原因が判明しました。
受注情報変更画面において、 お届け先が1件の場合、数量を変更すると、javascript quantityCopyForSingleShipping により、非表示項目のお届け先情報内の数量へコピーしています。 ここで、商品購入にあたり、 受注情報: なべ アイスクリーム の順番(購入順:dtb_order_detail)になっていますが、 お届け先情報: アイスクリーム なべ の順番(product_id順:dtb_shipment_item)になっています。 結果、受注情報のなべの数量を変更すると、お届け先情報のアイスクリームの数量が変更されます。 この表示順が一致すれば、問題解決です。 追記: 順番の同期ができれば良いのですが、 できないのであれば、 javascript quantityCopyForSingleShipping をはずして、 以前、提示させていただいたようなコードを追加するような修正になるのでは。 再追記: これでも、まだ、うまく動作していない。(非表示部分に数量のコピーができない) |
sumida |
投稿日時: 2013/10/12 14:54
対応状況: −−−
|
仙人 登録日: 2013/2/10 居住地: 広島県呉市ときどき瀬戸内海 投稿: 641 |
Re: v2.13.0 管理画面:受注変更画面(複数配送でない)の数量チェックの動作に不具合がある。 解決しました。
(配列に使用している2次元目の変数に間違いがあることに、気がつきませんでした。) 修正案 表示順の同期は、異なるテーブル内の商品情報なので、DBへの更新時に不都合が発生する懸念もあり、あきらめました。 data/Smarty/templates/admin/order/edit.tpl javascriptによる動的変更部分
使用しているHTML部分
data/class/pages/admin/order/LC_Page_Admin_Order_edit.php お届け先1件: コピー(受注商品情報の数量-->お届け先の数量) お届け先2件以上:(既存の処理) 合算後コピー(お届け先の数量合計)-->受注商品情報の数量
|
sumida |
投稿日時: 2014/1/9 15:12
対応状況: −−−
|
仙人 登録日: 2013/2/10 居住地: 広島県呉市ときどき瀬戸内海 投稿: 641 |
Re: v2.13.0 管理画面:受注変更画面(複数配送でない)の数量チェックの動作に不具合がある。 他の不具合と同じ原因のため、以前に投稿した修正案(これを使用しない)とは異なる修正案を、
こちらに、まとめて記述しました。 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=14060&forum=9 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |