月毎の合計請求データを受注データから生成

230‐01 請求書発行| 活用編

このサーバーサイド処理はサーバーサイド処理の活用シナリオにある「月毎の合計請求データを受注データから生成」の具体的な作成方法を解説したものです。

処理を定期実行することで、「受注」テーブルから顧客ごとに請求コードを採番し、月ごとの合計請求データを「請求」テーブルに作成します。また、「受注明細」テーブルのデータにも顧客ごとに採番した請求コードを付加し「請求明細」テーブルにデータを登録します。

プロジェクトファイルS230-01_total-billing-data_b.fgcp
S230-01_total-billing-data_a.fgcp(実装済みプロジェクトファイル)

定期実行処理の作成

プロジェクトを開き、リボンの「作成」メニューから「スケジュールタスク」を選択し「スケジュールタスクの設定」を表示します。
新規に「月ごとの合計請求データを受注データから作成」という名前でスケジュールタスクを作成します。

トリガーの設定

トリガータブを開き、毎月20日に1回実行されるトリガーを作成します。

  • 「設定」で「毎月」を選択
  • 「月」に「<すべて選択>」を設定
  • 「日」に「20」を設定
スケジュールタスクのテスト実行

上記設定では毎月20日にスケジュールタスクの処理が行われます。
テスト結果をすぐに確認する場合、「テスト実行」ボタンを押下してください。

処理コマンドの作成

受注テーブルから請求コードを採番し、請求データを登録する処理を作成します。

コマンドタブを開き、「トランザクション」コマンドを追加します。
トランザクションを設定することで、何らかの問題により更新処理が失敗した場合でも、出庫管理と在庫管理のデータの整合性を維持することが可能になります。

追加したトランザクションの子コマンドに、受注テーブルから請求テーブルに登録するレコードを参照する処理を追加します。
「変数の設定」コマンドを追加し、以下の通りに設定します。

  • 「変数名」に「当月の受注データ」と入力
  • 「変数値」で「データベースのテーブルを参照」を選択
    「対象テーブル」で「受注」を選択
  • 「変数値」の選択タブで「複数レコード」を選択
    「フィールドの追加」ボタンを押下し以下の3項目を追加
    • 「フィールド」に「[受注CD]」を選択
      「変数名」に「受注CD」と入力
    • 「フィールド」に「[顧客ID]」を選択
      「変数名」に「顧客ID」と入力
    • 「フィールド」に「[請求月]」を選択
      「変数名」に「請求月」と入力
  • 「変数値」のクエリータブで「新しい条件」ボタンを押下し、以下のように設定
    • 「フィールド」に「[請求月]」を設定
    • 「条件」に「=(等しい)」を設定
    • 「値」に「=MONTH(TODAY())」と入力
現在日時の取得

クエリーの値にはExcelと同じ関数を指定した式を使用することができます。
上述の「=MONTH(TODAY()) 」では、 Excel と同様に現在日時の月の部分を取得します。利用可能な関数の一覧は、下記のページを参照してください。
>関数一覧(Forguncyヘルプ)

請求テーブルおよび請求明細テーブルに付加する請求コードを採番します。
「変数の設定」コマンドを追加し、以下の通りに設定します。

  • 「変数名」に「請求CD」と入力
  • 「変数値」で「値、または数式」を選択
    「=0」と入力

次に、当月の受注データ数の分だけ請求テーブルにデータを追加する処理を繰り返し行う処理を追加します。
「繰り返し」コマンドを追加し、以下の通りに設定します。

  • 「繰り返し回数、または繰り返し配列」に「変数の設定」コマンドで設定した「当月の受注データ」を選択
繰り返し配列オブジェクト名

繰り返しオブジェクト名を使用することで、繰り返し配列における現在のオブジェクトを取得することができます。
「繰り返し配列オブジェクト名」のデフォルトの名称は「Item」です。この名称は任意に変更が可能です。
上図の例では、変数の設定コマンドで設定済みである受注テーブルの3つのフィールドの値を繰り返し配列として設定しています。
後述のテーブルデータの更新等のコマンドでは、「=Item.受注CD」や「=Item.顧客ID」といった形で受注CDの値や顧客IDの値を取得し使用しています。

次に、参照中のレコードの顧客IDの値に対する請求コードが採番済みであるかを判定するため、請求テーブルのレコード数を格納する変数を設定します。
この請求コードが採番済みであるかの判定は、同じ年月かつ同じ顧客IDからの受注データを1つの請求に合算するために行います。
「変数の設定」コマンドを追加し、以下の通りに設定します。

  • 「変数名」に「請求CD切り替え判定用」と入力
  • 「変数値」で「データベースのテーブルを参照」を選択
    「対象テーブル」で「請求」を選択
  • 「変数値」の選択タブで「レコード数」を選択
  • 「変数値」のクエリータブで「新しい条件」ボタンを押下し、以下のように設定
    • 「フィールド」に「[顧客ID]」を設定
    • 「条件」に「=(等しい)」を設定
    • 「値」に「=Item.顧客ID」と入力
  • 再度「変数値」のクエリータブで「新しい条件」ボタンを押下し、以下のように設定
    • 「And/Or」で「And」を選択
    • 「フィールド」に「[請求月]」を設定
    • 「条件」に「=(等しい)」を設定
    • 「値」に「=Item.請求月」と入力

「条件分岐」コマンドを追加します。
その子コマンドのパラメーター「If [条件式]」部分を以下のように設定します。

  • 「変数」に「=請求CD切り替え判定用」と入力
  • 「条件」に「<=(以下)」、「値」に「=0」を設定

請求コードの採番が必要という条件に当てはまった際に、前の請求コードの値をカウントアップした値を新たに請求コードとして採番する処理を実装します。
請求コードは「001-01」「001-02」のように顧客IDが変わるごとにカウントアップする数値3桁と、処理を行う当月の数値2桁を半角ハイフンで繋いだ値としていますが、この処理で採番するのは顧客IDが変わるごとにカウントアップする数値となります。
「If」の子コマンドに、「変数の設定」コマンドを追加し、以下のように設定します。

  • 「変数名」に「請求CD」と入力
  • 「変数値」で「値、または数式」を選択
    「=請求CD+1」と入力

請求テーブルにデータを複製します。
「If」の子コマンドに「テーブルデータの更新」コマンドを追加し、以下のように設定します。

  • 「処理の種類」を「追加」に設定
  • 「対象テーブル」に「請求」を設定
    対象フィールドに以下の3項目を追加
    • 「フィールド」に「顧客ID」を選択
      「値」に「=Item.顧客ID」と入力
    • 「フィールド」に「請求月」を選択
      「値」に「=Item.請求月」と入力
    • 「フィールド」に「請求CD」を選択
      「値」に「=TEXT(請求CD,”000″)&”-“&Item.請求月」と入力
数値を文字列に置換

フィールドの更新値にはExcelと同じ関数を使用した式を指定することができます。
上述の「= TEXT(請求CD,”000″) 」では、 Excel と同様に表示形式を指定して数値を文字列に置換します。利用可能な関数の一覧は、下記のページを参照してください。
>関数一覧(Forguncyヘルプ)

受注明細テーブルのデータを取得するため、「変数の設定」コマンドを追加します。
このコマンドは、「If」の子コマンドではないということに注意してください。
設定は以下の内容で行います。

  • 「変数名」に「受注明細」と入力
  • 「変数値」で「データベースのテーブルを参照」を選択
    「対象テーブル」で「受注明細」を選択
  • 「変数値」の選択タブで「複数レコード」を選択
    「フィールドの追加」ボタンを押下し以下の2項目を追加
    • 「フィールド」に「[商品]」を選択
      「変数名」に「商品」と入力
    • 「フィールド」に「[価格]」を選択
      「変数名」に「価格」と入力
  • 「変数値」のクエリータブで「新しい条件」ボタンを押下し、以下のように設定
    • 「フィールド」に「[受注CD]」を設定
    • 「条件」に「=(等しい)」を設定
    • 「値」に「=Item.受注CD」と入力

条件に当てはまる受注明細テーブルのレコード分を請求明細テーブルに複製します。
「繰り返し」コマンドを追加し、以下の通りに設定します。

  • 「繰り返し回数、または繰り返し配列」に「変数の設定」コマンドで設定した「受注明細」を選択
  • 「繰り返し配列オブジェクト名」を「Item2」に変更

請求明細テーブルに、受注明細テーブルのデータに請求コードを付加したものを追加するコマンドを追加します。
「繰り返し」コマンドの子コマンドに「テーブルデータの更新」コマンドを追加し、以下の通りに設定します。

  • 「処理の種類」を「追加」に設定
  • 「対象テーブル」に「請求明細」を設定
    対象フィールドに以下の4項目を追加
    • 「フィールド」に「受注CD」を選択
      「値」に「=Item.受注CD」と入力
    • 「フィールド」に「商品」を選択
      「値」に「=Item2.商品」と入力
    • 「フィールド」に「価格」を選択
      「値」に「=Item2.価格」と入力
    • 「フィールド」に「請求CD」を選択
      「値」に「=TEXT(請求CD,”000″)&”-“&Item.請求月」と入力

結果確認用のページの確認

「請求データ照会」ページを開きます。
ページには「受注」、「請求」、「受注明細」、「請求明細」の各テーブルをそれぞれデータ連結した4つのリストビューが配置してあります。
また、請求月で表示データを絞り込むための「請求月」コンボボックスと、スケジュール実行による結果を確認するためにページをリロードするハイパーリンク「ページの再読み込み」が配置してあります。

結果を確認

プロジェクトをデバッグ実行し動作を確認します。
スケジュールタスクの実行後、「ページの再読み込み」をクリックすると、空だった「請求」テーブルのリストビュー、「請求明細」テーブルのリストビューそれぞれに「受注」テーブル、「受注明細」テーブルから複製された請求データが追加されていることを確認できます。

>ノーコードWebアプリ開発ツール「Forguncy」

ノーコードWebアプリ開発ツール「Forguncy」

Forguncy(フォーガンシー)は複数のシステムと直接接続して参照・更新が行えるデータ管理機能と、Excel感覚でレイアウトができる画面デザイン機能を備えたノーコードWeb開発&運用プラットフォームです。基幹システムでは対応できず、仕方なくExcelやAccessで管理していた業務のサブシステム化を強力に支援します。

CTR IMG