Forguncy(フォーガンシー)で見積管理システムを作ってみました!(4)
Excel関数もグラフも使えて画面も変更できる、ノンプログラミングWebシステム開発ツール「Forguncy(フォーガンシー)」。
前回に引き続き、見積管理システムを作ります。
↓↓ 前回の記事はこちら ↓↓
以前作成したForguncyによる簡単な見積管理システムに、今回は申請承認のプロセスを追加してみます。
方法は簡単で、Forguncyのワークフロー機能を使用します。
ワークフロー機能は担当者の管理が必要なので、まずはロールを設定したユーザーアカウントとログイン機能を追加します。
今回、ロール付きのユーザーアカウント情報はForguncyのテンプレートの中にある『出張申請』からExcelエクスポートをして、作成する見積管理システムにExcelインポートします。
![ユーザー管理をクリック](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-1.jpg)
![それぞれのアプリの ユーザー管理から エクスポート/インポートを実行](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-2.jpg)
これで次のユーザーアカウント情報を設定できました。
![ユーザー名、アカウント情報](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-3.jpg)
ログイン機能の追加には以下の操作をします。
- ページ表示権限の管理においてログインユーザーのみに全てのページ表示権限を与える。
- ユーザー切り替えができるように「FGC_ユーザーマスターページ」上に「ログインユーザー」型セルを設置する。
![ページ表示権限の管理をクリック](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-4.jpg)
![「すべて」にチェック](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-5.jpg)
![ログインユーザー型セル](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-6.jpg)
ワークフローを設定するにあたり、申請承認ルールを次のように規定します。
- 見積書の「提出」は、作成者が実行します。
- 見積書の「承認」「却下」は作成者が所属するグループのリーダーが実行します。
その他に次のルールを盛り込みます。
- 見積書の修正は、ワークフローの状態が「新規」である場合に作成者のみが実行できるものとします。
- ログインユーザーの役職が「部長」以外である場合、見積書一覧画面において表示する見積書は、ログインユーザーが作成したもの、またはログインユーザーがワークフロー担当であるものとします。ただし、検索は全ての見積書を対象に実行します。
- ログインユーザーの役職が「部長」である場合、見積書一覧画面において表示する見積書は全件とします。
以上を踏まえて、ワークフローを設定していきます。
ワークフローを設定するテーブル「見積リスト」を開き、テーブル設定から「ワークフロー…」をクリックします。
![ワークフロー…をクリック](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-7.jpg)
開いたワークフローダイアログにある「ワークフローを有効にする」にチェックを入れて、状態やプロセスはデフォルトのまま、実行後の担当者を変更します。
![ワークフローを使用するにチェック、実行後の担当者を選択](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-8.jpg)
ワークフローを設定したテーブルには、「状態」と「担当者」フィールドが追加され、データ連結やクエリー条件などに利用できるので、この後の見積一覧画面や見積書の修正機能に用いていきます。
![フィールドに自動追加されました](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-9.jpg)
次に、ページにワークフローバー型セルを設置します。
今回は「見積書」ページのフォーム内に設置しましたが、PDF出力した際にワークフローバーは表示されませんので問題ありません。
![ワークフローバー型セル](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-10.jpg)
以上、これで申請承認のプロセスを設定できました。
では、テーブルに追加された「状態」や「担当者」フィールドを使って、その他のルールを盛り込みます。
1.見積書の修正機能
いつでも誰でも見積書の内容を変更できてしまっては困ります。今回は、「状態」が「新規」である時、見積書の作成者のみが修正できるように、条件を追加します。
見積書のページ上にある「修正」ボタンを無効に設定し、ページロード時のコマンドで条件が合えば有効に切り替えます。
![その他「無効」にチェック](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-11.jpg)
![「見積書」のページロード時のコマンド設定](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-12.jpg)
これで、申請後や作成者以外の人による見積書の修正はできなくなります。
2.ログインユーザーによる見積書一覧の表示切替
ログインユーザー型セルには、ユーザーに割り当てられた未処理のワークフロー数が表示されます。
見積書一覧では、自分が未処理であるもの、また自分が作成したもののみを表示させることとします。
しかし、部長には割り当てられた処理がないため、ログインユーザーが部長である場合は、全件表示することにします。
ログインユーザーが部長かどうかの条件分岐が必要となるので、ページロード時のコマンドにリストビューのクエリーコマンドを追加します。
![ログインユーザーのロールが「部長」以外の時、ログインユーザーが「作成者」であるか「担当者」であるものにフィルターをかける](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-13.jpg)
さらに、自分が未処理であるものをもっとわかりやすくするために、一覧の1行目にマークを表示させるようにしてみます。
方法は、
1.「見積リスト」のリストビューに「担当者」を追加し、リストビューの外にログインユーザー型セルを設置します。表示用に「担当者」のサブフィールドである「氏名」をデータ連結しましたが、表示のみでしか利用できないようなので、非表示行に先の2項目を追加しています。
![ログインユーザー型セル](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-14.jpg)
2.「見積リスト」のリストビューに数式行を追加します。
![担当者がログインユーザである場合は「1」](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-15.jpg)
3.追加した数式行に条件付き書式を設定する。
![セル値が「1」の時は 赤丸アイコンを表示](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-16.jpg)
デバッグ実行するとこうなります。
<見積書を複数作成した正門さんがログインした時>
見積一覧ページ
![正門さんが作成した見積書一覧が表示、未提出状態である見積書を示すマークを表示](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-17.jpg)
状態が「新規」である見積書を表示
![修正ボタンが有効、提出ボタンが有効](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-18.jpg)
状態が「申請中」である見積書を表示
![修正ボタンが無効、アクションボタンがない](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-19.jpg)
状態が「承認済」である見積書を表示
![修正ボタンが無効、アクションボタンがない](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-20.jpg)
<正門さんが所属するグループリーダである秋山さんがログインした時>
見積一覧ページ
![秋山さんによる承認待ち状態である見積書を示すマークを表示](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-21.jpg)
秋山さんの承認待ちである見積書を表示
![修正ボタンが無効、「承認」「却下」ボタンが表示](https://forguncy.zait.jp/wp-content/uploads/2021/08/9-22.jpg)
いかがでしたでしょうか。
Forguncyのワークフロー機能を使って、簡単に申請承認プロセスを追加することができ、またその状態を利用して、表示を切り替えたり機能に制限をかけたりすることができました。
とても有効かつ便利ですね。
また今後も便利な機能を探っていきたいと思います。