質問 > 管理機能 > 受注登録画面にて商品情報内の金額を変更する際に販売価格を下回ったらエラーとしたい |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
koashim |
投稿日時: 2021/2/5 10:37
対応状況: 確認中
|
新米 登録日: 2020/5/18 居住地: 投稿: 5 |
受注登録画面にて商品情報内の金額を変更する際に販売価格を下回ったらエラーとしたい [EC-CUBE] Ver.4.0.4 [レンタルサーバ] AWS [OS] Windows10 [導入プラグインの有無] 商品オプションプラグイン 商品情報項目追加プラグイン デザインタグ表示プラグイン [現象] 管理画面の受注登録にて、注文明細の金額をユーザが変更するという運用を想定しております。 その際に、販売価格で設定している価格を下回る金額を入力できないようにしたいのですが、設定ファイル等どこを触っていいのか見つからず手詰まりになっております。 素人質問で申し訳ありませんが、修正すべきファイルや修正方法等ご教示いただきたく思います。 |
koashim |
投稿日時: 2021/2/5 15:16
対応状況: −−−
|
新米 登録日: 2020/5/18 居住地: 投稿: 5 |
Re: 受注登録画面にて商品情報内の金額を変更する際に販売価格を下回ったらエラーとしたい 自己レスです。
調査したところ、src\Eccube\Form\Type\Admin\OrderItemType.phpの修正にて対応できそうな感じです。 ただ、商品明細の価格がprice02の値より大きいか等しい(GreaterThanOrEqual)という設定にしたいのですが方法が分かりません。。。 コードは下記の通り。 // price, quantityのバリデーション $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) { $form = $event->getForm(); /** @var OrderItem $OrderItem */ $OrderItem = $event->getData(); $OrderItemType = $OrderItem->getOrderItemType(); switch ($OrderItemType->getId()) { // 商品明細: 金額 -> 正, 個数 -> 正負 case OrderItemTypeMaster::PRODUCT: $errors = $this->validator->validate($OrderItem->getPrice(), [new Assert\GreaterThanOrEqual(0)]); $this->addErrorsIfExists($form['price'], $errors); break; // 値引き明細: 金額 -> 負, 個数 -> 正 case OrderItemTypeMaster::DISCOUNT: $errors = $this->validator->validate($OrderItem->getPrice(), [new Assert\LessThanOrEqual(0)]); $this->addErrorsIfExists($form['price'], $errors); $errors = $this->validator->validate($OrderItem->getQuantity(), [new Assert\GreaterThanOrEqual(0)]); $this->addErrorsIfExists($form['quantity'], $errors); break; // 送料, 手数料: 金額 -> 正, 個数 -> 正 case OrderItemTypeMaster::DELIVERY_FEE: case OrderItemTypeMaster::CHARGE: $errors = $this->validator->validate($OrderItem->getPrice(), [new Assert\GreaterThanOrEqual(0)]); $this->addErrorsIfExists($form['price'], $errors); $errors = $this->validator->validate($OrderItem->getQuantity(), [new Assert\GreaterThanOrEqual(0)]); $this->addErrorsIfExists($form['quantity'], $errors); break; default: break; } }); } なお、$errors = $this->validator->validate($OrderItem->getPrice(), [new Assert\GreaterThanOrEqual(0)]); の0を100に変更し確認したところ、管理画面にエラーメッセージとして「100以上でなければなりません。」という文言が表示されます。 この場合、"100"の箇所をprice02の値に、その他の部分を任意の文言に変更できるのでしょうか。 |
umebius |
投稿日時: 2021/2/5 23:41
対応状況: −−−
|
神 登録日: 2016/7/22 居住地: 投稿: 2085 |
Re: 受注登録画面にて商品情報内の金額を変更する際に販売価格を下回ったらエラーとしたい $OrderItem->getProductClass()->getPrice02()と比較すれば良いかと思います。
配列でオプションを渡せばエラーメッセージも変更可能です。 new Assert\GreaterThanOrEqual(['message' => 'エラーです', 'value' => $OrderItem->getProductClass()->getPrice02(),])
|
koashim |
投稿日時: 2021/2/9 17:08
対応状況: −−−
|
新米 登録日: 2020/5/18 居住地: 投稿: 5 |
Re: 受注登録画面にて商品情報内の金額を変更する際に販売価格を下回ったらエラーとしたい umebius様
遅くなりまして申し訳ありません。 ご返信いただきありがとうございます! 早速試してみます。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |