2017年 春期 応用情報技術者試験 問6
稟議申請システム
S社では、機器の購入や他社との契約の金額が10万円を超える場合には、承認権をもつ者による承認が必要である。承認を得る際、担当者は決まった書式に従った稟議申請書を作成し、稟議申請をする。
稟議申請には、大きく分けて購買稟議と契約稟議がある。購買稟議の場合は、申請者の所属部署の部長、購買部の担当者、購買部の部長の順で、承認が必要となる。また、契約稟議の場合は、申請者の直属の上司、所属部署の部長の順で、承認が必要となる。稟議申請書の書式は、購買稟議と契約稟議とで異なり、書式の種類は今後増える可能性がある。ただし、申請者自身が承認者になるような稟議申請は行えない。
S社では、これまで紙の帳票で稟議申請を行っていたが、社内業務を効率化するために、稟議申請システムを開発して、Webシステム上で稟議を行うことにした。
〔稟議申請システムの概要〕
稟議申請システムには、ログイン画面、作成画面、一覧画面及び詳細画面の四つの画面がある。
ログイン画面では、利用者がユーザIDとパスワードを入力し、ログインする。
作成画面では、申請者が稟議申請に必要な事項を入力し、申請する。
一覧画面では、現在申請されている稟議申請を一覧の形式で見ることができる。稟議申請の一覧には、自分が申請した稟議申請と、自分が承認者に含まれている稟議申請が表示される。一覧から稟議申請を選択すると詳細画面が表示される。
詳細画面では、稟議申請の内容と現在の承認の状態を確認できる。承認者が詳細画面を参照すると、稟議申請の内容のほかに承認入力欄が表示され、承認又は否認の入力を行うことができる。
〔作成画面〕
稟議申請は、書式ごとに必要な入力項目が一部異なる。申請者は、あらかじめ書式を選択してから内容を入力する。作成画面のレイアウトを図1に示す。
申請者は、稟議申請の内容を入力した後、申請を行う。承認の申請先は定義に従ってシステムが自動で設定するので、申請者が指定する必要はない。
申請者:IPA太郎 所属部署:開発部 タイトル:開発用PCの購入 申請日:2017-04-14 〔購買稟議申請〕 品名:開発用PC 20台 金額:2,500,000 支払先:○○電機 支払日:2017-05-31 説明:開発用PC更新のため、 ¥125,000×20台が必要 です。ご検討ください。 承認順 1.所属部長 2.購買担当 3.購買部長 |
申請者:IPA次郎 所属部署:開発部 タイトル:開発用のライセンス契約 申請日:2017-04-10 〔契約稟議申請〕 契約先:○○サービス株式会社 初回支払日:2017-06-20 初回支払額:112,000 月々支払額:12,000 説明:導入手数料:¥100,000 月額:¥12,000 年間総額:¥244,000 承認順 1.直属の上司 2.所属部長 |
稟議申請の入力項目は申請書項目と呼ばれ、書式ごとに項目を一意に識別する項目キーと、項目値の組合せで管理される。項目の定義を表1に示す。
書式名 | 項目名 | 項目キー | 書式名 | 項目名 | 項目キー |
---|---|---|---|---|---|
購買稟議申請 | 品名 | name | 契約稟議申請 | 契約先 | contractor |
金額 | amount | 初回支払日 | start_date | ||
支払先 | payee | 初回支払額 | pay_initial | ||
支払日 | pay_date | 月々支払額 | pay_monthly | ||
説明 | description | 説明 | description |
〔詳細画面〕
詳細画面では、図1の内容が編集不可の状態で表示される。また、現在ログイン中の利用者に承認順が回ってきている稟議申請の場合は、画面に承認コメントの入力欄と、承認・否認のボタンが表示される。
承認者は、稟議申請の内容を確認し検討した上で、必要に応じてコメントを入力し、承認又は否認のボタンを押す。稟議申請は、承認者全員が承認すると可決となり、承認者のうち1人が否認した時点で否決となる。稟議申請が否決された場合、申請者は内容を修正して再度申請するか、申請を取りやめるかを判断する。
〔データベースの設計〕
稟議申請システムのデータベースの設計を行った。設計したデータベースのE-R図を図2に、エンティティの概要を表2に示す。
エンティティ | 説明 |
---|---|
ユーザ | ユーザの情報を管理する。上司ユーザIDには、直属の上司のユーザIDを設定する。 |
申請書 | 1件の稟議申請についての情報を格納する。書式によらず共通の項目はこのエンティティにも含める、書式ごとに異なる項目は申請書項目にもつ。 |
申請書項目 | 稟議申請の書式ごとに異なる項目の内容を、書式ごとに一意に特定する項目キーと、項目値の組合せで格納する。項目値は全て文字列で格納し、アプリケーション側で必要に応じて型を変換して用いる。 |
承認者情報 | 稟議申請の承認者の情報を管理する。承認状態には未承認、承認、否認があり、承認状態が未承認で、承認順の値が最も小さい承認者が、現在承認順が回ってきている承認者になる。 |
承認申請 | 稟議申請の承認申請状態を格納する。承認申請状態には承認中、可決、否決がある。 |
例えば図1の購買稟議申請の金額欄の場合、申請書項目マスタには、項目キーが'amount'、項目名が'金額'、項目値の型が'整数'のタプルが、申請書項目には、項目キーが'amount'、項目値が'2500000'のタプルが登録される。
このデータベースでは、E-R図のエンティティ名を表名にし、属性名を列名にして、適切なデータ型で表定義した関係データベースによって、データを管理する。
〔一覧画面〕
稟議申請の一覧画面には、申請書ID、タイトル、申請日、申請者のユーザ名及び所属部署名を表示する。画面に表示する情報を検索するSQL文を図3に示す。ログイン中の利用者のユーザIDは、埋込み変数":ユーザID"に設定されている。
SELECT 申請書.申請書ID, 申請書.タイトル, 申請書.申請日, ユーザ.ユーザ名, 部署マスタ.部署名 FROM 申請書 INNER JOIN 承認申請 ON 申請書.申請書ID = 承認申請.申請書ID INNER JOIN ユーザ ON 申請書.申請者ユニークID = ユーザ.ユーザID INNER JOIN 部署マスタ ON ユーザ.部署ID = 部署マスタ.部署ID WHERE (承認申請.承認申請状態 NOT IN ('可決','否決')) AND ((申請書.申請者ユーザID = :ユーザID) OR (申請書.申請書ID IN (SELECT DISTINCT 申請書ID FROM 承認者情報 INNER JOIN 承認申請 ON c WHERE d )))
また、経理部からの要望で、可決された稟議申請について、金額と支払日の一覧を出力できる機能を追加することになった。ただし、契約稟議については初回支払額だけ出力されればよい。金額と支払日の一覧を検索するSQL文を図4に示す。購買稟議申請の書式IDは'購買'、契約稟議申請の書式IDは'契約'である。
SELECT 申請書.申請書ID, 申請書.タイトル, e AS 金額, f AS 支払日 FROM 申請書 INNER JOIN 申請書項目 t1 ON g INNER JOIN 申請書項目 t2 ON h, 承認申請 WHERE ((申請書.書式ID = '購買' AND t1.項目キー = 'amount' AND t2.項目キー = 'pay_date') OR (申請書.書式ID = '契約' AND t1.項目キー = 'pay_initial' AND t2.項目キー = 'start_date')) AND (承認申請.申請書ID = 申請書.申請書ID AND 承認申請.承認申請状態 = '可決')
〔組織の改廃〕
運用開始後、利用者の部署異動や部署名の変更が行われることが想定されるが、システムの画面上で過去の稟議申請を参照した際には、申請時の情報が表示される必要がある。しかし、図2の設計ではこの要件を満たせない部分があるので、あるエンティティに属性を追加すると同時に図3のSQL文も修正することにした。