EC-CUBE / coupon-plugin

GNU Lesser General Public License v2.1
11 stars 41 forks source link

受注にクーポンの値引き明細が作成されないケースがある #104

Closed ryo-endo closed 5 years ago

ryo-endo commented 5 years ago

概要

クーポンを利用して購入した場合に、受注にクーポンの値引き明細が作成されないケースがある。

再現したときのキャプチャ image

期待結果

キャプチャのようにクーポンの割引明細があること。 image

再現手順

運用への影響

受注を更新(登録ボタンを押すなど)すると、割引が無効化される。 (受注に割引の明細が無いため)

puchi777 commented 5 years ago

CouponService::removeCouponOrder で以下の処理があるのですが、これだと過去の受注も含めて明細が削除されてしまっているように見受けられます。

            $OrderItems = $this->orderItemRepository->findBy(['processor_name' => CouponProcessor::class]);
            foreach ($OrderItems as $OrderItem) {
                $this->entityManager->remove($OrderItem);
                $this->entityManager->flush($OrderItem);
            }

以下の処理が正しいと思われるのですが、いかがでしょうか?

            $OrderItems = $this->orderItemRepository->findBy(['Order'=>$Order, 'processor_name' => CouponProcessor::class]);
            foreach ($OrderItems as $OrderItem) {
                $this->entityManager->remove($OrderItem);
                $this->entityManager->flush($OrderItem);
            }
nanasess commented 5 years ago

再現手順(#103 の引用)

クーポンの設定

対象商品:全商品 値引き種別:定額割引 最低購入額:9000円 ※その他は任意の有効なクーポンを作成する

手順

  1. クーポンを使用して商品を購入する(どんなクーポンでも良い)
  2. チェリーアイスサンドを3つカートに入れて購入ページに進む。(約9000円)
  3. クーポンを適用する。
  4. [お届け先を追加する]ボタンからチェリーアイスサンドの購入数を1つにする。(約3000円)
  5. 購入ページに戻り値引き額を確認する。 →クーポンは警告メッセージともに非適用の状態になっている
  6. 管理画面から 1 の注文を確認すると、クーポンの明細が削除されている(値引きは適用されている)
nanasess commented 5 years ago

@puchi777 ありがとうございます。コメント見落としておりました #110 で対応しました🙏

hiro-t59 commented 5 years ago

110 の動作確認を行い、問題ありませんでした。

上記PRはプラグインバージョン4.0.4にてリリース済みとなります。

本ISSUEはクローズします。