WAGBY11 MANUAL / 10
条件に応じて計算結果を変える
会員割引の有無で金額の計算式を切り替える方法を説明します。
最終更新日:
1. このページで伝える機能
区分やスイッチの値に応じて計算結果を変えられます。会員だけ割引する、条件を満たすと手数料を変える、といった業務の判断を計算式へ組み込めます。
使える関数の一覧、演算子、未設定値や丸めの規則、用途ごとの制約は関数と式の仕様を参照してください。
2. Wagby11で実現できること
会員割引がオフのときは、税抜金額をそのまま適用金額にします。

数量を3へ変更し、会員割引をオンにして保存すると、税抜金額3,600円の10%引きで、適用金額は3,240円になります。この例では割引後の金額を円単位に四捨五入します。


3. AIへの指示例
最小限の指示例
会員の場合は、金額を10%引きにしてください。AIは会員の判定元、割引前の金額、端数の丸め方を類推して補います。通常時の金額と、割引後のどの段階で丸めるかも伝えると、金額の差を防げます。
より詳細な指示例
CalcQuote.payableAmountを、memberDiscountがtrueならamountの90%を小数0桁で四捨五入し、それ以外はamountと同じ値にしてください。amountがnullなら結果もnullにします。保存時にamountを先に求めてからpayableAmountを求め、数量3・単価1200・割引オンで3240になることを確認してください。
既存のモデル・主キー・項目・データ・権限を保持し、Wagby11のguide・referenceを確認してください。新規モデルには自動採番の主キーと予約属性version、必要なG_ADMINのCRUD権限を用意します。メニューと一般利用者向け操作マニュアルを更新し、設計情報の検証・コード生成・ビルドを完了してから起動し、画面と保存結果を確認してください。4. 編集されるAppSchemaの例
以下は関連する定義の抜粋です。構文を覚えなくても、何から・いつ値を求め、保存するかをAIへ伝えられます。
entity:
attributes:
- name: 適用金額
name_en: payableAmount
type: decimal
precision: 14
scale: 2
calc:
expression: 'amount == null ? null : (memberDiscount == true ? #round(amount * #decimal("0.9"), 0) : amount)'条件に応じた値は条件 ? 値1 : 値2で指定できます。小数は#decimal、四捨五入は#roundを使います。calc.whenで代入そのものを条件付きにする場合は、更新時に条件を満たさないと保存済みの値を保持するため、目的に合わせて使い分けます。
5. 参考資料
- reference:式言語(属性の計算)
designer/docs/appschema/html/reference/16-expression-language.html- reference:利用できる関数
designer/docs/appschema/html/reference/17-expression-functions.html