バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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(),])


----------------
EC-CUBEカスタマイズ・高速化・脆弱性対策・SEO ご相談ください。

2系・3系から4系へのバージョンアップ実績豊富

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

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

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


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,297名です
総投稿数は109,692件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

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

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