Ticket #2027 (closed バグ指摘: 修正済)

Opened 7 years ago

Last modified 7 years ago

商品登録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

Book.2027.id78.update.csv Download (305 bytes) - added by undertree 7 years ago.
商品IDと必須項目のみを入力したCSV

Change History

comment:1 Changed 7 years ago by undertree

  • Owner changed from somebody to undertree
  • Status changed from new to assigned

comment:2 Changed 7 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登録済みだった場合に、インサートに失敗します。 修正方法について、検証中です。

Changed 7 years ago by undertree

商品IDと必須項目のみを入力したCSV

comment:3 Changed 7 years ago by undertree

  • 修正済み set

product_idが設定されており、product_class_idが設定されていない場合において、SC_Utils_Ex::sfGetProductClassIdメソッドを使ってproduct_class_idを取得するように変更いたしました。

既に登録済みの商品に関しては、商品規格レコードの更新も行われるようになります。 r22301 として、コミットいたしました。

comment:4 Changed 7 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 7 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 7 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]

comment:7 Changed 7 years ago by undertree

大変失礼致しました。 point_rateの判定について、変数名を間違えておりました。 r23156 で修正を行なっております。

comment:8 Changed 7 years ago by h_yoshimoto

  • Status changed from assigned to closed
  • Resolution set to 修正済
Note: See TracTickets for help on using tickets.