Ticket #2027 (closed バグ指摘: 修正済)
商品登録CSVの商品更新時、未入力だとシステムエラーになる項目がある
Reported by: | m_uehara | Owned by: | undertree |
---|---|---|---|
Priority: | 中 | Milestone: | EC-CUBE2.13.0 |
Component: | 管理画面 | Version: | 2.12.2 |
Keywords: | Cc: | ||
修正済み: | yes |
Description
商品登録CSVにて、商品情報更新(商品IDを入力)を行おうとした際、 未入力だとシステムエラーとなる項目があります。
・商品規格ID
・表示ステータス
・商品種別ID
・ポイント付与率
Attachments
Change History
comment:1 Changed 11 years ago by undertree
- Owner changed from somebody to undertree
- Status changed from new to assigned
comment:2 Changed 11 years ago by undertree
product_idが設定され、product_class_idが未設定のCSVを二度読み込ませることで、再現できます。 (表示ステータス、商品種別ID、ポイント付与率については再現できませんでした)
LC_Page_Admin_Products_UploadCSV.phpの中の処理、lfRegistProductClassメソッドでエラーが起きていました。
(必須項目ではない)product_class_idが空の場合、 新しいdtb_products_class.product_class_idが必ず作成されるのですが...
既にdtb_products_class.product_id登録済みだった場合に、インサートに失敗します。 修正方法について、検証中です。
comment:3 Changed 11 years ago by undertree
- 修正済み set
product_idが設定されており、product_class_idが設定されていない場合において、SC_Utils_Ex::sfGetProductClassIdメソッドを使ってproduct_class_idを取得するように変更いたしました。
既に登録済みの商品に関しては、商品規格レコードの更新も行われるようになります。 r22301 として、コミットいたしました。
comment:4 Changed 11 years ago by m_uehara
- 修正済み unset
商品ID, 商品規格IDに値を入力し、商品種別IDを未入力にした際、システムエラーが発生しました。
Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。 SQL: [UPDATE dtb_products_class SET product_class_id= $1, product_id= $2, classcategory_id1= $3, classcategory_id2= $4, product_type_id= $5, product_code= $6, stock= $7, stock_unlimited= $8, sale_limit= $9, price01= $10, price02= $11, deliv_fee= $12, point_rate= $13, update_date= $14, down_filename= $15, down_realfilename= $16, del_flg= $17, creator_id= $18 WHERE product_class_id = $19] PlaceHolder: [array ( 0 => '12', 1 => '4', 2 => '0', 3 => '0', 4 => '', 5 => 'nabe-01', 6 => '99', 7 => '0', 8 => '5', 9 => '1700', 10 => '1650', 11 => '', 12 => '10', 13 => '2013-08-22 13:43:41.000002', 14 => '', 15 => '', 16 => '0', 17 => '2', 18 => '12', )] MDB2 Error: null value violates not-null constraint _doQuery: [Error message: Could not execute statement] [Last executed query: EXECUTE mdb2_statement_pgsql_22385caacbb9ea54a06520ca0c32261215b6da0308 ('12', '4', '0', '0', NULL, 'nabe-01', '99', '0', '5', '1700', '1650', NULL, '10', '2013-08-22 13:43:41.000002', NULL, NULL, '0', '2', '12')] [Native message: ERROR: null value in column "product_type_id" violates not-null constraint]
comment:5 Changed 11 years ago by undertree
- 修正済み set
product_type_idおよびpoint_rateの項目は、商品規格を新規作成した場合には、lfSetProductClassDefaultDataメソッドでデフォルト値が設定されるようになっています。
そのため、この二つの項目は必須入力項目になっておりません。
しかし商品規格IDが指定されている=既存の商品規格が存在するとき、デフォルト値が入力されず、product_type_idにNULLがセットされ、DBエラーになっているようです。
既存の商品規格が存在する場合にはproduct_type_id, point_rateを必須入力項目として扱うように、入力値チェックを追加致しました。 r23155
comment:6 Changed 11 years ago by m_uehara
商品種別IDが未入力時、エラーメッセージが表示される事を確認いたしました。
また、ポイント付与率を未入力とした場合、システムエラーが発生しました。
Fatal error(E_USER_ERROR): DB処理でエラーが発生しました。 SQL: [UPDATE dtb_products_class SET product_class_id= $1, product_id= $2, product_type_id= $3, product_code= $4, stock= $5, stock_unlimited= $6, sale_limit= $7, price01= $8, price02= $9, deliv_fee= $10, point_rate= $11, update_date= $12, down_filename= $13, down_realfilename= $14, del_flg= $15, creator_id= $16 WHERE product_class_id = $17] PlaceHolder: [array ( 0 => '12', 1 => '4', 2 => '1', 3 => 'sample-01', 4 => '99', 5 => '0', 6 => '5', 7 => '20000', 8 => '1200', 9 => '', 10 => '', 11 => '2013-08-29 13:47:34.000002', 12 => '', 13 => '', 14 => '0', 15 => '2', 16 => '12', )] MDB2 Error: null value violates not-null constraint _doQuery: [Error message: Could not execute statement] [Last executed query: EXECUTE mdb2_statement_pgsql_241e0235046f01a34ccc779faae91b2d610e2b4498 ('12', '4', '1', 'sample-01', '99', '0', '5', '20000', '1200', NULL, NULL, '2013-08-29 13:47:34.000002', NULL, NULL, '0', '2', '12')] [Native message: ERROR: null value in column "point_rate" violates not-null constraint]