570-50 | 請求管理
このフローは、前回請求金額に対する入金情報を確認し、支払い残額がある場合は当月の注文金額とその残額を繰越金額として含んだ形で請求データを作成します。
なお、この演習は下記の請求シチュエーションを前提に構成されています。
- スケジュール設定された請求日に自動で請求データを作成
- 請求方式は都度請求ではなく締め請求方式
- 25日締め末日請求の固定サイクル
- 注文で扱う商材はすべて買切り商材
- 当月の請求対象は繰越金額がある、もしくは、当月の締め期間に注文があった顧客を対象に請求データを作成。(当月の繰越金額と注文が両方無い顧客の請求データは作成しない)
入力アプリのフィールド構成
顧客マスタ
- 各顧客の基本情報・連絡先情報・請求情報が登録されている
- 請求情報には支払方法と締め日区分が登録されている
請求管理アプリ
- 各顧客の月ごとの請求データが登録されている
- 前回の請求データを取得するために使用する
注文管理アプリ
- 各顧客の注文内容が登録されている
- 支払方法と締め日区分は顧客マスタをルックアップしている
入金管理アプリ
- 各顧客の入金情報が日ごとに登録されている
- 支払方法と締め日区分は顧客マスタをルックアップしている
出力アプリのフィールド構成
請求管理アプリ
- 各顧客の請求情報が月ごとに出力される
- 請求データ作成時に前回請求金額と入金金額から繰越請求金額が計算される
- 当月の請求額は繰越請求金額と当月内の注文金額の合計金額になる
- 繰越請求金額と当月内の注文金額が0の場合は請求データは作成されない
- 請求明細テーブルに当月の注文詳細が出力される
1.当月の請求に必要な基本情報を設定する
- 入力アプリコマンドを追加し、アプリの選択で「顧客マスタ」を選択する
- 標準フィルタに「締め日区分」「いずれかを含む」「25日締め」を選択する
- フィールドの選択で「顧客ID」「会社名」「支払方法」「締め日区分」を選択する
請求年月の設定
- データ編集コマンドを追加し、結果を保存するフィールドに「新しいフィールドを作成」を選択して、新しいフィールド名に「請求年月」を入力する
- 編集方法で「数式」を選択して、下記の数式を設定する
TEXT(TODAY(),”yyyy年m月”)
請求日の設定
- データ編集コマンドを追加し、結果を保存するフィールドに「新しいフィールドを作成」を選択して、新しいフィールド名に「請求日」を入力する
- 編集方法で「数式」を選択して、下記の数式を設定する
TEXT(EOMONTH(TODAY(),0),”yyyy/m/d”) - フィールドタイプ設定コマンドを追加し、変更するフィールドに「請求日」、新しいフィールド名に「請求日」を入力、新しいフィールドタイプに「日付」を選択する
当月の請求に必要な基本情報が設定できました。
2.前回請求データを取得する
請求管理アプリに登録された、前回請求データを取得し繰越金額の計算に必要な前回請求金額取得します。
顧客ごとの請求データを取得
- 入力アプリコマンドを追加し、アプリの選択で「請求管理」を選択する
- フィールドの選択で「請求日」「請求年月」「顧客ID」「顧客名」「支払方法」「締め日区分」「前回請求金額」「入金金額」「繰越請求金額」「注文金額」「今回請求金額」「請求明細」を選択する
- アプリ結合コマンドを追加して、当月請求の基本情報と請求管理アプリを結合する
- 元になるアプリに「請求日を日付フィールドにタイプ設定」、結合するアプリに「請求管理」を選択する
- 結合方法で「左外部結合」を選択する
- 条件フィールドに「顧客ID」を選択する
直近の請求データを絞り込む
- 重複の削除コマンドを追加し、重複を検査するフィールド名に「顧客ID」を選択する
- ソートに「請求日_1」の「降順」を選択する
請求日の降順で先頭にくるデータが直近の請求データになる
初回請求の場合を考慮した補足
- データ編集コマンドを追加し、結果を保存するフィールドに「既存フィールドのデータを置換」を選択して、フィールドを選択で「前回請求金額」を選択する
- 編集方法で「数式」を選択して、下記の数式を設定する
IF(ISBLANK(前回請求金額), 0, 前回請求金額)
顧客ごとの前回請求データを取得できました。
3.前回請求に関する入金データを取得する
先月〜当月までの入金データを取得
- 入力アプリコマンドを追加し、アプリの選択で「入金管理」を選択する
- 標準フィルタで以下を設定し、先月〜今月までの入金データを絞込む
「入金日」≧(以降)「先月」
「入金日」≦(以前)「今月」 - フィールドの選択で「顧客ID」「顧客名」「支払方法」「締め日区分」「入金日」「入金金額」を選択する
当月の請求に関する入金データを絞り込むための期間を設定する
25日締め末日請求なので当月1日〜当月末日期間内の入金データが対象になります。
- データ編集コマンドを追加し、結果を保存するフィールドに「新しいフィールドを作成」を選択して、新しいフィールド名に「対象入金開始日」を入力する
- 編集方法で「数式」を選択して、下記の数式を設定する
TEXT(TODAY(),”yyyy/m/1″) - データ編集コマンドを追加し、結果を保存するフィールドに「新しいフィールドを作成」を選択して、新しいフィールド名に「対象入金終了日」を入力する
- 編集方法で「数式」を選択して、下記の数式を設定する
TEXT(EOMONTH(TODAY(),0),”yyyy/m/d”) - フィールドタイプ設定コマンドを追加して、変更するフィールドに「対象入金開始日」「対象入金終了日」、新しいフィールドタイプを選択で「日付」を設定する
設定した対象期間で入金データを絞り込む
- フィルタコマンドを追加し、下記の数式を設定する
AND(対象入金開始日 <= 入金日,対象入金終了日 >= 入金日)
当月の請求に関する顧客ごとの入金データを取得することができました。
4.前回請求データと当月入金データから繰越金額を計算する
前回請求金額から入金金額を差引きし、繰越金額を計算します。
前回請求データと当月入金データを結合する
- アプリ結合コマンドを追加して、前回請求データ当月の入金データをそれぞれ線でつなぐ
- 元になるアプリに「請求なし(初回請求)の場合前回請求金額を0埋め」、結合するアプリに「対象入金データの絞込み」を選択する
- 結合方法で「左外部結合」を選択する
- 条件フィールドに「顧客ID」を選択する
- フィールド選択コマンドを追加し、使用するフィールドを選択で「顧客ID」「請求年月」「請求日」「支払方法」「締め日区分」「請求年月_1」「今回請求金額」「前回請求金額」「入金日」「入金金額_1」を選択する
- 前回請求データとして取得したフィールドは後続の処理で扱いやすいようにフィールド名を調整する
・「請求年月_1」→「前回請求年月」
・「今回請求金額」→「前回請求金額」
・「前回請求金額」→「前々回請求金額」
・「入金金額_1」→「入金金額」
前回請求データと当月入金データを結合できました。
顧客ごとに入金金額を合計する
- データ編集コマンドを追加して、結果を保存するフィールドに「既存フィールドのデータを置換」を選択して、フィールドを選択で「入金金額」を選択する
- 編集方法で「数式」を選択して、下記の数式を設定する
IF(ISBLANK(入金金額), 0, 入金金額) - グループ化コマンドを追加して、グループ化する項目フィールドで「顧客ID」「請求年月」「請求日」「締め日区分」「前回請求年月」「前回請求金額」「前前回請求金額」「入金日」を選択する
- 集計する値が保存されているフィールドで「入金金額」、集計した値を保存するフィールド名に「入金金額合計」、集計方法で「合計」を選択する
繰越金額を計算する
- フィールドタイプ設定コマンドを追加して、変更するフィールドに「前回請求金額」、新しいフィールドタイプを選択で「数値」を設定する
- データ編集コマンドを追加し、結果を保存するフィールドに「既存フィールドのデータを置換」を選択して、フィールドを選択で「前回請求金額」を選択する
- 編集方法で「数式」を選択して、下記の数式を設定する
IF(TEXT(EDATE(TODAY(),-1),”yyyy年m月”) <> 前回請求年月, 0, IF(請求年月<>前回請求年月,前回請求金額, 前前回請求金額)) - データ編集コマンドを追加して、結果を保存するフィールドに「新しいフィールドを作成」を選択して、新しいフィールド名に「繰越金額」を設定する
- 編集方法で「数式」を選択して、下記の数式を設定する
IF(請求年月<>前回請求年月,前回請求金額 – 入金金額合計, 前前回請求金額 – 入金金額合計)
※すでに当月分の請求データを何かしらの理由で作成済みの場合も考慮した数式
繰越金額を計算することができました。前回請求金額に対する入金残額が繰越金額として確認できます。
5.当月注文データを取得して注文金額の合計を計算する
注文データを取得し、当月請求金額の計算に必要な注文金額合計を計算します。
先月〜当月までの注文データを取得
- 入力アプリコマンドを追加し、アプリの選択で「注文管理」を選択する
- 標準フィルタで以下を設定し、先月〜今月までの注文データを絞込む
- 「注文日」≧(以降)「先月」
- 「注文日」≦(以前)「今月」
- フィールドの選択で「顧客ID」「顧客名」「支払方法」「締め日区分」「注文日」「注文金額合計」「注文明細」を選択する
当月の請求に関する注文データを絞り込むための期間を設定する
25日締め末日請求なので前月26日〜当月25日期間内の注文データが対象になります。
- データ編集コマンドを追加し、結果を保存するフィールドに「新しいフィールドを作成」を選択して、新しいフィールド名に「対象注文開始日」を入力する
- 編集方法で「数式」を選択して、下記の数式を設定する
IF(締め日区分 = “25日締め”,TEXT(EDATE(TODAY(),-1),”yyyy/m/26″),””)
※IF文内で締め日区分を判定に使用しているが、その他の締め区分を設けることで、期間日の設定を柔軟に検討することもできる - データ編集コマンドを追加し、結果を保存するフィールドに「新しいフィールドを作成」を選択して、新しいフィールド名に「対象注文終了日」を入力する
- 編集方法で「数式」を選択して、下記の数式を設定する
IF(締め日区分 = “25日締め”,TEXT(TODAY(),”yyyy/m/25″),””) - フィールドタイプ設定コマンドを追加して、変更するフィールドに「対象注文開始日」「対象注文終了日」、新しいフィールドタイプを選択で「日付」を設定する
設定した対象期間で注文データを絞り込む
- フィルタコマンドを追加し、下記の数式を設定する
AND(対象注文開始日 <= 注文日,対象注文終了日 >= 注文日)
当月の請求に関する顧客ごとの注文データを取得することができました。
顧客ごとに注文金額を合計する
- テーブル展開コマンドを追加して、レコードに変換するテーブルに「注文明細」、レコードに保持するフィールドに「商品」「単価」「数量」「金額」を選択する
- グループ化コマンドを追加して、グループ化する項目フィールドで「顧客ID」「支払方法」「締め日区分」を選択する
- 集計する値が保存されているフィールドで「金額」、集計した値を保存するフィールド名に「当月注文金額合計」、集計方法で「合計」を選択する
- アプリ結合コマンドを追加して、当月の請求に関する注文データとその注文金額の合計をそれぞれ線でつなぐ
- 元になるアプリに「注文明細を展開」、結合するアプリに「全注文の金額を合計」を選択する
- 結合方法で「左外部結合」を選択する
- 条件フィールドに「顧客ID」を選択する
顧客マスタと結合する
対象期間内で注文がない顧客データも繰越金額がある場合は請求データの作成が必要なため、顧客マスタをメインに注文データを左外部結合する。そうすることで注文がある顧客データだけでなく、注文がない顧客データも形成することができる。
- アプリ結合コマンドを追加して、顧客マスタと当月の請求に関する注文データをそれぞれ線でつなぐ
- 元になるアプリに「請求日を日付フィールドにタイプ設定」、結合するアプリに「当月の注文金額合計を取得」を選択する
- 結合方法で「左外部結合」を選択する
- 条件フィールドに「顧客ID」を選択する
- フィールド選択コマンドを追加し、使用するフィールドを選択で「顧客ID」「請求年月」「請求日」「当月注文金額合計」「注文日」「商品」「単価」「数量」「金額」を選択する
- データ編集コマンドを追加して、結果を保存するフィールドに「既存フィールドのデータを置換」を選択して、フィールドを選択で「当月注文金額合計」を選択する
- 編集方法で「数式」を選択して、下記の数式を設定する
IF(ISBLANK(当月注文金額合計), 0, 当月注文金額合計)
当月の請求に関する顧客ごとの注文データとその合計を取得することができました。
6.当月の請求データを作成する
顧客ごとの「前回請求データと入金データ、および、繰越金額」と「当月の請求に関する注文データ」から、当月の請求データを作成します。
繰越金額と注文金額から当月の請求金額を計算できます。
繰越金額情報
「前回請求データと当月請求に関する入金データ、および、繰越金額」
注文情報
「当月の請求に関する注文データ」
顧客ごとの繰越金額情報と注文情報を結合する
- アプリ結合コマンドを追加して、繰越金額情報と注文情報をそれぞれ線でつなぐ
- 元になるアプリに「繰越金額を数値フィールドにタイプ設定」、結合するアプリに「注文なしのゼロ埋め」を選択する
- 結合方法で「左外部結合」を選択する
- 条件フィールドに「顧客ID」を選択する
- フィールド選択コマンドを追加し、使用するフィールドを選択で「顧客ID」「請求年月」「請求日」「締め日区分」「前回請求年月」「前回請求金額」「入金金額合計」「繰越金額」「当月注文金額合計」「注文日」「商品」「単価」「数量」「金額」を選択する
当月の請求データ作成に必要なフィールドが整理できました。
当月請求データの作成対象を絞込み
前回請求からの繰越金額と当月の注文がない顧客については、当月の請求データを作成しません。
- フィルタコマンドを追加し、下記の数式を設定する
NOT(AND(繰越金額=0,当月注文金額合計=0))
請求明細を作成
注文商品ごとのレコードをテーブルにし、請求明細を作成します。
- テーブル作成コマンドを追加し、レコードに保持するフィールドに「顧客ID」「請求年月」「請求日」「締め日区分」「前回請求金額」「入金金額合計」「繰越金額」「当月注文金額合計」を選択する
- 新しいテーブル名に「請求明細」、テーブルに保持するフィールドに「注文日」「商品」「単価」「数量」「金額」を設定する
請求明細テーブルを作成できました。
7.出力アプリを設定する
- 出力アプリコマンドを追加して、アプリの選択で「請求管理」アプリを選択する
- 出力方式に「更新」を選択し、「更新または追加」オプションを有効にする
- データ編集フローのフィールドで、アプリのフィールドと対になるデータ編集フローのフィールドを選択する
- 更新キーで「請求日」「顧客ID」を有効にする
8.出力結果を確認する
「請求管理」アプリに前回請求の繰越分を含む当月の請求データを自動で出力できるようになりました。
サンプルファイルのダウンロードはこちら
https://download.krew.mescius.jp/study/krewdata-drill/pratical/dt570-50carryover-invoice.zip