今回のゴール
注文管理アプリの一覧画面にて『請求書作成』ボタンを押すと
ボタンを押した当月以降の請求書発行日となっているレコードをもとに、請求先・請求年月単位で集約し、請求書アプリにレコードを作成する
※なお、同様の内容をJob Runnerの定期実行タスクで実現する方法はこちら
(請求書データを自動で作成したい、大量のレコードを高速で処理したい場合は、Job Runnerでの実現がおすすめです。)
各アプリの概要
本記事に記載したカスタマイズの通りに試して頂くには、4つのアプリ(商品マスタアプリ、請求先マスタアプリ、注文管理アプリ、請求書アプリ)を作成してください。
※なおこの記事では、注文管理アプリ、請求書アプリ、商品マスタアプリ、請求先マスタアプリの順でアプリの内容を記載しています。
各アプリのフィールド名とフィールドコードはすべて同一です。
注文管理アプリ
同一請求先-請求発行日でも、商品が異なれば複数レコードで登録する運用とします。
※フィールド名とフィールドコードは同じものを指定
請求書アプリ
同一請求先-請求書発行日で1レコードとなるように作り、注文情報はテーブルに登録します。
※フィールド名とフィールドコードは同じものを指定
(参考)商品マスタアプリ、請求先マスタアプリ
商品ID、請求先IDはそれぞれ重複禁止設定済
カスタマイズ設定
この請求書作成処理には大きく2つのポイントがあります。それは
請求書を作る単位になるフィールドを準備する
そのフィールドの単位でレコードを集めて処理をする
です。
それぞれのポイントを確認していきましょう。
請求書を作る単位になるフィールドを準備する
今回のカスタマイズでは、請求書を作る単位になるフィールドの準備は、ここまでの記載の通りにアプリを作っていればほぼ終わっています。
というのも「請求先ID_請求書発行日」フィールドが請求書を作る単位のフィールドになり、計算式を入れたため自動でフィールドの値が設定されます。
また、この計算式で使っている「請求書発行日_文字列」や、カスタマイズで使う「請求書発行日」の値のセットについては、本記事の下の方にある「画面のカスタマイズによるキーの設定処理について」節をごらんください。
そのフィールドの単位でレコードを集めて処理をする
請求書データ作成を動かすためのボタンの配置
やること「ボタンをメニュー位置に配置する」と条件「一覧画面を表示した時」を使います。
処理月に請求書発行日が設定されたレコードを取得する
やること「条件を組み立ててレコードを取得する」を使います。
「条件を組み立ててレコードを取得する」の検索条件は下記画像のように「条件ビルダー」という画面を使って設定します。
検索条件となる「請求書発行日」が「今月」と等しいものを対象とします(※ただし、今回のカスタマイズでは請求書発行日は翌月月初の日付を入れているので、各月1日となっているデータのみが存在する状態となります)。
併せて条件ビルダーでは並び順も設定する事ができます。今回は請求書アプリのテーブルの並び順を、納品日(請求書発行日)順とし、同じ請求書発行日どうしのレコードについては請求先ID・納品日順と並ぶように設定を行っています。
請求先ID・請求書発行日をキーに重複を除去する
請求先ID・請求書発行日の単位で処理をするために、重複を除去したレコードを準備します。
やること「レコードから重複を除去する」を使います。
なお「レコードから重複を除去する」の処理のイメージは次の画像のようになります。
併せて、キーとなるフィールドに関する考え方については、やること「レコードから重複を除去する」の「キーとなるフィールド」節をご覧ください。
請求書ID・請求書発行日ごとの処理を始める
「リストから要素を取り出す」を使って、請求先ID(同一請求先)・請求書発行日単位での処理を行います。
やること「リストから要素を取り出す」、条件「いずれかのアクションの実行が完了した時」を使います。
※この処理のために前準備として、1つ前のアクションで重複を除去しています。
なお、「リストから要素を取り出す」の処理のイメージは次の画像のようになります。
請求書を発行する単位で、レコードを絞り込む
やること「取得したレコードを絞り込む」、条件「リストから要素を取り出した時」を使います。
※やること「リストから要素を取り出す」の次のアクションは必ず、1つのアクションでつながるようにし、かつ条件「リストから要素を取り出した時」を使います。また、この時のレコードは「処理月に請求書発行日が設定されたレコードを取得する」で取得したレコード(今回の場合はアクション2)を対象とし、「請求先ID_請求書発行日」が一致するものを絞り込んでください。
「取得したレコードを絞り込む」のイメージは次の画像のようになります。
請求書アプリにレコードを更新または追加する
ここからは、請求書アプリにレコードを保存(更新または追加)していきます。
今回はテーブルへの保存を行うため、2段構えの構成でレコードを保存(レコードを保存→テーブルを保存)していくのですが、まずレコードを保存する処理がこのアクションになります。
やること「レコードを更新または追加する(キーの値を直接指定)」を使って、レコードへの更新または追加を行い、「請求書ID」・「請求書発行日」単位でのレコードを確実に存在する状態にします(「請求書ID_請求書発行日」フィールドも忘れずマッピングしてください)。
マッピング画面の設定は次のようになります。
請求書アプリのレコードのテーブルに注文情報をセットする
確実に存在するレコード(6番アクションの実行が完了した後に動くため)に対し、テーブルへの書き出しを行います。
やること「レコードを指定アプリのテーブルに書き出す」を用います。
マッピング画面の設定は次のようになります。
請求書データを作成する処理はここまでとなります。
併せて、上でのカスタマイズに使っている「請求書発行日」や「請求書発行日_文字列」を入力時・更新時に自動で設定するカスタマイズを行います。
画面のカスタマイズによるキーの設定処理など
併せて、画面のカスタマイズで請求書発行日・請求書発行日_文字列をセットするようにし、更にこれらのフィールドを編集できないようにしておきましょう。
画面表示時の設定
やること「基準日から特定の日付を取得する」、条件「追加画面・編集画面を表示した時」や「他のアクションの実行が完了した時 」を用います。
なお、やること「基準日から特定の日付を取得する」を使うと、良くありがちな日付計算(例えば今回の、翌月月初の日付を計算したい など)とフィールドセットをシンプルな形で実現する事ができます。
フィールドの値を変更した時の設定
やること「基準日から特定の日付を取得する」、条件「フィールドの値を編集して値が変わった時」や「他のアクションの実行が完了した時 」を用います。
フィールドを編集できないように
やること「フィールドを無効化する」、条件「追加画面・編集画面を表示した時」を使います。
これですべてのカスタマイズが完成したはずです。動かしてみましょう。
カスタマイズの全体イメージ
この記事でお伝えした、全てのカスタマイズは次のようになります。
また、アクショングラフは次のようになります。
うまく動作しない時などは、アクショングラフとカスタマイズを見比べてみて下さい。
おわりに
今回は請求書データを作成するカスタマイズを実現してみました。
複雑な処理やデータ量が多い処理については、Job Runnerを使って頂くのがおすすめなのですが、画面のカスタマイズでも結構色んなデータ処理が実現できます。
なお次の記事では、Job Runnerで同様の処理を実現しています。併せてご覧ください。
画面のカスタマイズと、Job Runnerをうまく使い分けて、思うようなデータ処理を実現してみて下さい。
ご不明点等ございましたら、チャットにてご質問ください。