計算結果チェックプラグイン
概要
登録ボタン押下時、計算結果が特定の条件を満たした場合にエラーとします。
活用例
在庫管理で在庫数が0の場合は登録させたくない場合 などに利用できます。
注意事項
- このサイトに掲載しているサンプルプログラムは、参考用としてご提供しています。動作保証はしておりませんので、ご注意ください。
なお、これらのプログラムを使用したことによるトラブルや損害については、責任を負いかねますので、あらかじめご了承ください。
サポート窓口へお問い合わせいただいても、対応はできかねますのでご了承ください。 - JavaScriptプラグインは、プロフェッショナルコースで使用できます。
制限事項
- レコード作成/編集画面のみ動作します。
- 対象フィールドは計算タイプのみ選択可能です。
- 計算結果の反映には再表示ボタンを押下する必要があります。
プラグインの機能
-
設定画面 計算フィールドから判定に使用したいフィールドを選択し、エラーとする条件を記載します。
-
プラグイン
滞在時間が 0 分以下だった場合にエラーとなります。登録ボタン押下時に、エラーの場合は下記のアラートを表示し、登録処理を中止します。
注意再表示ボタンを押下し、計算結果を最新にする必要があります。
開発手順
STEP1:設定画面
プラグインを追加したアプリのフィールド一覧を取得し、設定の選択肢として表示します。
フィールド一覧 の取得には、REST API を使用します。
プラグイン設定用にフィールド一覧を取得します。(config.js)
// プラグイン設定情報する (アプリIDの取得用)
const config = atPocket.plugin.app.getConfig();
// フィールド一覧取得API実行する
atPocket.api('apps/'+ config.appId +'/fields', 'GET', {}, function(result) {
// 成功時に実行する処理を記載
// セレクトボックスの選択肢にフィールド一覧をセットします
・・・
}, function(result) {
// エラー時に実行する処理を記載
・・・
});
プラグイン設定表示用のHTMLを記載します。(config.html)
<div class="config_form">
<div class="config_row">
<div class="config_caption">
対象フィールド
</div>
<div class="config_input">
<div>
<select id="calc_field" name="calc_field">
</select>
</div>
<div>
<select id="calc_sign" name="calc_sign">
<option value="1">=</option>
<option value="2">></option>
<option value="3"><</option>
<option value="4">≧</option>
<option value="5">≦</option>
<option value="6">≠</option>
</select>
</div>
<div>
<input type="text" id="calc_value" name="calc_value">
</div>
</div>
</div>
</div>
STEP2:プラグイン本体
対象フィールド値が条件を満たすかをチェックし、満たす場合はアラートを表示し、登録処理を中止します。
レコード作成画面/編集画面 登録ボタン押下時、条件に一致した場合はアラートを表示し、登録処理を中止します。(plugin.js)
// プラグイン設定画面で設定した値を取得します。
const config = atPocket.plugin.app.getConfig();
// レコード作成画面/編集画面 登録ボタン押下時の処理
atPocket.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
// 結果チェック
// 現在のレコードの値を渡す
if (checkCalcValue(event)) {
alert('計算結果が条件を満たすため、登録できません。');
// 登録処理を行わない
return false;
}
});
レコードの現在の計算値でチェックを行います。(plugin.js)
// 計算結果のチェック
function checkCalcValue(event) {
// プラグイン設定を取得する
const config = atPocket.plugin.app.getConfig();
// 現在のレコードの値
const record = event.record;
const CalcSign = config.calc_sign;
const CalcValue = parseFloat(config.calc_value);
const value = record[config.calc_field].value;
if (CalcSign == 1) {
return value == CalcValue ? true : false;
・・・・
} else {
return false;
}
}
利用しているOSSのライセンス情報
なし