計算式かつ編集可能な項目を用意する

最終更新日: 2020年3月14日
R8 | R9

「見積書」モデルの「請求金額」は計算式で求められますが、かつ、入力用の編集項目も用意しています。(図1)

図1 請求金額項目を自動計算かつ入力可能とする

入力欄に値が入っていた(すなわち手動入力された)場合はその値を優先します。入力欄が空の場合は、計算値をそのまま使います。(図2)

図2 表示時は一つのみとなる

定義方法

「請求金額」の項目を3つ用意します。それぞれ次の特徴があります。

項目ID用途計算式DB保存表示時に隠す
total_calc 登録更新画面で自動計算値を保持する SUM(${precord/p_syoukei}) しない
total_input 登録更新画面で入力値を保持する なし しない
total 詳細画面用 IF(${total_input}>0,${total_input},${total_calc}) する -
図3 請求金額項目の定義

total_calc項目

登録更新画面で自動計算値を保持する目的で用意します。値はデータベースに保存しません。(図4) 表示時は隠し項目とします。(図5)

図4 total_calc項目の定義(1)
図5 total_calc項目の定義(2)

total_input項目

登録更新画面で入力用項目を用意します。値はデータベースに保存しません。(図6) 表示時は隠し項目とします。(図7)

図6 total_input項目の定義(1)
図7 total_input項目の定義(2)

total項目

total_input項目に入力があれば、こちらを正とします。そうでなければ自動計算値(total_calc項目)の値をデータベースに保持します。検索時はこの項目を使って行います。(図8,図9)

図8 total項目(1)
図9 total項目(2)

JavaScriptを利用する

「追加ボタン」を用意し、この押下によって計算を行い、値を上書きする方法もあります。この場合は入力可能項目に対して直接、値を書き換えます。

詳細は "項目ボタン押下時にJavascriptを実行する" をお読みください。WDN