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

ご注文手続き画面で商品種別が入れ替わる問題の修正 #4906

Merged
merged 1 commit into from
Feb 17, 2021

Conversation

dk-umebius
Copy link
Contributor

@dk-umebius dk-umebius commented Feb 6, 2021

概要(Overview・Refs Issue)

下記のタイミングで注文手続き画面の商品種別が入れ替わってしまう問題の修正

方針(Policy)

注文フロー内でセッションに保存しているカートキーの先頭が変わらないようにする

実際は先頭にあるカートが優先されるという仕組みを変えた方がいい気がしますが、影響範囲が大きそうなので最低限の修正で暫定対応する方針

今までどんな仕組みになっていたかと思ったのですが、そう言えば3系ではカート1つしかなかったんですね‥。
もしセッションのcart_keysの順番に依存しないようにするなら、どのカートor受注がアクティブかということをセッションに持たせる等になるのでしょうか。

このPRでは $this->cartService->save();の代わりに $this->cartService->setPrimary($Cart->getCartKey()); を実行して対象のカートが先頭で保存されるようにしています。(saveはsetPrimary内部で実行されています)

そもそも注文フロー内ではOrder.pre_order_idからカートを取得すればいいのではとも思いましたが
考えてみると下記のコードのように購入処理中の受注を取得するために先にカート情報を取得しているので大変そうだなと。

// 受注の存在チェック
$preOrderId = $this->cartService->getPreOrderId();
$Order = $this->orderHelper->getPurchaseProcessingOrder($preOrderId);
if (!$Order) {
log_info('[注文確認] 購入処理中の受注が存在しません.', [$preOrderId]);
return $this->redirectToRoute('shopping_error');
}

実装に関する補足(Appendix)

テスト(Test)

warningの方は@ShoppingFlowで$this->throwInvalidItemException('エラー', true);を実行してみて確認

相談(Discussion)

良い解決方法があれば教えて欲しいです。

マイナーバージョン互換性保持のための制限事項チェックリスト

  • 既存機能の仕様変更
  • フックポイントの呼び出しタイミングの変更
  • フックポイントのパラメータの削除・データ型の変更
  • twigファイルに渡しているパラメータの削除・データ型の変更
  • Serviceクラスの公開関数の、引数の削除・データ型の変更
  • 入出力ファイル(CSVなど)のフォーマット変更

レビュワー確認項目

  • 動作確認
  • コードレビュー
  • E2E/Unit テスト確認(テストの追加・変更が必要かどうか)
  • 互換性が保持されているか
  • セキュリティ上の問題がないか

@chihiro-adachi chihiro-adachi added this to the 4.0.x milestone Feb 9, 2021
@chihiro-adachi chihiro-adachi self-assigned this Feb 16, 2021
@chihiro-adachi chihiro-adachi modified the milestones: 4.0.x, 4.0.6 Feb 16, 2021
@chihiro-adachi
Copy link
Contributor

#4923 の再現手順で、事象が解消されていることを確認しました。
修正内容も問題ないかと思います。

@okazy
Copy link
Contributor

okazy commented Feb 17, 2021

落ちているテストを確認しました。
他のプルリクで改善済みが3件と、本修正とは関係ないと思われる箇所が1件でした。
テストを再実行して以下が通ればマージします。

1) EA08SysteminfoCest: Ea0807-uc01-t01 マスターデータ管理
 Test  codeception/acceptance/EA08SysteminfoCest.php:systeminfo_マスターデータ管理
 Step  See "無回答","#customer_form #admin_customer_sex"
 Fail  Failed asserting that any element by '#customer_form #admin_customer_sex' on page /admin/customer/new
Elements: 
+ <div> 男性
女性
contains text '無回答'

@okazy okazy merged commit 1398d64 into EC-CUBE:4.0 Feb 17, 2021
@okazy
Copy link
Contributor

okazy commented Feb 17, 2021

@dk-umebius ありがとうございます!マージしました。
こちらの複雑な問題をシンプルに改善されていて感動しました。

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

Successfully merging this pull request may close these issues.

None yet

3 participants