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

サーバーサイド 活用編

本記事は、サーバーサイド処理の活用シナリオにある「月毎の合計請求データを受注データから生成」の具体的な作成方法を解説したものです。
処理を定期実行することで、受注テーブルから顧客ごとに請求コードを採番し、月ごとの合計請求データを請求テーブルに作成します。
また、受注明細テーブルのデータにも顧客ごとに採番した請求コードを付加し請求明細テーブルにデータを登録します。

 

プロジェクトファイル
(作成バージョン:8.0.5.0)
total-billing-data_before.fgcp
total-billing-data_after.fgcp(実装済みプロジェクトファイル)

1.プロジェクトを確認する

サンプルプロジェクトを開いてテーブルやページの確認を行います。

手順1-1.テーブルの確認

プロジェクトには「受注」、「請求」、「受注明細」、「請求明細」の4つのテーブルが存在します。

手順1-2.ページの確認

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

2.スケジュールタスクを作成する

指定のスケジュールに従ってレポートを自動で生成する処理を作成します。

手順2-1.スケジュールタスクの設定

リボンの[作成]から[サーバーオブジェクト]の[スケジュールタスク]を押下します。
スケジュールタスクの設定ウィンドウが開くので、[全般]タブの名前欄に「月ごとの合計請求データを受注データから作成」と入力します。

手順2-1-1.トリガーの設定

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

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

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

手順2-2.請求コードを採番しデータ登録する処理に作成

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

手順2-2-1.トランザクションの作成

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

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

手順2-2-2.当月の受注データを取得する処理の作成

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

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

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

手順2-2-3.請求コードの採番処理

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

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

手順2-2-4.繰り返し処理の作成

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

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

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

手順2-2-5.請求コードの採番済み判定処理を追加

参照中のレコードの顧客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ヘルプ)

手順2-2-6.受注明細テーブルデータの取得

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

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

手順2-2-7.請求明細テーブルにデータを複製

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

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

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

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

3.デバッグを実行

プロジェクトをデバッグ実行します。

手順3-1.デバッグを実行する

リボンの[ホーム]>[デバッグ]>[開始]ボタン、またはForguncy Builderの左上にある▶ボタンを押下してプロジェクトをデバッグ実行します。

作成したページがブラウザで表示されます。

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

Forguncyのコマンドについてもっと知る

Forguncyの開発スタートガイドやオンラインヘルプでは、今回使用したコマンドについてより詳しくご紹介しています。
こちらもぜひご活用ください。

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

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

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

CTR IMG