第1部で作成した収支計画明細から、月末に発生する予定の見込実績を作ります。このフローは初回に見込実績を追加するだけでなく、2回目以降の実行で同じ実績を追加しないところまで考えて構成しています。
目次
フィールド定義(使用項目)¶
| アプリ | 主なフィールド | 役割 |
|---|---|---|
| 収支計画明細 | 計画明細キー、対象月、計画名、損益区分、科目名、最終計画額 | 見込実績の登録内容を作る |
| 収支実績明細 | 実績コード、発生日、対象月、損益区分、科目名、金額状態、実績額 | 見込と確定実績を保持する |
処理の概要¶
- 登録内容を作成:計画明細キーから実績コードを作り、金額状態を「見込」、実績額を最終計画額、発生日を対象月の月末日に設定します。
- 既存実績と照合:見込実績候補を左側、収支実績明細を右側にして、実績コードで左外部結合します。
- 未登録分を追加:抽出した見込実績を収支実績明細へ追加します。
2回目の実行を前提にした重複防止¶
見込実績候補をそのまま「追加」すると、同じ対象月でフローを実行するたびに同じ実績が増えてしまいます。そこで、追加前に収支実績明細と照合し、まだ登録されていない候補だけを取り出します。
左外部結合で登録済みの実績を見つける¶
まず、計画明細キーから「実績明細コード」を作ります。このコードは、同じ収支計画明細からは毎回同じ値になるため、既存実績を探すためのキーとして利用できます。
「既存実績照合」では、左側に見込実績候補、右側に収支実績明細を指定し、結合方法に「左外部結合」を選びます。結合キーは、左側の「実績明細コード」と右側の「実績コード」です。
左外部結合を使うと、既存実績が見つからなかった候補も削除されずに残ります。一致する既存実績がある場合だけ、右側の実績コードに値が入ります。
| 実行時の状態 | 結合後の実績コード | 扱い |
|---|---|---|
| 初回実行 | 空欄 | 未登録なので追加する |
| 2回目以降 | 値あり | 登録済みなので追加しない |
空欄フィルターで未登録の候補だけを残す¶
続く「未登録見込実績」では、結合後の右側の「実績コード」が空欄であることを条件にして絞り込みます。空欄は、同じ実績コードを持つレコードが収支実績明細にまだ存在しないことを表します。
絞り込み後のデータだけを「見込実績追加」へ渡します。初回は未登録の候補が追加されますが、2回目は左外部結合で登録済みの実績コードが付くため、空欄フィルターを通過しません。
実行結果¶
初回は計画明細に対応する見込実績が追加されます。同じ対象月で再実行すると、すべて登録済みと判定されるため追加対象は0件になります。
次回の第3部前編では、計画、確定実績、未確定見込を科目別に集計し、月次損益のサブテーブルへまとめます。