以下、会計情報システムを構成する端末装置等の実施形態について、図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
本実施の形態において、伝票情報を管理するサーバ装置と、伝票情報の入力を行う端末装置とを具備する会計情報システムであって、サーバ装置が、「製品起動時」を含む2種類以上の種類識別子をマスタに対応付けて管理しており、端末装置が、製品起動時に、種類識別子「製品起動時」に対応するマスタをサーバからダウンロードし、ローカルな不揮発性記録媒体に蓄積し、使用する会計情報システムについて説明する。
また、上記構成において、種類識別子は、「製品起動時」、「メニュー選択時」または「マスタ使用時」の1以上を含む会計情報システムについて説明する。
また、端末装置が起動時にマスタを要求する会計情報システムについて説明する。
また、ローカルにマスタが無ければ、端末装置がサーバ装置に取得しに行く会計情報システムについて説明する。
また、端末装置が、製品起動時に、種類識別子「製品起動時」に対応するローカルのマスタの更新時刻を送信し、ローカルのマスタの更新時刻がサーバ側の対応するマスタの更新時刻より古ければ、当該マスタをサーバ装置から受信し、蓄積する会計情報システムについて説明する。
また、端末装置が、メニュー選択時に、種類識別子「メニュー選択時」に対応するローカルのマスタの更新時刻を送信し、ローカルのマスタの更新時刻がサーバ側の対応するマスタの更新時刻より古ければ、当該マスタをサーバ装置から受信し、蓄積する会計情報システムについて説明する。
また、端末装置が、マスタ使用時に、種類識別子「マスタ使用時」に対応するローカルのマスタの更新時刻を送信し、ローカルのマスタの更新時刻がサーバ側の対応するマスタの更新時刻より古ければ、当該マスタをサーバ装置から受信し、蓄積する会計情報システムについて説明する。
また、端末装置が、マスタを構成する一のデータ入力を受け付けた際、サーバ装置に当該データが存在するか否かを問い合わせ、存在しない場合、エラー出力する会計情報システムについて説明する。
図1は、本実施の形態における会計情報システムの概念図である。会計情報システムは、サーバ装置1、および1または2以上の端末装置2を備える。サーバ装置1と1以上の各端末装置2とは、例えば、LANやインターネット等のネットワーク、無線または有線の通信回線などを介して、通信可能に接続される。端末装置2は、伝票情報の入力を受け付け、サーバ装置1は、入力された伝票情報を管理する。
サーバ装置1は、例えば、会社や会計事務所等のサーバであるが、クラウドサーバでもよく、そのタイプや所在は問わない。端末装置2は、例えば、会社等のPCであるが、携帯端末(タブレット端末、スマートフォン等)などでもよく、そのタイプや所在は問わない。
サーバ装置1のブロック図は、図1に含まれている。サーバ装置1は、格納部11、処理部12、受信部13、および送信部14を備える。格納部11は、伝票格納部111、およびマスタ格納部112を備える。処理部12は、マスタ取得部121、および判断部122を備える。受信部13は、指示受信部131、および問合受信部132を備える。送信部14は、マスタ送信部141、および判断結果送信部142を備える。
図2は、端末装置2のブロック図である。端末装置2は、端末格納部21、端末受付部22、端末送信部23、端末受信部24、端末処理部25、および端末出力部26を備える。端末格納部21は、端末画面情報格納部211、端末マスタ格納部212、および端末アプリ格納部213を備える。端末受付部22は、端末起動指示受付部221を備える。端末送信部23は、端末指示送信部231、端末伝票送信部232、および端末問合送信部233を備える。端末受信部24は、端末マスタ受信部241、および端末結果受信部242を備える。端末処理部25は、端末マスタ蓄積部251を備える。端末出力部26は、端末画面出力部261、およびエラー出力部262を備える。
サーバ装置1を構成する格納部11は、各種の情報を格納し得る。各種の情報とは、例えば、後述する伝票情報、後述するマスタなどである。
伝票格納部111には、伝票情報が格納される。伝票情報とは、伝票の情報である。伝票は、例えば、入金伝票、出金伝票などであるが、その種類は問わない。伝票情報は、例えば、伝票番号、取引先、金額、および日付などを有するが、そのデータ形式や内容は問わない。
マスタ格納部112には、2以上のマスタが格納される。マスタは、通常、伝票情報の入力の際に参照されるテーブルである。また、会計処理の基本となるデータの集合である、と言っても良い。基本となるデータとは、例えば、取引先に関する情報(例えば、会社名、住所等)、科目に関する情報(例えば、通信費、消耗品費等)などであってもよい。マスタは、1以上のレコードを有する。1以上の各レコードは、1以上の属性値を有する。マスタは、例えば、処理部12によって、随時、更新されてよい。
マスタ格納部112には、2以上のマスタが格納される。マスタ格納部112には、通常、マスタのダウンロードのタイミングを示す情報(以下、タイミング情報と記す場合がある)に対応付けて、格納される。なお、対応付けて格納されることは、マスタがタイミング情報を有する場合も含む。タイミング情報は、例えば、種類識別子であるが、例えば、後述する項目識別子、後述するフィールド識別子、後述する画面識別子なども、タイミング情報となり得る。タイミング情報は、マスタをダウンロードするタイミングを特定する情報であれば良い。また、タイミング情報は、ダウンロードするマスタを特定する情報であることもあっても良い。ダウンロードするマスタを特定する情報は、例えば、マスタ識別子、項目識別子、フィールド識別子、画面識別子等である。
種類識別子とは、マスタの種類を識別する情報である。種類識別子は、マスタのダウンロードのタイミングを示す情報であることは好適である。種類識別子は、例えば、「製品起動時」、「メニュー選択時」、「マスタ使用時」等である。
種類識別子「製品起動時」は、製品の起動時にダウンロードされることを示す情報である。製品は、例えば、端末装置2にインストールされているアプリケーションであってもよい。製品の起動時とは、例えば、端末装置2でアプリケーションの起動指示が受け付けられた時でもよい。これに応じて、「製品起動時」に対応するマスタがダウンロードされ、そのマスタを用いて、メニューの画面が出力されてもよい。なお、種類識別子のデフォルトの値が「製品起動時」でも良い。
種類識別子「メニュー選択時」は、画面を構成するメニューの選択時にダウンロードされることを示す情報である。メニューは、例えば、「伝票入力」ボタン、「売上管理」ボタンといった2以上のメニュー項目で構成されていてもよい。メニューは、例えば、プルダウンメニューであり、2以上のメニュー項目で構成されていてもよい。メニューの選択時とは、例えば、メニューのいずれかのメニュー項目が指定された時であってもよい。これに応じて、当該画面の当該メニュー項目に対応するマスタがダウンロードされ、そのマスタを用いて、伝票入力等の画面が出力されてもよい。また、メニューの選択時とは、次の画面への遷移時でも良い。さらに、種類識別子「メニュー選択時」と同等の情報として、メニュー項目を識別する項目識別子、画面を識別する画面識別子等がある。
種類識別子「マスタ使用時」は、マスタの使用時にダウンロードされることを示す情報である。マスタ使用時とは、例えば、伝票入力の画面が表示された状態で、その画面が有する1以上の入力フィールドのうちのいずれかにカーソルが当てられた時でもよい。カーソルが当てられることは、当該カーソルにフォーカスが移動すること、当該カーソルがカレントカーソルになること等と言っても良い。これに応じて、当該画面の当該入力フィールドに対応するマスタがダウンロードされ、そのマスタを用いて、入力候補のリスト(例えば、プルダウンリストなど)が出力されてもよい。
種類識別子は、「製品起動時」、「メニュー選択時」、および「マスタ使用時」のうちの2以上のうちの一の種類識別子を採り得る。つまり、種類識別子は、「製品起動時」、「メニュー選択時」のうち一の種類識別子でもよいし、または、「メニュー選択時」、「マスタ使用時」のうち一の種類識別子でもよいし、または、「製品起動時」、「メニュー選択時」、「マスタ使用時」のうち一の種類識別子でもよい。
マスタには、通常、マスタ識別子、更新時刻なども対応付いている。マスタ識別子とは、マスタを識別する情報である。マスタ識別子は、例えば、IDであるが、マスタを識別し得る情報であれば何でもよい。更新時刻とは、マスタが更新された時刻である。更新時刻は、一のマスタが2回以上更新された場合には、通常、最後に更新された時刻であるが、2回以上の更新に対応する2以上の時刻を含んでいてもよい。
なお、格納部11には、通常、マスタ管理情報も格納されている。マスタ管理情報とは、マスタ格納部112に格納されている2以上のマスタを管理するための情報である。マスタ管理情報は、例えば、マスタ識別子、タイミング情報、および更新時刻の組の集合で構成される。なお、タイミング情報は、上述した種類識別子でも良いし、メニュー項目識別子や画面識別子でも良いし、フィールド識別子やマスタ識別子でも良い。また、タイミング情報がメニュー項目識別子や画面識別子である場合、当該タイミング情報に対応するマスタはメニュー選択時にダウンロードされる。また、タイミング情報がフィールド識別子やマスタ識別子である場合、当該タイミング情報に対応するマスタはマスタ使用時にダウンロードされる。
処理部12は、各種の処理を行う。各種の処理とは、例えば、後述するマスタ取得部121、後述する判断部122などの処理である。各種の処理には、フローチャートで説明する各種の判別なども含まれてよい。
マスタ取得部121は、端末装置2からの指示に応じて、マスタ格納部112からマスタを取得する。
端末装置2からの指示とは、通常、マスタのダウンロードを要求する指示である。かかる指示は、通常、マスタのダウンロードのタイミングを示す情報を有する。マスタのダウンロードのタイミングを示す情報はタイミング情報であり、例えば、種類識別子であるが、上述したメニュー項目識別子や画面識別子等である。
マスタ取得部121は、指示に応じたタイミングに対応するマスタを取得する。マスタ取得部121は、例えば、端末装置2からの指示に応じて、当該指示が有する種類識別子に対応する1以上のマスタを取得する。マスタ取得部121は、当該指示が有する種類識別子に対応する1以上のマスタを、通常、格納部11に格納されているマスタ管理情報を用いて取得する。
具体的には、マスタ取得部121は、例えば、種類識別子「製品起動時」を有する指示が受信された場合、マスタ管理情報から、種類識別子「製品起動時」に対応するマスタ識別子を取得し、取得したマスタ識別子に対応するマスタをマスタ格納部112から取得する。また、ダウンロードのデフォルトが「製品起動時」である場合、製品起動時にダウンロードされるマスタに対応するタイミング情報はNULLでも良い。
同様にして、マスタ取得部121は、種類識別子「メニュー選択時」を有する指示に応じて、種類識別子「メニュー選択時」に対応するマスタを取得する。ただし、種類識別子「メニュー選択時」を有する指示は、選択された項目を識別する項目識別子も有していてよい。また、指示が種類識別子を有さずに、項目識別子を有しても良い。マスタ取得部121は、例えば、項目識別子と1以上のマスタ識別子との組の集合である対応情報を保持しており、指示が有する項目識別子に対応する1以上のマスタを取得してもよい。また、種類識別子「メニュー選択時」を有する指示は、例えば、項目が選択された画面を識別する画面識別子をも有していてよい。また、指示が種類識別子を有さずに、画面識別子を有しても良い。その場合、マスタ取得部121は、例えば、画面識別子または項目識別子と1以上のマスタ識別子との組の集合である対応情報を保持しており、指示が有する画面識別子または当該項目識別子に対応する1以上のマスタを取得することは好適である。
また、マスタ取得部121は、例えば、種類識別子「マスタ使用時」を有する指示に応じて、種類識別子「マスタ使用時」に対応するマスタを取得する。ただし、種類識別子「マスタ使用時」を有する指示は、使用するマスタを識別するマスタ識別子をも有していてよく、その場合、マスタ取得部121は、当該マスタ識別子で識別されるマスタを取得すればよい。また、指示は、種類識別子を有さずに、マスタ識別子をも有していてよく、その場合、マスタ取得部121は、当該マスタ識別子で識別されるマスタを取得する。または、指示は、前述したフィールド識別子も有していてよく、その場合、マスタ取得部121は、例えば、フィールド識別子と1以上のマスタ識別子との組の集合である対応情報を保持しており、指示が有するフィールド識別子に対応するマスタ識別子で識別されるマスタを取得することは好適である。
すなわち、端末装置2からの指示は、例えば、端末装置2が出力すべきマスタを要求する指示であってもよい。かかる指示は、通常、マスタ識別子を有している。または、かかる指示は、フィールド識別子を有していてもよい。マスタ取得部121は、指示が有するマスタ識別子で識別されるマスタを取得することは好適である。マスタ取得部121は、指示が有するフィールド識別子に対応するマスタ識別子で識別されるマスタを取得することは好適である。
端末装置2からの指示は、種類識別子、マスタ識別子、画面識別子、項目識別子、またはフィールド識別子のうち1種類以上の情報に加えて、更新時刻を有していてもよい。更新時刻とは、マスタが更新された時刻である。指示が有する更新時刻は、ローカルに存在するマスタの更新時刻である。ローカルに存在するマスタとは、サーバ装置1からダウンロードされて、端末マスタ格納部212に格納されているマスタである。ローカルに存在するマスタは、サーバ側の対応するマスタが更新されても、通常、更新されない。このため、マスタのダウンロードを要求する指示が有する更新時刻は、サーバ側の対応するマスタの更新時刻よりも古い場合がある。なお、ダウンロードされるマスタが2以上の可能性がある場合、当該2以上の各マスタに対して、指示は更新時刻を有することは好適である。
マスタ取得部121は、受信された指示に含まれるタイミング情報に対応するマスタの中で、端末装置2の当該マスタの更新時刻より新しい更新時刻に対応するマスタをマスタ格納部112から取得することは好適である。マスタ取得部121は、例えば、受信された指示が有する更新時刻を取得し、また、マスタ格納部112の対応するマスタの更新時刻を取得し、指示が有する更新時刻が、マスタ格納部112の対応するマスタの更新時刻より古ければ、更新後のマスタをマスタ格納部112から取得する。指示が有する更新時刻が、マスタ格納部112の対応するマスタの更新時刻と同じであれば、マスタ取得部121は、マスタの取得を行わない。
判断部122は、マスタを構成する一のデータの入力を受け付けた端末装置2からの問い合わせに応じて、マスタ格納部112の中に当該一のデータが存在するか否かを判断する。マスタを構成する一のデータの入力とは、マスタを用いて出力されたプルダウンリストからの一のデータの選択でもよい。当該一のデータは、通常、マスタ格納部112の中に存在するが、マスタ格納部112から削除された結果、存在しない場合もあり得る。なお、問い合わせは、マスタを構成する一のデータまたは当該一のデータの識別子に加えて、マスタ識別子を有しても良い。判断部122は、問い合わせが有するマスタ識別子で識別されるマスタの中に、問い合わせが有する一のデータまたは問い合わせが有する一のデータの識別子に対応するデータが存在するか否かを判断する。
受信部13は、各種の情報を受信する。各種の情報とは、例えば、端末装置2からの指示や問い合わせや伝票情報などである。受信部13は、端末装置2からの指示等を、通常、当該端末装置2を識別する端末識別子と対に受信する。端末識別子は、例えば、MACアドレス、IPアドレスなどであるが、その種類は問わない。なお、対に受信または送信することは、指示等が端末識別子を有する場合も含む(以下同様)。
指示受信部131は、端末装置2からの指示を受信する。指示は、通常、タイミング情報を有する。指示受信部131は、例えば、端末装置2の起動時に、当該端末装置2からの指示を受信する。端末装置2の起動時に送信される指示は、例えば、種類識別子「製品起動時」を有する。指示受信部131は、例えば、メニュー選択時またはマスタ使用時にも指示を受信する。メニュー選択時に送信される指示は、例えば、項目識別子または画面識別子、または、種類識別子「メニュー選択時」を有する。マスタ使用時に送信される指示は、例えば、マスタ識別子またはフィールド識別子、または、種類識別子「マスタ使用時」を有する。指示は、当該指示が有するタイミング情報に対応するスタであり、端末マスタ格納部212に格納されているローカルのマスタの更新時刻をも有することは好適である。なお、フィールド識別子はフィールドを識別する情報である。また、フィールドとは、画面上のフィールドであり、画面上のテーブルの列でも良い。
問合受信部132は、端末装置2からの問い合わせを受信する。問い合わせとは、例えば、マスタを構成する一のデータの入力を受け付けた端末装置2からの問い合わせであり、その入力された一のデータがサーバ側に存在するか否かの問い合わせである。問い合わせは、例えば、その入力された一のデータを含んでもよいし、または、その入力された一のデータを識別する識別情報を含んでいてもよい。識別情報は、例えば、その入力された一のデータが属するマスタを識別するマスタ識別子、当該マスタにおける当該一のデータが属するレコードを識別するレコード識別子の組であってもよい。
送信部14は、各種の情報を送信する。各種の情報とは、例えば、マスタ、判断結果などである。
マスタ送信部141は、マスタ取得部121が取得した1または2以上のマスタを端末装置2に送信する。マスタ送信部141は、例えば、指示受信部131が端末識別子と対に受信した指示に応じて、マスタ取得部121が取得したマスタを、当該端末識別子で識別される端末装置2に送信してもよい。
判断結果送信部142は、判断部122の判断結果を端末装置2に送信する。判断結果送信部142は、例えば、指示受信部131が端末識別子と対に受信した問い合わせに応じて、判断部122がマスタ格納部112の中に当該一のデータが存在するか否かを判断した結果を、当該端末識別子で識別される端末装置2に送信してもよい。判断結果は、例えば、エラーか否かを示す情報、エラーであることを示す情報である。
端末装置2を構成する端末格納部21は、各種の情報を格納し得る。各種の情報とは、例えば、後述する画面情報、マスタ、後述するアプリケーション、当該端末装置2を識別する端末識別子などである。また、端末格納部21には、通常、ローカルマスタ管理情報も格納されている。ローカルマスタ管理情報とは、端末マスタ格納部212に格納されている2以上のマスタを管理するための情報である。ローカルマスタ管理情報は、例えば、マスタ識別子、タイミング情報、および更新時刻の組の集合で構成される。タイミング情報は、種類識別子でも良いし、マスタが使用される画面識別子、フィールド識別子等でも良い。
端末画面情報格納部211には、画面情報が格納される。画面情報とは、画面を構成するための情報である。画面は、伝票情報を入力する画面を含む。伝票情報を入力する画面は、例えば、ダイアログ、フォーム、ウィンドウなどであるが、その種類は問わない。以下では、伝票情報を入力する画面を単に画面と記す場合がある。画面は、1以上の入力フィールドを有することは好適である。入力フィールドとは、伝票情報等のデータが入力されるユーザインターフェースである。入力フィールドは、例えば、テキストボックス、表、表が有する1以上の各セルなどであってもよい。入力フィールドは、上述したフィールドを含む。また、画面には、通常、ボタン、メニュー、アイコンなど、入力フィールド以外の部品も配置されている。画面情報は、例えば、各部品の画像、部品の内部または外部に表示されるテキスト、画面内における各部品の位置(例えば、座標)を示すレイアウト情報などを含む。画面情報は、例えば、プログラムであってもよいし、HTMLであってもよく、そのデータ形式は問わない。
なお、画面情報は、予め端末画面情報格納部211に格納されていてもよいし、または、例えば、端末受信部24によってサーバ装置1から受信され、端末処理部25によって端末画面情報格納部11に蓄積されても構わない。
端末マスタ格納部212には、1以上のマスタが格納される。1以上の各マスタは、通常、端末指示送信部231が送信した指示に応じて、端末マスタ受信部241がサーバ装置1から受信したマスタである。端末マスタ格納部212は、例えば、ハードディスク、SSD、フラッシュメモリ等の不揮発性の記録媒体で構成されることは好適である。
端末アプリ格納部213には、会計情報の処理のアプリケーション(以下、会計処理アプリと記す場合がある)が格納される。ただし、端末アプリ格納部213は、会計処理アプリ以外のアプリケーションも格納し得る。なお、会計処理アプリは、いわゆる製品である。
端末受付部22は、各種の情報を受け付ける。各種の情報とは、例えば、マスタのダウンロードを要求する指示、出力すべきマスタを要求する指示、会計処理アプリの起動指示、メニュー選択などである。端末受付部22は、画面に対する伝票情報の入力も受け付ける。端末受付部22は、各種の情報を、通常、キーボードやマウスやタッチパネルなどの入力デバイスを介して受け付ける、ただし、受け付けは、入力デバイスから入力された情報の受け付けに限らず、有線もしくは無線の通信回線を介して送信された情報の受信、光ディスクや磁気ディスクや半導体メモリなどの記録媒体から読み出された情報の受け付けなども含み得る。
端末起動指示受付部221は、会計処理アプリの起動指示(以下、単に起動指示、または製品の起動指示と記す場合がある)を受け付ける。ただし、端末起動指示受付部221は、端末アプリ格納部213に格納されている各種のアプリケーションの起動指示も受け付け得る。
端末送信部23は、各種の情報を送信する。各種の情報とは、例えば、マスタのダウンロードを要求する指示、出力すべきマスタを要求する指示、起動指示などである。なお、送信される指示は、受け付けられた指示とデータ構造が異なっていてもよい。端末送信部23は、各種の情報を、通常、端末格納部21に格納されている端末識別子と対に送信する。
端末指示送信部231は、2以上の予め決められたタイミングで、マスタのダウンロードを要求する指示をサーバ装置1に送信する。2以上の予め決められたタイミングとは、例えば、製品起動時、メニュー選択時、およびマスタ使用時のうちの2以上のタイミングである。ただし、2以上の予め決められたタイミングは、製品起動時を含むことは好適である。つまり、端末指示送信部231は、マスタのダウンロードを要求する指示を、例えば、製品起動時、およびメニュー選択時に送信してもよいし、または、製品起動時、およびマスタ使用時に送信してもよいし、または、製品起動時、メニュー選択時、およびマスタ使用時に送信してもよい。
端末指示送信部231は、例えば、端末起動指示受付部221による起動指示の受け付けに応じて、マスタのダウンロードを要求する指示をサーバ装置1に送信する。その際、端末指示送信部231は、マスタのダウンロードを要求する指示に、種類識別子「製品起動時」を含めて送信することは好適である。また、端末指示送信部231は、かかる指示に、端末マスタ格納部212の対応するマスタの更新時刻をも含めて送信することは、より好適である。この場合の対応するマスタとは、種類識別子「製品起動時」に対応するマスタ識別子で識別されるマスタである。
また、端末指示送信部231は、例えば、端末受付部22によるメニュー選択の受け付けに応じて、マスタのダウンロードを要求する指示をサーバ装置1に送信してもよい。その際、端末指示送信部231は、マスタのダウンロードを要求する指示に、種類識別子「メニュー選択時」、項目識別子、画面識別子のうち1種類以上の情報を含めて送信することは好適である。また、端末指示送信部231は、かかる指示に、端末マスタ格納部212の対応するマスタの更新時刻をも含めて送信することは、より好適である。この場合の対応するマスタとは、種類識別子「メニュー選択時」、項目識別子、画面識別子のうち1種類以上の情報に対応するマスタ識別子で識別されるマスタである。
また、端末指示送信部231は、例えば、マスタ使用時に、マスタのダウンロードを要求する指示をサーバ装置1に送信してもよい。その際、端末指示送信部231は、マスタのダウンロードを要求する指示に、種類識別子「マスタ使用時」、マスタ識別子、またはフィールド識別子のうちの1以上の情報を含めて送信することは好適である。また、端末指示送信部231は、かかる指示に、端末マスタ格納部212の対応するマスタの更新時刻をも含めて送信することは、より好適である。この場合の対応するマスタとは、種類識別子「マスタ使用時」、マスタ識別子、またはフィールド識別子に対応するマスタ識別子で識別されるマスタである。
端末伝票送信部232は、端末受付部22が受け付けた伝票情報をサーバ装置1に送信する。
端末問合送信部233は、端末受付部22がマスタを構成する一のデータの入力の受け付けた際に、当該一のデータがサーバ側に存在するか否かの問い合わせをサーバ装置1に送信する。マスタを構成する一のデータの入力の受け付けたことは、例えば、マスタを用いて出力されたプルダウンリストから、一のデータが選択されたことでもよい。
端末受信部24は、サーバ装置1から各種の情報を受信する。各種の情報とは、例えば、マスタ、一のデータが存在しない旨の情報などである。各種の情報には、画面情報も含まれていてよい。つまり、画面情報は、サーバ装置1から送信された情報でも良い。
端末マスタ受信部241は、端末指示送信部231による指示の送信に応じて、サーバ装置1からマスタを受信する。指示とは、具体的には、マスタのダウンロードを要求する指示、または出力すべきマスタを要求する指示である。端末マスタ受信部241は、例えば、マスタのダウンロードを要求する指示の送信に応じて、当該指示が有する種類識別子に対応するマスタを受信する。また、端末マスタ受信部241は、例えば、出力すべきマスタを要求する指示の送信に応じて、当該指示が有するマスタ識別子に対応するマスタを受信する。
端末結果受信部242は、端末問合送信部233による問い合わせの送信に応じて、サーバ装置1から、判断部122による判断結果を受信する。判断結果とは、マスタ格納部112の中に当該一のデータが存在しない旨の情報、または、マスタ格納部112の中に当該一のデータが存在する旨の情報である。
端末処理部25は、各種の処理を行う。各種の処理とは、例えば、端末マスタ蓄積部251の処理である。各種の処理には、フローチャートで説明する各種の判別なども含まれる。
端末マスタ蓄積部251は、端末マスタ受信部241が受信したマスタを端末マスタ格納部212に蓄積する。蓄積は、上書きも含む。すなわち、端末マスタ蓄積部251は、端末マスタ受信部241が、端末マスタ格納部212に格納されているマスタに対応するマスタであり、更新されたマスタをサーバ装置1から受信した場合、格納されているマスタを、受信されたマスタで上書きしてもよい。
端末出力部26は、各種の情報を出力する。各種の情報とは、例えば、メニュー、伝票情報を入力する画面などである。メニューは、2以上のメニュー項目を含む。メニュー項目とは、選択される項目である。選択される項目は、例えば、ボタン、ハイパーリンクなどでもよい。
端末出力部26は、各種の情報を、通常、ディスプレイを介して出力する。ただし、出力は、ディスプレイへの表示に限らず、例えば、スピーカーからの音出力、プリンタでの印字、外部の装置への送信、記録媒体への蓄積、他の処理装置や他のプログラムなどへの処理結果の引渡しなども含み得る。
端末画面出力部261は、画面を出力する。画面とは、例えば、伝票情報を入力する画面である。端末画面出力部261は、通常、端末画面情報格納部211に格納されている画面情報と、端末マスタ格納部212に格納されているマスタとを用いて、伝票情報を入力する画面を構成し、出力する。詳しくは、端末画面出力部261は、画面情報を用いて、例えば、伝票情報が入力される1以上の入力フィールドを有する画面を構成し、ディスプレイに出力してもよい。また、端末画面出力部261は、画面内の一の入力フィールドにカーソルが当てられたとき、マスタを用いてプルダウンリストを出力することは好適である。
端末画面出力部261は、出力すべきマスタが端末マスタ格納部212に格納されていない場合に、端末指示送信部231が送信した指示に応じて、端末マスタ受信部241が受信した当該出力すべきマスタをも用いて、伝票情報を入力する画面を構成し、出力することは好適である。
エラー出力部262は、端末結果受信部242によって一のデータが存在しない旨の情報が受信された場合に、一のデータが存在しない旨のエラー出力を行う。エラー出力は、例えば、一のデータが存在しない旨を記述したテキストの表示でもよいし、かかるテキストを音声に変換した音声の出力でもよいし、一のデータが存在しない旨を示す図柄の表示または警告音の出力でもよく、その表現形式は問わない。
格納部11、伝票格納部111、マスタ格納部112、端末格納部21、端末画面情報格納部211、端末マスタ格納部212、および端末アプリ格納部213は、例えば、ハードディスクなど不揮発性の記録媒体が好適であるが、RAMなど揮発性の記録媒体でも実現可能である。
格納部11等に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が格納部11等で記憶されるようになってもよく、ネットワークや通信回線等を介して送信された情報が格納部11等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が格納部11等で記憶されるようになってもよい。入力デバイスは、例えば、キーボード、マウス、タッチパネル等、何でもよい。
処理部12、マスタ取得部121、判断部122、端末処理部25、および端末マスタ蓄積部251は、通常、MPUやメモリ等から実現され得る。処理部12等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。ただし、処理手順は、ハードウェア(専用回路)で実現してもよい。
受信部13、指示受信部131、問合受信部132、端末受信部24、端末マスタ受信部241、および端末結果受信部242は、通常、有線または無線の通信手段(例えば、ネットワークカードやモデム等の通信モジュール)で実現されるが、放送を受信する手段(例えば、放送受信モジュール)で実現されてもよい。
送信部14、マスタ送信部141、判断結果送信部142、端末送信部23、端末指示送信部231、端末伝票送信部232、および端末問合送信部233は、通常、有線または無線の通信手段で実現されるが、放送手段(例えば、放送モジュール)で実現されてもよい。
端末受付部22、および端末起動指示受付部221は、入力デバイスを含むと考えても、含まないと考えてもよい。端末受付部22等は、入力デバイスのドライバーソフトによって、または入力デバイスとそのドライバーソフトとで実現され得る。
端末出力部26、端末画面出力部261、およびエラー出力部262は、ディスプレイやスピーカー等の出力デバイスを含むと考えても含まないと考えてもよい。端末出力部26等は、出力デバイスのドライバーソフトによって、または出力デバイスとそのドライバーソフトとで実現され得る。
次に、会計情報システムの動作について、図3〜図6のフローチャートを用いて説明する。なお、既出の事項に関する説明は、省略または簡略化している。
図3は、サーバ装置1の動作例を説明するフローチャートである。
(ステップS301)処理部12は、指示受信部131が端末装置2から指示を受信したか否かを判別する。指示受信部131が端末装置2から指示を受信した場合はステップS302に進み、受信していない場合はステップS306に進む。
(ステップS302)マスタ取得部121は、マスタ格納部112から1以上のマスタを取得する処理であるマスタ取得処理を実行する。その後、ステップS301に戻る。なお、マスタ取得処理については、図4を用いて説明する。
(ステップS303)処理部12は、マスタ取得部121が取得したマスタの更新時刻を、格納部11に格納されているマスタ管理情報を用いて取得する。
(ステップS304)処理部12は、指示受信部131が受信した指示に含まれる更新時刻が、マスタ取得部121が取得したマスタの更新時刻よりも古いか否かを判別する。指示に含まれる更新時刻が取得されたマスタの更新時刻よりも古いマスタが存在する場合はステップS305に進み、そうでない場合はステップS301に戻る。なお、2以上のマスタが存在する場合、処理部12は、マスタごとに、指示に含まれる更新時刻とマスタ取得部121が取得したマスタの更新時刻とを比較する。
(ステップS305)マスタ送信部141は、マスタ取得部121が取得したマスタであり、指示に含まれる更新時刻が古い1以上のマスタを端末装置2に送信する。その後、ステップS301に戻る。
(ステップS306)処理部12は、問合受信部132が端末装置2から問い合わせを受信したか否かを判別する。問合受信部132が端末装置2から問い合わせを受信した場合はステップS307に進み、受信していない場合はステップS311に進む。
(ステップS307)処理部12は、問合受信部132が受信した問い合わせに含まれる一のデータまたはその識別情報を取得する。なお、問い合わせは、通常、マスタ識別子を有する。
(ステップS308)判断部122は、マスタ格納部112の中の該当するマスタの中に当該一のデータが存在するか否かを判別する。マスタ格納部112の中に当該一のデータが存在する場合はステップS309に進み、存在しない場合はステップS310に進む。
(ステップS309)判断結果送信部142は、マスタ格納部112の中に当該一のデータが存在する旨の判断結果を端末装置2に送信する。その後、ステップS301に戻る。
(ステップS310)判断結果送信部142は、マスタ格納部112の中に当該一のデータが存在しない旨の判断結果を端末装置2に送信する。その後、ステップS301に戻る。
(ステップS311)処理部12は、受信部13が端末装置2から伝票情報を受信したか否かを判別する。受信部13が端末装置2から伝票情報を受信した場合はステップS312に進み、受信していない場合はステップS301に戻る。
(ステップS312)処理部12は、受信部13が受信した伝票情報を伝票格納部111に蓄積する。その後、ステップS301に戻る。
なお、図3のフローチャートにおいては、ステップS309で、一のデータが存在する旨の判断結果を送信しているが、何も送信しなくてもよい。
なお、図3のフローチャートにおいて、サーバ装置1の電源オンやプログラムの起動に応じて処理が開始し、電源オフや処理終了の割り込みにより処理は終了する。ただし、処理の開始または終了のトリガは問わない。
図4は、上記ステップS302のマスタ取得処理の例を説明するフローチャートである。
(ステップS401)処理部12は、当該指示が種類識別子「製品起動時」を含むか否かを判別する。当該指示が種類識別子「製品起動時」を含む場合はステップS402に進み、含まない場合はステップS403に進む。
(ステップS402)マスタ取得部121は、種類識別子「製品起動時」に対応するマスタをマスタ格納部112から取得する。その後、上位処理にリターンする。
(ステップS403)処理部12は、当該指示が、メニュー選択時に対応するタイミング情報を含むか否かを判別する。メニュー選択時に対応するタイミング情報を含む場合はステップS404に進み、含まない場合はステップS405に進む。
(ステップS404)マスタ取得部121は、指示に対応するマスタをマスタ格納部112から取得する。その後、上位処理にリターンする。
(ステップS405)処理部12は、当該指示が、マスタ使用時に対応するタイミング情報を含むか否かを判別する。マスタ使用時に対応するタイミング情報を含む場合はステップS406に進み、含まない場合はステップS407に進む。
(ステップS406)マスタ取得部121は、指示に対応するマスタをマスタ格納部112から取得する。その後、上位処理にリターンする。
(ステップS407)マスタ取得部121は、当該指示に含まれるマスタ識別子に対応するマスタをマスタ格納部112から取得する。その後、上位処理にリターンする。
図5および図6は、端末装置2の動作例を説明するフローチャートである。
(ステップS501)端末処理部25は、端末起動指示受付部221が起動指示を受け付けたか否かを判別する。起動指示を受け付けた場合はステップS410に進み、受け付けていない場合は上位処理にリターンする。
(ステップS502)端末処理部25は、端末アプリ格納部213に格納されている会計処理アプリを起動する。
(ステップS503)端末指示送信部231は、マスタのダウンロードを要求する指示をサーバ装置1に送信する。ここで送信される指示は、種類識別子「製品起動時」を含む。また、指示は、端末マスタ格納部212に格納されているマスタ(以下、ローカルのマスタと記す場合がある)であり、種類識別子「製品起動時」に対応するマスタ識別子で識別されるマスタの更新時刻をも含む。
(ステップS504)端末処理部25は、端末マスタ受信部241がマスタを受信したか否かを判別する。端末マスタ受信部241がマスタを受信した場合はステップS505に進み、受信していない場合はステップS504に戻る。
(ステップS505)端末マスタ蓄積部251は、端末マスタ受信部241が受信したマスタを端末マスタ格納部212に蓄積する。
(ステップS506)端末出力部26は、例えば、メニューを含む画面を出力する。その後、ステップS501に戻る。
(ステップS507)端末処理部25は、端末受付部22がメニュー選択を受け付けたか否かを判別する。メニュー選択を受け付けた場合はステップS510に進み、受け付けていない場合はステップS507に戻る。
(ステップS508)端末指示送信部231は、マスタのダウンロードを要求する指示をサーバ装置1に送信する。ここで送信される指示は、例えば、選択されたメニュー項目を識別する項目識別子を含む。また、指示は、ローカルのマスタであり、選択されたメニュー項目を識別する項目識別子に対応するマスタ識別子で識別されるマスタの更新時刻をも含む。
(ステップS509)端末処理部25は、端末マスタ受信部241がサーバ装置1からマスタを受信したか否かを判別する。マスタを受信した場合はステップS510に進み、受信していない場合はステップS509に戻る。
(ステップS510)端末マスタ蓄積部251は、端末マスタ受信部241が受信したマスタを端末マスタ格納部212に蓄積する。
(ステップS511)端末画面出力部261は、端末画面情報格納部211に格納されている画面情報と、端末マスタ格納部212に格納されているマスタとを用いて、伝票情報を入力する画面を構成し、出力する。ここで出力される画面は、1以上の入力フィールドを有する。または、画面は、OKボタン、キャンセルボタンなども有する。
(ステップS512)端末処理部25は、マスタを使用するか否かを判断する。具体的には、端末処理部25は、例えば、画面の入力フィールドにカーソルが当てられた場合にマスタを使用すると判断し、そうでない場合はマスタを使用しないと判断してもよい。マスタを使用する場合はステップS515に進み、使用しない場合はステップS519に進む。
(ステップS513)端末指示送信部231は、マスタのダウンロードを要求する指示をサーバ装置1に送信する。ここで送信される指示は、例えば、フィールド識別子を含む。また、指示は、ローカルのマスタであり、フィールド識別子に対応するマスタ識別子で識別されるマスタの更新時刻をも含む。
(ステップS514)端末処理部25は、端末マスタ受信部241がマスタを受信したか否かを判別する。マスタを受信した場合はステップS515に進み、受信していない場合はステップS514に戻る。
(ステップS515)端末マスタ蓄積部251は、端末マスタ受信部241が受信したマスタを端末マスタ格納部212に蓄積する。
(ステップS516)端末出力部26は、端末マスタ格納部212に格納されているマスタであり、出力すべきマスタを用いて、リストを出力する。その後、ステップS501に戻る。なお、リストは、通常、2以上の選択可能な項目を含む。リストは、例えば、プルダウンメニューである。
(ステップS517)端末処理部25は、マスタを構成する一のデータの入力を受け付けたか否かを判別する。具体的には、端末処理部25は、例えば、出力されたプルダウンリストから一のデータが選択された場合に、かかるデータの入力を受け付けたと判断し、そうでない場合には、受け付けていないと判断してもよい。マスタを構成する一のデータの入力を受け付けた場合はステップS518に進み、受け付けていない場合はステップS523に進む。
(ステップS518)端末問合送信部233は、当該一のデータがサーバ側に存在するか否かの問い合わせをサーバ装置1に送信する。問い合わせは、その入力された一のデータを含んでいてもよいし、その入力された一のデータを識別する識別情報を含んでいてもよい。
(ステップS519)端末処理部25は、端末結果受信部242が判断結果を受信したか否かを判別する。判断結果を受信した場合はステップS520に進み、受信していない場合はステップS519に戻る。
(ステップS520)端末処理部25は、受信された判断結果が当該一のデータは存在しない旨の判断結果であるか否かを判別する。当該一のデータは存在しない旨を示す旨の判断結果である場合はステップS521に進み、そうでない場合はステップS522に進む。
(ステップS521)エラー出力部262は、当該一のデータが存在しない旨のエラー出力を行う。その後、ステップS512に戻る。
(ステップS522)端末出力部26は、当該一のデータを画面の入力フィールド内に出力する。その後、ステップS512に戻る。
(ステップS523)端末処理部25は、端末受付部22が伝票情報の入力を受け付けたか否かを判別する。伝票情報の入力を受け付けた場合はステップS524に進み、受け付けていない場合はステップS525に進む。
(ステップS524)端末伝票送信部232は、端末受付部22が受け付けた伝票情報をサーバ装置1に送信する。その後、ステップS512に戻る。
(ステップS525)端末処理部25は、OKボタンまたはキャンセルボタンが押されたか否かを判別する。OKボタンまたはキャンセルボタンが押された場合はステップS507に戻り、押されていない場合はステップS517に戻る。
なお、図5および図6のフローチャートにおいて、ステップS505とステップS506の間に、次の2つのステップを追加することは好適である。
(ステップS506a)端末画面出力部261は、出力すべきマスタが端末マスタ格納部212に格納されているか否かを判断する。出力すべきマスタが端末マスタ格納部212に格納されていない場合はステップS506bに進み、格納されている場合はステップS507に進む。
(ステップS506b)端末指示送信部231は、出力すべきマスタを要求する指示をサーバ装置1に送信する。ここで送信される指示は、出力すべきマスタを識別するマスタ識別子を有する。その後、ステップS504に戻る。
また、ステップS510とステップS511の間に、次の2つのステップを追加することは好適である。
(ステップS510a)端末画面出力部261は、出力すべきマスタが端末マスタ格納部212に格納されているか否かを判断する。出力すべきマスタが端末マスタ格納部212に格納されていない場合はステップS510bに進み、格納されている場合はステップS511に進む。
(ステップS510b)端末指示送信部231は、出力すべきマスタを要求する指示をサーバ装置1に送信する。ここで送信される指示は、出力すべきマスタを識別するマスタ識別子を有する。その後、ステップS509に戻る。
さらに、ステップS515とステップS516の間に、次の2つのステップを追加することは好適である。
(ステップS515a)端末画面出力部261は、出力すべきマスタが端末マスタ格納部212に格納されているか否かを判断する。出力すべきマスタが端末マスタ格納部212に格納されていない場合はステップS515bに進み、格納されている場合はステップS516に進む。
(ステップS515b)端末指示送信部231は、出力すべきマスタを要求する指示をサーバ装置1に送信する。ここで送信される指示は、出力すべきマスタを識別するマスタ識別子を有する。その後、ステップS514に戻る。
なお、図5および図6のフローチャートにおいて、端末装置2の電源オンやプログラムの起動に応じて処理が開始し、電源オフや処理終了の割り込みにより処理は終了する。ただし、処理の開始または終了のトリガは問わない。
以下、本実施の形態における会計情報システムの具体的な動作について説明する。なお、以下の説明は、例示に過ぎず、種々の変更が可能であり、本発明を何ら限定するものではない。また、既出の事項に関する説明は、省略または簡略化している。
サーバ装置1を構成する伝票格納部111には、1以上の伝票情報が格納されている。また、マスタ格納部112には、2以上のマスタが格納されている。2以上のマスタとは、例えば、マスタM1、マスタM2、マスタM3、…などである。さらに、格納部11には、図7に示すようなマスタ管理情報が格納されている。
図7は、マスタ管理情報のデータ構造図である。マスタ管理情報は、マスタ識別子とタイミング情報と更新時刻との組の集合で構成される。マスタ識別子とタイミング情報と更新時刻との組の集合とは、例えば、マスタ識別子「M1」と種類識別子であるタイミング情報「製品起動時」と更新時刻「2016/12/2 11:16」との組、マスタ識別子「M2」とタイミング情報「製品起動時」と更新時刻「2016/11/25 10:09」との組、マスタ識別子「M3」とタイミング情報「項目X」と更新時刻「2016/11/22 15:47」との組、マスタ識別子「M4」とタイミング情報「フィールドY,フィールドZ」と更新時刻「2016/10/13 16:30」との組、マスタ識別子「M5」と種類識別子「−」と更新時刻「2016/12/3 11:43」との組、…などである。なお、種類識別子「−」は、当該マスタが種類識別子を有さないこと(例えば、Null)を示す。また、タイミング情報「項目X」は、メニュー選択時を示すタイミング情報の例であり、種類識別子「メニュー選択時」または画面識別子等でも良い。さらに、タイミング情報「フィールドY,フィールドZ」は、マスタ使用時を示すタイミング情報の例であり、種類識別子「マスタ使用時」、マスタ識別子であってもよい。こうした事項は、後述するローカルマスタ管理情報にも当てはまる。また、タイミング情報「フィールドY,フィールドZ」のように、一のマスタに対応して、2以上のタイミング情報が存在しても良い。
端末装置2を構成する端末画面情報格納部211には、画面情報が格納されている。また、端末マスタ格納部212には、1以上のマスタが格納されている。1以上の各マスタは、端末指示送信部231が送信した指示に応じて、端末マスタ受信部241がサーバ装置1から受信し、端末マスタ蓄積部251が端末マスタ格納部212に蓄積したマスタであり、ローカルのマスタと記す場合がある。また、端末マスタ格納部212は、例えば、ハードディスクで構成されている。また、端末アプリ格納部213には、会計処理アプリが格納されている。さらに、端末格納部21には、図8に示すようなローカルマスタ管理情報が格納されている。
図8は、ローカルマスタ管理情報のデータ構造図である。ローカルマスタ管理情報は、マスタ識別子と種類識別子と更新時刻との組の集合で構成される。マスタ識別子と種類識別子と更新時刻との組の構造は、上述した図7のマスタ管理情報と同様である。
端末装置2において、端末起動指示受付部221が起動指示を受け付けると、端末処理部25は、端末アプリ格納部213に格納されている会計処理アプリを起動する。また、端末処理部25は、端末マスタ格納部212に格納されているローカルのマスタであり、種類識別子「製品起動時」に対応するマスタ識別子で識別されるマスタの更新時刻を、端末格納部21に格納されているローカルマスタ管理情報を用いて取得する。本例では、種類識別子「製品起動時」に対応するマスタ識別子M1,M2で識別されるマスタM1,M2の更新時刻「2016/11/26 13:23」,「2016/11/25 10:09」が取得される。そして、端末指示送信部231は、種類識別子「製品起動時」、およびマスタM1,M2の更新時刻「2016/12/2 11:16」,「2016/11/25 10:09」を含む指示をサーバ装置1に送信する。なお、かかる場合、指示は、例えば、「マスタダウンロード タイミング情報=製品起動時 (M1,2016/12/2 11:16)(M2,2016/11/25 10:09)」である。
サーバ装置1において、指示受信部131が端末装置2から上記指示を受信すると、マスタ取得部121は、当該指示が有する種類識別子「製品起動時」に対応するマスタM1およびマスタM2をマスタ格納部112から取得する。また、マスタ取得部121は、当該マスタM1の更新時刻「2016/12/2 11:16」、および当該マスタM2の更新時刻「2016/11/25 10:09」を、格納部11に格納されているマスタ管理情報を用いて取得する。
次に、処理部12は、当該指示に含まれる更新時刻が、マスタ取得部121が取得した更新時刻よりも古いか否かを判別する。本例では、当該指示に含まれるマスタM1の更新時刻「2016/11/26 13:23」は、マスタ取得部121が取得したマスタM1の更新時刻「2016/12/2 11:16」よりも古いと判別される。また、当該指示に含まれるマスタM2の更新時刻「2016/11/25 10:09」は、マスタ取得部121が取得したマスタM2の更新時刻「2016/11/25 10:09」よりも古くないと判別される。
マスタ送信部141は、取得されたマスタM1およびマスタM2のうち、当該指示に含まれる更新時刻が、取得された更新時刻よりも古いと判別されたマスタM1を、端末装置2に送信する。取得されたマスタM2については、当該指示に含まれる更新時刻が、取得された更新時刻と同じであり、ローカルのマスタM2に対して更新されていないと判断されるため、マスタ送信部141は、マスタM2の送信は行わない。なお、マスタ送信部141は、マスタM1の更新時刻「2016/12/2 11:16」も、マスタM1と対にして、端末装置2に送信しても良い。
端末装置2において、端末マスタ受信部241が、マスタM1を更新時刻「2016/12/2 11:16」と対に受信し、端末マスタ蓄積部251は、受信されたマスタM1をマスタ識別子M1に対応付けて端末マスタ格納部212に蓄積する。これに伴い、端末処理部25は、ローカルマスタ管理情報が有する更新時刻であり、マスタ識別子M1に対応する更新時刻「2016/11/26 13:23」を、マスタM1と対に受信された更新時刻「2016/12/2 11:16」に更新する。
端末出力部26は、端末画面情報格納部211に格納されている画面情報(例えば、各種のテキスト、ボタン等の部品の画像、およびレイアウト情報など)を用いて、図9に示すようなメニューの画面を構成し、ディスプレイを介して出力する。この画面は、テキスト「会計処理メニュー」、メニュー項目「伝票入力」が記された第一のボタン、およびメニュー項目「売上管理」が記された第二のボタンなどを有する。この画面上で、例えば、第一のボタンの押下によってメニュー項目「伝票入力」が選択されると、端末処理部25は、当該メニュー項目の項目識別子「項目X」に対応する1以上のマスタ識別子で識別されるローカルのマスタの更新時刻を、ローカルマスタ管理情報を用いて取得する。本例では、項目識別子「項目X」に対応するマスタ識別子M3で識別されるマスタM3の更新時刻「2016/11/14 10:17」が取得される。そして、端末指示送信部231は、タイミング情報である項目識別子「項目X」、およびマスタM3の更新時刻「2016/11/14 10:17」を含む指示をサーバ装置1に送信する。
サーバ装置1において、指示受信部131が端末装置2から上記指示を受信すると、マスタ取得部121は、当該指示が有する項目識別子「項目X」に対応するマスタM3をマスタ格納部112から取得する。また、マスタ取得部121は、当該マスタM3の更新時刻「2016/11/22 15:47」を、マスタ管理情報を用いて取得する。
次に、処理部12は、当該指示に含まれる更新時刻が、マスタ取得部121が取得した更新時刻よりも古いか否かを判別する。本例では、当該指示に含まれるマスタM3の「2016/11/14 10:17」は、マスタ取得部121が取得したマスタM3の更新時刻「2016/11/22 15:47」よりも古いと判別される。そこで、マスタ送信部141は、取得されたマスタM3を、当該マスタM3の更新時刻「2016/11/22 15:47」と対に、端末装置2に送信する。
端末装置2において、端末マスタ受信部241が上記マスタM3を更新時刻「2016/11/22 15:47」と対に受信し、端末マスタ蓄積部251は、受信されたマスタM3をマスタ識別子M3に対応付けて端末マスタ格納部212に蓄積する。これに伴い、端末処理部25は、ローカルマスタ管理情報が有する更新時刻であり、マスタ識別子M3に対応する更新時刻「2016/11/14 10:17」を、こうしてマスタM3と対に受信された更新時刻「2016/11/22 15:47」に更新する。端末画面出力部261は、端末画面情報格納部211に格納されている画面情報(例えば、各種のテキスト、ボタン等の部品の画像、2以上の入力フィールドを有する表の情報(例えば、列の数、各列の幅など)、およびレイアウト情報等)と、端末マスタ格納部212に格納されているマスタM3とを用いて、伝票情報を入力する画面を構成し、ディスプレイを介して出力する。
伝票情報を入力する画面の一例を、図10に示す。この画面は、例えば、1番目の入力フィールドである「No.」フィールド、2番目の入力フィールドである「取引先」フィールド、3番目の入力フィールドである「金額」フィールド、および4番目の入力フィールドである「科目」フィールドなどを有する。「No.」フィールドには、伝票の番号が入力される。「取引先」フィールドには、伝票に記載の取引先の情報が入力される「金額」フィールドには、伝票に記載の金額が入力される。「科目」フィールドには、伝票に記載の科目が入力される。または、この画面は、「OK」ボタン、「キャンセル」ボタンなども有する。
この画面上で、いずれかの入力フィールドにカーソルが当てられたとき、端末処理部25は、マスタを使用すると判断する。本例では、「取引先」フィールドに対してカーソルが当てられたとする。端末処理部25は、フィールド識別子「取引先」に対応するマスタ識別子M4で識別されるローカルのマスタM4の更新時刻「2016年10月13日 16:30」を、ローカルマスタ管理情報を用いて取得する。端末指示送信部231は、フィールド識別子「取引先」と、マスタM4の更新時刻「2016/10/13 16:30」とを含む指示を、サーバ装置1に送信する。
サーバ装置1において、指示受信部131が端末装置2から上記指示を受信すると、マスタ取得部121は、当該指示が有するフィールド識別子「取引先」に対応するマスタM4をマスタ格納部112から取得する。また、マスタ取得部121は、当該マスタM4の更新時刻「2016/10/13 16:30」を、マスタ管理情報を用いて取得する。
次に、処理部12は、当該指示に含まれる更新時刻が、マスタ取得部121が取得した更新時刻よりも古いか否かを判別する。本例では、当該指示に含まれるマスタM4の更新時刻「2016/10/13 16:30」は、マスタ取得部121が取得したマスタM3の更新時刻「2016/10/13 16:30」よりも古くないと判別される。このため、マスタ送信部141は、取得されたマスタM4の送信は行わない。
端末装置2において、端末画面出力部261は、カーソルが当てられた「取引先」フィールドに対してリストとして出力すべきマスタが、端末マスタ格納部212に格納されているか否かを判断する。例えば、端末画面出力部261は、フィールド識別子「取引先」と2つのマスタ識別子M4およびM5との対を保持しており、マスタ識別子M5で識別されるマスタM5が端末マスタ格納部212に格納されていないとする。この場合、端末指示送信部231は、当該マスタ識別子M5を有する指示を、サーバ装置1に送信する。
サーバ装置1において、指示受信部131が上記指示を受信すると、マスタ取得部121は、当該指示が有するマスタ識別子M5で識別されるマスタM5をマスタ格納部112から取得する。マスタ送信部141は、取得されたマスタM5を、当該マスタ5の更新時刻と対に端末装置2に送信する。
端末装置2において、端末マスタ受信部241がサーバ装置1からマスタM5を更新時刻と対に受信し、端末マスタ蓄積部251は、受信されたマスタM5をマスタ識別子M5に対応付けて端末マスタ格納部212に蓄積する。これに伴い、端末処理部25は、ローカルマスタ管理情報に、当該マスタ識別子M5と更新時刻との対を追加する。端末出力部26は、端末マスタ格納部212に格納されているローカルのマスタであり、出力すべきマスタM4およびM5を用いて、リストを構成し、ディスプレイを介して出力する。
リストの出力例を図11に示す。このリストは、マスタM4またはM5を構成するデータであり、「株式会社○○」、「○○商事(株)」、…といった1以上のデータを有する。リストは、伝票情報を入力する画面上に、カーソルが当てられた「取引先」フィールドに対応付けて表示される。なお、図11には、「取引先」フィールドにカーソルが当てられたとき表示されるリストに加えて、「科目」フィールドにカーソルが当てられたとき表示される別のリストも示されているが、後者については後述する。
このリスト上で、一のデータが選択されると、端末問合送信部233は、当該一のデータがサーバ側に存在するか否かの問い合わせをサーバ装置1に送信する。問い合わせは、その入力された一のデータを識別する識別情報を含む。この識別情報は、当該一のデータが属するマスタを識別するマスタ識別子、および当該マスタにおける当該一のデータが属するレコードを識別するレコード識別子の組であってもよい。本例では、プルダウンリスト上の「株式会社○○」が選択されたとする。
サーバ装置1において、問合受信部132が端末装置2からの上記問い合わせを受信すると、処理部12は、その問い合わせに含まれる一のデータの識別情報を取得する。判断部122は、マスタ格納部112の中に当該識別情報で識別される一のデータ「株式会社○○」が存在するか否かを判別する。マスタ格納部112の中に当該一のデータ「株式会社○○」が存在する場合、判断結果送信部142は、当該一のデータが存在する旨の判断結果を端末装置2に送信する。マスタ格納部112の中に当該一のデータ「株式会社○○」が存在しない場合、判断結果送信部142は、当該一のデータが存在しない旨の判断結果を端末装置2に送信する。本例では、当該一のデータ「株式会社○○」は、マスタ格納部112から削除されており、判断結果送信部142は、当該一のデータが存在しない旨の判断結果を端末装置2に送信する。
端末装置2において、端末結果受信部242が上記判断結果を受信し、受信された判断結果が、当該一のデータは存在しない旨を示すため、エラー出力部262は、当該一のデータが存在しない旨のエラー出力を行う。なお、当該一のデータ「株式会社○○」がマスタ格納部112に存在する場合、判断結果送信部142は、当該一のデータが存在する旨の判断結果を端末装置2に送信し、端末出力部26は、当該一のデータ「株式会社○○」を当該「取引先」フィールド内に出力する。
当該「取引先」フィールドに対し、リストから一のデータが選択される代わりに、端末受付部22が、リストにない伝票情報の入力を受け付けると、端末伝票送信部232は、当該伝票情報を、当該「取引先」フィールドを識別するフィールド識別情報と対に、サーバ装置1に送信する。
サーバ装置1において、受信部13が上記伝票情報をフィールド識別情報と対に受信すると、処理部12は、当該伝票情報をフィールド識別情報と対に伝票格納部111に蓄積する。端末装置2において、端末画面出力部261は、上記リストを消去し、再び図10の画面を出力する。
なお、図10の画面上で、「科目」フィールドに対してカーソルが当てられたとすると、端末処理部25は、フィールド識別子「科目」に対応するマスタ識別子で識別されるローカルのマスタの更新時刻を取得し、端末指示送信部231は、フィールド識別子「科目」と、当該マスタの更新時刻とを含む指示を、サーバ装置1に送信する。
サーバ装置1において、指示受信部131が端末装置2から上記指示を受信すると、マスタ取得部121は、当該指示が有するフィールド識別子「科目」に対応するマスタをマスタ格納部112から取得し、また、当該マスタの更新時刻を、マスタ管理情報を用いて取得する。処理部12は、当該指示に含まれる更新時刻が、取得された更新時刻よりも古いか否かを判別する。本例では、当該指示に含まれるマスタの更新時刻は、マスタ取得部121が取得したマスタの更新時刻よりも古いと判別され、マスタ送信部141は、取得されたマスタを送信する。
端末装置2において、端末マスタ受信部241が上記マスタを受信し、端末マスタ蓄積部25は、受信された上記マスタを端末マスタ格納部212に蓄積する。次に、端末画面出力部261は、カーソルが当てられた「科目」フィールドに対してリストとして出力すべきマスタが、端末マスタ格納部212に格納されているか否かを判断する。本例では、出力すべきマスタは、上記マスタであり、端末マスタ格納部212に格納されている。端端末画面出力部261は、格納されている上記マスタを用いてリストを構成し、ディスプレイを介して出力する。これにより、例えば、図11に示したように、「通信費」、「消耗品費」、…といった1以上のデータを有するリストが、伝票情報を入力する画面上に、カーソルが当てられた「取引先」フィールドに対応付けて表示される。このリストから一のデータが指定されると、端端末画面出力部261は、指定されたデータを「取引先」フィールド内に出力する。
端末装置2において、画面のOKボタンまたはキャンセルボタンが押されると、端末画面出力部261は、再び図9のようなメニュー画面を出力する。
以上、本実施の形態によれば、端末装置2は、2以上のマスタを異なる適切なタイミングでダウンロードすることにより、通信量を抑制しつつ、最新のマスタを用いた的確な伝票情報の入力を行うことができる画面を出力できる。
また、端末装置2は、マスタの種類によって、一部のマスタを起動時にダウンロードし、他のマスタを適時ダウンロードすることで、各マスタのダウンロードのタイミングを好適に遅らせることができる。
また、端末装置2は、マスタの種類によって、一部のマスタを起動時にダウンロードし、他のマスタをメニュー選択時またはマスタ使用時にダウンロードすることで、各マスタのダウンロードのタイミングを極力遅らせることができる。それによって、再ダウンロードの回数がいっそう減る結果、端末装置2は、通信量を大幅に抑制しつつ、最新のマスタを用いた的確な伝票情報の入力を行うことができる。
また、端末装置2は、会計処理アプリの起動時に、マスタのダウンロードを要求することで、端末装置2の起動時に要求を行う場合と比べて、ダウンロードのタイミングを遅らせることができるので、通信量を抑制しつつ、マスタを用いた会計処理を行うことができる。
また、端末装置2は、出力すべきマスタが端末側に存在しない場合にだけ当該マスタのダウンロードを要求し、出力すべきマスタが端末側に存在する場合にはダウンロードを要求しないことで、通信量をいっそう抑制しつつ、最新のマスタを用いた画面の出力を行うことができる。
また、端末装置2は、製品起動時にダウンロードすべきマスタが、既にダウンロード済みであり、かつ更新されていない場合には、当該マスタのダウンロードを行わないので、通信量をいっそう抑制できる。
また、端末装置2は、メニュー選択時にダウンロードすべきマスタが、既にダウンロード済みであり、かつ更新されていない場合には、当該マスタのダウンロードを行わないので、通信量をいっそう抑制できる。
また、端末装置2は、マスタ使用時にダウンロードすべきマスタが、既にダウンロード済みであり、かつ更新されていない場合には、当該マスタのダウンロードを行わないので、通信量をいっそう抑制できる。
また、端末装置2は、サーバ側のデータと異なるデータが入力された場合、エラーを出力するので、端末側でマスタが改変されることを防止できる。
さらに、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD−ROMなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態におけるサーバ装置1を実現するソフトウェアは、以下のようなプログラムである。
つまり、コンピュータがアクセス可能な記録媒体は、伝票情報が格納される伝票格納部と、2以上のマスタが格納されるマスタ格納部とを具備し、コンピュータを、端末装置からの指示を受信する指示受信部と、前記指示に応じたタイミングに対応するマスタを前記マスタ格納部から取得するマスタ取得部と、前記マスタ取得部が取得したマスタを前記端末装置に送信するマスタ送信部として機能させるためのプログラムである。
また、本実施の形態における端末装置2を実現するソフトウェアは、以下のようなプログラムである。
つまり、コンピュータがアクセス可能な記録媒体は、伝票情報を入力する画面である画面情報が格納される端末画面情報格納部と、1以上のマスタが格納される端末マスタ格納部とを具備し、コンピュータを、2以上の予め決められたタイミングで、マスタのダウンロードを要求する指示をサーバ装置に送信する端末指示送信部と、前記指示の送信に応じて、マスタを受信する端末マスタ受信部と、前記端末マスタ受信部が受信したマスタを前記端末マスタ格納部に蓄積する端末マスタ蓄積部と、前記端末画面情報格納部の端末画面情報と前記端末マスタ格納部のマスタとを用いて、伝票情報を入力する画面を出力する端末画面出力部と、前記画面に対する伝票情報の入力を受け付ける端末受付部と、前記端末受付部が受け付けた伝票情報を前記サーバ装置に送信する端末伝票送信部として機能させるためのプログラムである。
また、図12は、本実施の形態におけるプログラムを実行して、サーバ装置1または端末装置2を実現するコンピュータシステム900の外観図である。本実施の形態は、コンピュータハードウェアおよびその上で実行されるコンピュータプログラムによって実現され得る。図12において、コンピュータシステム900は、ディスクドライブ905を含むコンピュータ901と、キーボード902と、マウス903と、ディスプレイ904とを備える。なお、キーボード902やマウス903やディスプレイ904をも含むシステム全体をコンピュータと呼んでもよい。
図13は、コンピュータシステム900の内部構成の一例を示す図である。図13において、コンピュータ901は、ディスクドライブ905に加えて、MPU911と、ブートアッププログラム等のプログラムを記憶するためのROM912と、MPU911に接続され、アプリケーションプログラムの命令を一時的に記憶すると共に、一時記憶空間を提供するRAM913と、アプリケーションプログラム、システムプログラム、およびデータを記憶するストレージ914と、MPU911、ROM912等を相互に接続するバス915と、外部ネットワークや内部ネットワーク等のネットワークへの接続を提供するネットワークカード916と、を備える。ストレージ914は、例えば、ハードディスク、SSD、フラッシュメモリなどである。
コンピュータシステム900に、端末装置2等の機能を実行させるプログラムは、例えば、DVD、CD−ROM等のディスク921に記憶されて、ディスクドライブ905に挿入され、ストレージ914に転送されてもよい。これに代えて、そのプログラムは、ネットワークを介してコンピュータ901に送信され、ストレージ914に記憶されてもよい。プログラムは、実行の際にRAM913にロードされる。なお、プログラムは、ディスク921、またはネットワークから直接、ロードされてもよい。また、ディスク921に代えて他の着脱可能な記録媒体(例えば、DVDやメモリカード等)を介して、プログラムがコンピュータシステム900に読み込まれてもよい。
プログラムは、コンピュータの詳細を示す901に、端末装置2等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティプログラム等を必ずしも含んでいなくてもよい。プログラムは、制御された態様で適切な機能やモジュールを呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいてもよい。コンピュータシステム900がどのように動作するのかについては周知であり、詳細な説明は省略する。
なお、上述したコンピュータシステム900は、据え置き型のPCであるが、端末装置2は、例えば、タブレット端末やスマートフォンやノートPCといった、携帯端末で実現されてもよい。この場合、例えば、キーボード902およびマウス903はタッチパネルに、ディスクドライブ905はメモリカードスロットに、ディスク921はメモリカードに、それぞれ置き換えられることが望ましい。サーバ装置1も、基本的には、上記と同様のハードウェア構成でよい。ただし、以上は例示であり、端末装置2等を実現するコンピュータのハードウェア構成は問わない。
なお、上記プログラムにおいて、情報を送信する送信ステップや、情報を受信する受信ステップなどでは、ハードウェアによって行われる処理、例えば、送信ステップにおけるモデムやインターフェースカードなどで行われる処理(ハードウェアでしか行われない処理)は含まれない。
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、一のコンピュータが集中処理を行ってもよく、あるいは複数のコンピュータが分散処理を行ってもよい。
また、上記実施の形態において、一の装置に存在する2以上の通信手段(受信部13、送信部14など)は、物理的に一の媒体で実現されてもよいことは言うまでもない。
また、上記実施の形態において、各処理(各機能)は、単一の装置(システム)によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。