バージョン選択

フォーラム

メニュー

オンライン状況

25 人のユーザが現在オンラインです。 (17 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 25
もっと...

サイト内検索

質問 > 管理機能 > 受注登録画面にて商品情報内の金額を変更する際に販売価格を下回ったらエラーとしたい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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
居住地: 東京日本橋
投稿: 2006
Re: 受注登録画面にて商品情報内の金額を変更する際に販売価格を下回ったらエラーとしたい
$OrderItem->getProductClass()->getPrice02()と比較すれば良いかと思います。

配列でオプションを渡せばエラーメッセージも変更可能です。

new Assert\GreaterThanOrEqual(['message' => 'エラーです', 'value' => $OrderItem->getProductClass()->getPrice02(),])


----------------
EC-CUBE4系 カスタマイズ ECのプロがシステム急ぎの案件承ります。
EC-CUBE開発 リモートで働くエンジニア募集中

koashim
投稿日時: 2021/2/9 17:08
対応状況: −−−
新米
登録日: 2020/5/18
居住地:
投稿: 5
Re: 受注登録画面にて商品情報内の金額を変更する際に販売価格を下回ったらエラーとしたい
umebius様

遅くなりまして申し訳ありません。

ご返信いただきありがとうございます!
早速試してみます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は71,659名です
総投稿数は101,392件です

投稿数ランキング

1
seasoft
7333
2
468
2999
3
AMUAMU
2712
4
nanasess
2147
5
umebius
2006
6
yuh
1612
7
red
1450
8
h_tanaka
1080
9
tsuji
936
10
fukap
907
11
shutta
835
12
tao_s
793
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.