以下に、本願の開示する集計装置および集計プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
まず、本実施例に係る分析システムの構成について説明する。図1は、実施例1に係る分析システムの構成を示す図である。図1に示す分析システム10は、企業の各拠点の製品などの販売実績や受注状況、納品状況などの各種の状況の見える化を行うものである。
この分析システム10は、図1に示すように、複数の業務システム11と、マスタサーバ12と、モニタリングサーバ13とを有する。業務システム11は、企業の拠点でそれぞれ運用され、拠点の業務に用いられるシステムである。マスタサーバ12およびモニタリングサーバ13は、企業の本社で運用される。マスタサーバ12は、各業務システム11から各拠点の業務に関する情報を収集するサーバ装置である。モニタリングサーバ13は、マスタサーバ12に収集された情報を用いて、各拠点に状況を示す各種情報を提供するサーバ装置である。なお、図1の例では、業務システム11が2つの場合を例示したが、開示のシステムはこれに限定されず、業務システム11を任意の数とすることができる。また、図1の例では、モニタリングサーバ13が1つの場合を例示したが、開示のシステムはこれに限定されず、モニタリングサーバ13を2つ以上設けてもよい。
これら業務システム11と、マスタサーバ12、モニタリングサーバ13の間は、ネットワーク14を介して通信可能に接続される。かかるネットワーク14には、有線または無線を問わず、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)、VPN(Virtual Private Network)などの任意の通信網を採用できる。
業務システム11には、それぞれ拠点の各種の業務に関する計画や実績が入力される。業務システム11は、それぞれの拠点が遂行する業務内容に応じてそれぞれ異なるものとしてもよく、複数のシステムを含んでもよい。例えば、かかる業務システム11としては、拠点の会計を管理する会計システム、各種作業の予定や実績を管理する作業管理システム、各設備稼働の予定や実績を管理する設備管理システム、商品等の生産状況を管理する生産管理システムなどがある。また、業務システム11としては、商品等の販売計画を管理する販売計画システム、商品等の販売実績や受注状況を管理する販売管理システム、商品等の生産状況を管理する生産管理システム、商品等の在庫状況を管理する在庫管理システムなどがある。さらに、業務システム11としては、生産や販売、在庫、購買、物流、会計などの企業内のあらゆる経営資源に関する情報を管理するERP(Enterprise Resource Planning)システムなどがある。業務システム11には、会計、作業管理、設備管理、販売管理、生産管理、販売計画、在庫管理など各種の業務に関する計画や実績の情報が入力される。例えば、業務システム11には、商品を販売する取引があった場合、取引に関する売上伝票の情報が入力される。
業務システム11は、入力された伝票情報などの各種業務に関する情報を業務データとして、マスタサーバ12へ送信する。例えば、会計に関する業務データとしては、各勘定科目の予算データ、各勘定科目の残高データなどがある。また、作業管理に関する業務データとしては、作業予定データ、作業実績データなどがある。また、設備管理に関する業務データとしては、設備稼働予定データ、設備稼働実績データなどがある。また、生産管理に関する業務データとしては、製造予定データ、製造実績データ、消費材料の使用予定データ、消費材料の使用実績データ、不良実績データなどがある。また、販売計画に関する業務データとしては、販売計画データ、商品等の調達予定データ、商品等の調達実績データなどがある。また、販売管理に関する業務データとしては、受注データ、出荷実績データ、売上実績データなどがある。在庫管理に関する業務データとしては、在庫データ、在庫調整データ、原価データなどがある。なお、業務システム11は、業務データをマスタサーバ12へリアルタイムに送信してもよく、ユーザから送信を指示する操作が行われたタイミングで送信してもよく、日毎など一定期間毎にバッチ処理でまとめて送信してもよい。
マスタサーバ12は、各業務システム11から各拠点の業務データを収集する。ここで、グローバル化の進展により、企業は、拠点が複数の地域や国に展開している場合がある。各拠点の業務システム11は、それぞれ個別に運用されるため、同一の商品や同一の仕入先など同一の対象に対して異なる名称やコードが使用される場合がある。マスタサーバ12は、各業務システム11で用いられる名称やコードなどを統一するためのマスタ情報を記憶している。このマスタ情報には、各業務システム11で用いられる名称やコードと、共通に用いる名称やコードとが関連づけられている。マスタサーバ12は、マスタ情報に基づいて、各業務システム11から収集された情報のコードを統一コードに変換して格納する。
また、マスタサーバ12は、モニタリングサーバ13へ各拠点の各種の状況の分析に用いる分析用のデータを送信する。ここで、マスタサーバ12には、各業務システム11から各拠点で発生した伝票の情報などの大量の業務データが記憶される。この大量の業務データをマスタサーバ12がモニタリングサーバ13へ送信した場合、通信負荷が大きい。モニタリングサーバ13を複数設けた場合、通信負荷はさらに大きくなる。そこで、マスタサーバ12は、各業務システム11から収集された業務データをサマライズし、サマライズしたサマライズデータを分析対象データとしてモニタリングサーバ13へ送信する。例えば、マスタサーバ12は、売上伝票情報を集計キーとされた項目の情報毎に集計してサマライズデータを生成し、生成したサマライズデータを分析対象データとしてモニタリングサーバ13へ送信する。
モニタリングサーバ13は、マスタサーバ12に送信されたサマライズデータを蓄積し、蓄積されたサマライズデータを用いて、各拠点に関する各種情報を提供する。本社の経営者や担当者、あるいは各拠点の責任者は、モニタリングサーバ13から提供される各拠点に関する各種情報を基に分析を行う。
また、マスタサーバ12には、各拠点から伝票が業務データとして適宜収集される。マスタサーバ12は、各拠点から収集された業務データを集計してサマライズデータを生成する。よって、サマライズデータは、複数の伝票の集計結果を含む場合がある。また、マスタサーバ12には、ある商品の売上情報を集計してモニタリングサーバ13へ送信した後に、同じ商品の売上情報が再度収集される場合もある。マスタサーバ12は、再度収集された売上情報も集計してモニタリングサーバ13へ送信する。このように、モニタリングサーバ13には、同じ商品に関するサマライズデータが複数回に分かれて送信される場合もある。このため、モニタリングサーバ13では、マスタサーバ12から受信されたサマライズデータを以前に受信したサマライズデータと置き換えず、受信したサマライズデータを蓄積、集計して各種情報を提供する。
ところで、各拠点では、マスタサーバ12へ伝票情報を送信した後、送信した伝票情報の伝票の数量や金額などの数値を修正する場合があり、数値を修正した修正伝票の伝票情報を再度送信する場合がある。マスタサーバ12が、修正伝票の伝票情報の数値を集計したサマライズデータをモニタリングサーバ13へ送信した場合、修正前の数値を集計したサマライズデータと修正後の数値を集計したサマライズデータをそれぞれ送信される。モニタリングサーバ13は、マスタサーバ12に受信したサマライズデータを蓄積、集計するが、修正伝票の数値を集計したサマライズデータを集計した場合、伝票の数値とサマライズデータを合算した数値との間で数値の整合性が取れなくなる。例えば、マスタサーバ12は、拠点Aから収集された商品Aを10個売り上げた売上の伝票情報を集計してモニタリングサーバ13へ送信する。その後、マスタサーバ12は、拠点Aから商品Aの売上個数が8個に修正された売上の伝票情報が収集され、売上個数が修正された伝票情報を集計してモニタリングサーバ13へ送信した場合を想定する。この場合、モニタリングサーバ13では、受信したサマライズデータを蓄積、集計した結果、商品Aの売上個数が18個となってしまう。
そこで、本実施例に係るマスタサーバ12は、それぞれの伝票を識別する識別情報および所定の集計項目の数値を含んだ伝票情報を記憶する。一態様としては、それぞれの伝票を識別する識別情報毎に直近に受信した伝票情報を記憶する。例えば、伝票情報に全拠点で一意となるように伝票番号を定める場合、マスタサーバ12は、伝票番号を識別情報として、伝票番号毎に伝票情報を記憶する。また、伝票情報に拠点毎に一意となる伝票番号を定める場合、マスタサーバ12は、拠点のコードおよび伝票番号を識別情報として、拠点のコードおよび伝票番号毎に伝票情報を記憶する。また、伝票情報に、拠点、伝票の種別毎に一意となる伝票番号を定める場合、マスタサーバ12は、拠点のコード、伝票の種別および伝票番号を識別情報として、拠点のコード、種別および伝票番号毎に伝票情報を記憶する。そして、本実施例に係るマスタサーバ12は、受信された伝票情報と識別情報が同じ伝票情報が記憶されている場合、記憶された伝票情報の数値に対する受信した伝票情報の数値の差を集計する。一方、本実施例に係るマスタサーバ12は、同じ伝票情報が記憶されていない場合、受信した伝票情報の数値を集計する。このように、識別情報が同じ伝票情報が記憶されている場合、記憶された伝票情報の数値に対する受信した伝票情報の数値の差を集計することにより、修正された伝票について修正前の数値と修正後の数値の差分が集計される。よって、本実施例に係るモニタリングサーバ13によれば、伝票が修正された場合でも数値の整合性が取れなくなることを抑制できる。
[マスタサーバ12の構成]
続いて、本実施例に係るシステムに含まれるマスタサーバ12の機能的構成について説明する。図2は、実施例1に係るマスタサーバの機能的構成を示すブロック図である。図2に示すように、マスタサーバ12は、通信I/F(interface)部20と、記憶部21と、制御部22とを有する。
通信I/F部20は、他の装置、例えばモニタリングサーバ13や業務システム11との間で通信制御を行うインタフェースである。例えば、通信I/F部20は、業務システム11から伝票情報などの各種の業務データを受信する。また、通信I/F部20は、分析対象データをモニタリングサーバ13へ送信する。かかる通信I/F部20の一態様としては、LANカードなどのネットワークインタフェースカードを採用できる。
記憶部21は、フラッシュメモリなどの半導体メモリ素子、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部21は、上記の種類の記憶装置に限定されるものではなく、RAM(Random Access Memory)、ROM(Read Only Memory)であってもよい。
記憶部21は、制御部22で実行されるOS(Operating System)や後述するマスタデータのメンテナンスに用いるプログラム、業務データのサマライズに用いるプログラムなど各種プログラムを記憶する。さらに、記憶部21は、制御部22で実行されるプログラムの実行に必要な各種データを記憶する。かかるデータの一例として、記憶部21は、業務データ30と、受信データ記憶テーブル31と、マスタデータ32と、集計対象格納テーブル33と、サマライズデータ34とを記憶する。
業務データ30は、各業務システム11から受信した業務データである。一例として、業務データ30は、通信I/F部20が各業務システム11から受信した業務データが後述の受信制御部40によって格納される。他の一例として、業務データ30は、後述の特定部41によって参照される。また、他の一例として、業務データ30は、後述の格納部43によって削除される。
図3は、実施例1に係る業務データの構成例を示す図である。なお、図3は、業務データとして売上伝票情報の構成例を示す図である。図3に示すように、業務データ30は、「拠点コード」、「伝票番号」、「部門」、「拠点品番」、「売上日」、「売上金額」の各項目を有する。拠点コードの項目は、業務データの送信元の拠点を示す情報を格納する領域である。拠点には、それぞれの拠点を示すコードが一意に定められている。拠点コードの項目には、業務データの送信元の拠点を示すコードが格納される。伝票番号の項目は、伝票を識別する番号を格納する領域である。伝票には、取引毎にそれぞれ一意の伝票番号が定められる。本実施例では、それぞれの伝票に、拠点毎に一意となる伝票番号が定められるものとする。伝票番号の項目には、定められた伝票番号が格納される。部門の項目は、業績データの送信元の部門を示すコードを格納する領域である。部門には、それぞれの部門を示すコードが一意に定められている。この部門を示すコードは、全社で一意に定められてもよく、拠点毎にそれぞれの拠点内で一意に定められてもよい。部門の項目には、業務データの送信元の部門を示すコードが格納される。拠点品番の項目は、拠点における商品を示すコードを格納する領域である。拠点では、商品毎にコードを定めている。この商品を示すコードは、拠点毎に定めることができるため、同一の商品でも拠点毎に異なる場合もある。拠点品番の項目には、業務データの送信元の拠点での商品を示すコードが格納される。売上日の項目は、取引があった日付を格納する領域である。売上金額の項目は、取引された金額を格納する領域である。
図3の例では、拠点コード「01」の伝票番号「D001」は、2012年4月10日に部門「A」で拠点品番「L001」の商品の売上取引があり、売上金額が「1,000」円であったことを示す。また、拠点コード「01」の伝票番号「D002」は、2012年4月15日に部門「A」で拠点品番「L002」の商品の売上取引があり、売上金額が「2,000」円であったことを示す。また、拠点コード「01」の伝票番号「D003」は、2012年8月30日に部門「B」で拠点品番「L003」の商品の売上取引があり、売上金額が「3,000」円であったことを示す。
受信データ記憶テーブル31は、各業務システム11から受信した業務データ30を記憶するテーブルである。例えば、受信データ記憶テーブル31は、拠点コードおよび伝票番号毎に、直近に受信した業務データ30を記憶する。一例として、受信データ記憶テーブル31は、後述の生成部42によって参照される。他の一例として、受信データ記憶テーブル31は、後述の格納部43によって業務データ30が格納される。
図4は、実施例1に係る受信データ記憶テーブルの構成例を示す図である。なお、図4は、業務データ30として直近に受信した売上伝票情報を格納する受信データ記憶テーブル31の構成例を示す図である。図4に示すように、受信データ記憶テーブル31は、図3に示した業務データ30と同様に、「拠点コード」、「伝票番号」、「部門」、「拠点品番」、「売上日」、「売上金額」の各項目を有する。また、受信データ記憶テーブル31は、「統一コード」の項目を有する。統一コードの項目は、拠点品番の商品の後述する統一コードを格納する領域である。本実施例では、業務データ30の内容を全て記憶するため、受信データ記憶テーブル31に業務データ30の項目を全て含むものとしているが、必要な項目のみを抽出して格納してもよい。
図4の例では、拠点コード「01」の伝票番号「D001」は、2012年4月10日に部門「A」で拠点品番「L001」の商品の売上取引があり、商品の統一コードが「S001」であり、売上金額が「1,000」円であったことを示す。また、拠点コード「01」の伝票番号「D002」は、2012年4月15日に部門「A」で拠点品番「L002」の商品の売上取引があり、商品の統一コードが「S002」であり、売上金額が「2,000」円であったことを示す。また、拠点コード「01」の伝票番号「D003」は、2012年8月30日に部門「B」で拠点品番「L003」の商品の売上取引があり、商品の統一コードが「S003」であり、売上金額が「3,000」円であったことを示す。
マスタデータ32は、共通に用いられる基本となる各種情報が記憶されたデータである。マスタデータ32は、本実施例に関係するデータとして、統一コードテーブル32aと、集計キー情報32bとを含む。
統一コードテーブル32aは、各業務システム11で用いられる名称やコードと統一名称や統一コードを対応付けて記憶したテーブルである。一例として、統一コードテーブル32aは、各業務システム11から送信された業務データ30のコードを統一するため、後述の特定部41によって参照される。他の一例として、統一コードテーブル32aは、後述のマスタ管理部45によって更新される。集計キー情報32bは、サマライズにおいて業務データをどの項目の単位で集計するかの集計キーを示すデータである。一例として、集計キー情報32bは、各業務データをサマライズするため、後述の集計部44によって参照される。他の一例として、集計キー情報32bは、後述のマスタ管理部45によって更新される。
図5は、実施例1に係る統一コードテーブルの構成例を示す図である。図5に示すように、統一コードテーブル32aは、「拠点コード」、「拠点品番」、「統一コード」の各項目を有する。拠点コードの項目は、拠点を示すコードを格納する領域である。拠点品番の項目は、拠点において商品を示すコードを格納する領域である。統一コードの項目は、商品を示す統一コードを格納する領域である。なお、この統一コードは、何れかの拠点での商品のコードとしてもよく、商品についてそれぞれ一意に新たに定めてもよい。
図5の例では、拠点コード「01」の拠点品番「L001」は、統一コードが「S001」であることを示す。また、拠点コード「02」の拠点品番「M001」は、統一コードが「S001」であることを示す。また、拠点コード「01」の拠点品番「L002」は、統一コードが「S002」であることを示す。また、拠点コード「02」の拠点品番「M002」は、統一コードが「S002」であることを示す。また、拠点コード「01」の拠点品番「L003」は、統一コードが「S003」であることを示す。また、拠点コード「02」の拠点品番「M003」は、統一コードが「S003」であることを示す。
集計対象格納テーブル33は、集計の対象とする業務データ30を記憶するテーブルである。一例として、集計対象格納テーブル33は、後述の格納部43によってデータが格納される。他の一例として、集計対象格納テーブル33は、後述の集計部44によって参照およびデータの削除が行われる。
図6は、実施例1に係る集計対象格納テーブルの構成例を示す図である。なお、図6は、業務データ30として売上伝票情報を格納する集計対象格納テーブル33の構成例を示す図である。図6に示すように、集計対象格納テーブル33は、図4に示した受信データ記憶テーブル31と同様に、「拠点コード」、「伝票番号」、「部門」、「統一コード」、「売上日」、「売上金額」の各項目を有する。また、集計対象格納テーブル33は、「区分」の項目を有する。区分の項目は、伝票の区分を格納する領域である。区分の項目には、以前の伝票を取り消す赤伝票を表す場合、「01」が格納され、黒伝票を表す場合、「02」が格納される。本実施例では、集計対象格納テーブル33に受信データ記憶テーブル31の拠点品番以外の項目を全て含むものとしているが、必要な項目のみを抽出して格納してもよい。
図6の例では、拠点コード「01」の伝票番号「D001」は、2012年4月10日に部門「A」で統一コード「S001」の商品について売上金額が「1,000」円の売上取引があり、区分が「02」であることから黒伝票であることを示す。また、拠点コード「01」の伝票番号「D002」は、2012年4月15日に部門「A」で統一コード「S002」の商品について売上金額が「2,000」円の売上取引があり、区分が「02」であることから黒伝票であることを示す。また、拠点コード「01」の伝票番号「D003」は、2012年8月30日に部門「B」で拠点品番「L003」の商品について売上金額が「3,000」円の売上取引があり、区分が「02」であることから黒伝票であることを示す。
サマライズデータ34は、集計対象格納テーブル33に格納されたレコードのデータをサマライズしたデータである。一例として、サマライズデータ34は、後述の集計部44によって業務データ30を集計して生成される。他の一例として、サマライズデータ34は、後述の送信制御部46によって参照される。
図7は、実施例1に係るサマライズデータの構成例を示す図である。なお、図7は、売上伝票情報を集計して生成されたサマライズデータの構成例を示す図である。図7に示すように、サマライズデータ34は、「拠点コード」、「部門」、「統一コード」、「売上年月」、「売上金額」の各項目を有する。拠点コードの項目は、拠点を示すコードを格納する領域である。統一コードの項目は、商品を示す統一コードを格納する領域である。売上年月の項目は、売上を集計した年および月を格納する領域である。売上金額の項目は、売上年月毎に集計された売上金額を格納する領域である。また、サマライズデータ34は、サマライズされている項目に、サマライズされている項目であることを示す情報として「*」が格納される。
図7の例は、売上伝票情報を拠点コードおよび部門の項目を集計キーとして、売上年月毎の売上金額を集計した結果を示している。図7の例では、拠点コード「01」の部門「A」は、2012年4月に「3,000」円の売上があったことを示す。また、拠点コード「01」の部門「B」は、2012年8月に「3,000」円の売上があったことを示す。ここで、図6に示す集計対象格納テーブル33に格納された売上伝票情報を拠点コードおよび部門の項目を集計キーとして集計した場合、統一コードの項目は、サマライズされている項目であるため、統一コードが何れであるか特定できない。そこで、図7の例では、統一コードの項目に、サマライズされている項目であることを示す「*」が格納されている。
図8は、実施例1に係るサマライズデータの他の構成例を示す図である。図8の例は、売上伝票情報を拠点コード、部門および統一コードの項目を集計キーとして、売上年月毎の売上金額を集計した結果を示している。図8の例では、拠点コード「01」の部門「A」の統一コード「S001」の商品は、2012年4月に「1,000」円の売上があったことを示す。また、拠点コード「01」の部門「A」の統一コード「S002」の商品は、2012年4月に「2,000」円の売上があったことを示す。また、拠点コード「01」の部門「B」の統一コード「S003」の商品は、2012年8月に「3,000」円の売上があったことを示す。ここで、図6に示す集計対象格納テーブル33に格納された売上伝票情報を拠点コード、部門および統一コードの項目を集計キーとして集計した場合、拠点コード、部門および統一コードの項目は、特定できる。このため、図8の例では、何れの項目にも「*」が格納されていない。
図2に戻り、制御部22は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部22は、図2に示すように、受信制御部40と、特定部41と、生成部42と、格納部43と、集計部44と、マスタ管理部45と、送信制御部46とを有する。
このうち、受信制御部40は、各業務システム11から送信された業務データを記憶部21へ格納する処理部である。一態様としては、受信制御部40は、各業務システム11から業務データを受信した場合に、当該業務データを記憶部21へ格納する。
特定部41は、統一コードテーブル32aに基づき、記憶部21に記憶された業務データ30のコードの統一コードを特定する処理部である。一態様としては、特定部41は、業務データ30が記憶部21へ格納された場合、格納された業務データ30の各レコードを順次読み出す。特定部41は、格納された業務データ30に統一コードテーブル32aに登録されているコードを変換すべき項目がある場合、読み出したレコードのコードを変換すべき項目に設定されたコードに対応する統一コードを統一コードテーブル32aから特定する。例えば、特定部41は、業務データ30に拠点品番が含まれる場合、拠点コード、拠点品番に設定されたコードに対応する統一コードを統一コードテーブル32aから特定する。
生成部42は、記憶部21に格納された業務データ30に、以前に受信した伝票の修正伝票が含まれる場合、以前に受信した伝票を取り消す赤伝票のデータを作成する処理部である。一態様としては、生成部42は、特定部41により読み出された業務データ30のレコードと識別情報が同じレコードが受信データ記憶テーブル31に記憶されているか否か判定する。生成部42は、識別情報が同じレコードが受信データ記憶テーブル31に記憶されている場合、受信データ記憶テーブル31に記憶されたレコードの集計の対象とされた項目の数値の正負を反転させたレコードを赤伝票として生成する。例えば、業務データ30が図3に示す売上伝票情報の場合、生成部42は、業務データ30のレコードと拠点コードおよび伝票番号が同じレコードが受信データ記憶テーブル31に記憶されているか否か判定する。生成部42は、拠点コードおよび伝票番号が同じレコードが受信データ記憶テーブル31に記憶されている場合、受信データ記憶テーブル31に記憶されたレコードの売上金額の項目の数値の正負を反転させ、他の項目を同じ情報としたレコードを生成する。
格納部43は、受信データ記憶テーブル31および集計対象格納テーブル33に対して、データの格納を行う処理部である。一態様としては、格納部43は、業務データ30にコードを変換すべき項目がない場合、特定部41により読み出された業務データ30のレコードを集計対象格納テーブル33に格納する。また、格納部43は、業務データ30にコードを変換すべき項目がある場合、特定部41により特定された統一コードを加えて、特定部41により読み出された業務データ30のレコードを集計対象格納テーブル33に格納する。例えば、業務データ30が図3に示す売上伝票情報の場合、格納部43は、次のようなデータをセットしたレコードを集計対象格納テーブル33に格納する。すなわち、格納部43は、集計対象格納テーブル33の各項目に業務データ30のレコードの対応する項目のデータをセットし、統一コードの項目に特定部41で特定した統一コードをセットし、区分の項目に黒伝票を示す「02」をセットしたレコードを格納する。
また、格納部43は、生成部42により赤伝票のレコードが生成された場合、生成された赤伝票のレコードを集計対象格納テーブル33に格納する。例えば、業務データ30が図3に示す売上伝票情報の場合、次のようなデータをセットしたレコードを集計対象格納テーブル33に格納する。すなわち、格納部43は、集計対象格納テーブル33の各項目に赤伝票のレコードの対応する項目のデータをセットし、区分の項目に赤伝票を示す「01」をセットしたレコードを格納する。
また、格納部43は、特定部41により読み出された業務データ30のレコードを受信データ記憶テーブル31に格納する。一態様としては、格納部43は、特定部41により読み出された業務データ30のレコードと識別情報が同じレコードが受信データ記憶テーブル31に記憶されているか否か判定する。生成部42は、識別情報が同じレコードが受信データ記憶テーブル31に記憶されている場合、受信データ記憶テーブル31に記憶されたレコードを、読み出したレコードの情報に更新する。一方、格納部43は、識別情報が同じレコードが受信データ記憶テーブル31に記憶されていない場合、受信データ記憶テーブル31に読み出したレコードの情報を格納する。例えば、業務データ30が図3に示す売上伝票情報の場合、格納部43は、業務データ30のレコードと拠点コードおよび伝票番号が同じレコードが受信データ記憶テーブル31に記憶されているか否か判定する。格納部43は、拠点コードおよび伝票番号が同じレコードが受信データ記憶テーブル31に記憶されている場合、拠点コードおよび伝票番号以外の項目のデータを、読み出したレコードの情報に更新する。なお、本実施例では、拠点コードおよび伝票番号以外の項目を更新するものとしたが、集計の対象とされた項目のデータのみを、読み出したレコードの情報に更新してもよい。例えば、業務データ30が図3に示す売上伝票情報の場合、格納部43は、売上金額の項目の数値のみを、読み出したレコードの売上金額の項目の数値に更新してもよい。一方、格納部43は、拠点コードおよび伝票番号が同じレコードが受信データ記憶テーブル31に記憶されていない場合、次のようなデータをセットしたレコードを受信データ記憶テーブル31に格納する。すなわち、格納部43は、受信データ記憶テーブル31の各項目に業務データ30のレコードの対応する項目のデータをセットし、統一コードの項目に特定部41で特定した統一コードをセットしたレコードを格納する。これにより、受信データ記憶テーブル31には、識別情報毎に直近に受信した伝票情報が記憶される。
格納部43は、受信データ記憶テーブル31および集計対象格納テーブル33に対して、業務データ30の全てのレコードのデータの格納が完了すると、業務データ30を記憶部21から削除する。なお、格納部43は、業務データ30を、受信データ記憶テーブル31および集計対象格納テーブル33に格納が完了したレコードから順次削除してもよい。これにより、集計対象格納テーブル33に対して、同一の業務データ30が複数回格納されることを防止できる。
集計部44は、集計キー情報32bに基づき、集計対象格納テーブル33に格納されたデータを集計してサマライズデータ34を生成する処理部である。集計キー情報32bには、伝票の種類毎など業務データ30の種類毎に、どの項目の単位で業務データ30を集計するかの集計キーを示すデータが含まれている。例えば、集計キー情報32bは、売上取引の伝票情報を集計する集計キーとして拠点コードおよび部門を指定する。集計部44は、拠点コードおよび部門毎に集計対象格納テーブル33の各レコードをグループ化し、グループ毎にレコードの集計項目の数値を集計し、集計結果を示すサマライズデータ34を生成する。また、集計部44は、サマライズされている項目に、サマライズされている項目であることを示す情報として「*」が格納される。例えば、集計部44は、集計対象格納テーブル33に格納された売上取引の伝票情報を、拠点コードおよび部門毎に集計して、図7に示すようなサマライズデータ34を生成する。
ここで、業務データ30のレコードと拠点コードおよび伝票番号が同じレコードが受信データ記憶テーブル31に記憶されている場合、集計対象格納テーブル33には、赤伝票のレコードと黒伝票のレコードが格納される。この赤伝票のレコードは、受信データ記憶テーブル31に記憶された修正前の伝票の集計項目の数値の正負を反転させたレコードである。よって、集計部44は、この赤伝票のレコードと黒伝票のレコードを集計することにより、受信データ記憶テーブル31に記憶された修正前の伝票に含まれる集計項目の数値に対する受信した修正伝票に含まれる集計項目の数値の差を集計することになる。また、業務データ30のレコードと拠点コードおよび伝票番号が同じレコードが受信データ記憶テーブル31に記憶されていない場合、集計対象格納テーブル33には、黒伝票のレコードのみが格納される。集計部44は、この黒伝票のレコードを集計することにより、受信した修正伝票に含まれる集計項目の数値を集計することになる。
集計部44は、集計対象格納テーブル33に格納された全てのレコードの集計が完了すると、集計対象格納テーブル33に格納された全てのレコードを削除する。これにより、同一のレコードが複数回集計されることを防止できる。
マスタ管理部45は、マスタデータ32の登録、修正および削除を行う処理部である。一態様としては、マスタ管理部45は、図示しない端末装置に、マスタデータ32の登録、修正および削除を行うための各種の画面を表示させ、当該画面からマスタデータ32の登録、修正および削除を受け付ける。例えば、マスタ管理部45は、統一コードテーブル32aや集計キー情報32bを登録する登録画面を表示させ、当該登録画面から新たな情報の登録を受け付ける。
送信制御部46は、各種のデータをモニタリングサーバ13へ送信する処理部である。一態様としては、送信制御部46は、集計部44により集計されたサマライズデータ34を分析対象データとしてモニタリングサーバ13へ送信する。なお、送信制御部46は、サマライズデータ34をモニタリングサーバ13へ日毎など一定期間毎にバッチ処理でまとめて送信してもよく、ユーザから送信を指示する操作が行われたタイミングで送信してもよい。
送信制御部46は、モニタリングサーバ13へのサマライズデータ34の送信が完了すると、サマライズデータ34を記憶部21から削除する。これにより、同一のサマライズデータ34がモニタリングサーバ13へ複数回送信されることを防止できる。
[モニタリングサーバ13の構成]
続いて、本実施例に係るシステムに含まれるモニタリングサーバ13の機能的構成について説明する。図9は、実施例1に係るモニタリングサーバの機能的構成を示すブロック図である。図9に示すように、モニタリングサーバ13は、通信I/F部50と、記憶部51と、制御部52とを有する。
通信I/F部50は、他の装置、例えばマスタサーバ12との間で通信制御を行うインタフェースである。例えば、通信I/F部50は、マスタサーバ12から分析対象データとしてサマライズデータ34を受信する。かかる通信I/F部50の一態様としては、LANカードなどのネットワークインタフェースカードを採用できる。
記憶部51は、フラッシュメモリなどの半導体メモリ素子、ハードディスク、光ディスクなどの記憶装置である。なお、記憶部51は、上記の種類の記憶装置に限定されるものではなく、RAM、ROMであってもよい。
記憶部51は、制御部52で実行されるOSや後述する属性情報を付加するプログラムなど各種プログラムを記憶する。さらに、記憶部51は、制御部52で実行されるプログラムの実行に必要な各種データを記憶する。かかるデータの一例として、記憶部51は、蓄積データ61を記憶する。
蓄積データ61は、各種の分析に用いる各種情報を蓄積したデータである。一例として、蓄積データ61は、後述の格納部70によって格納される。他の一例として、蓄積データ61は、各種の分析結果を出力するため、後述の分析制御部71によって参照される。
図10は、実施例1に係る蓄積データの構成例を示す図である。なお、図10は、売上伝票情報のサマライズデータ34を蓄積した蓄積データ61の構成例を示す図である。図10に示すように、蓄積データ61は、図7に示したサマライズデータ34と同様に、「拠点コード」、「部門」、「統一コード」、「売上年月」、「売上金額」の各項目を有し、「拠点コード」、「部門」、「統一コード」の項目がキーの項目とされている。
図10の例では、拠点コード「01」の部門「A」は、2012年4月に「3,000」円の売上があったことを示す。また、拠点コード「01」の部門「B」は、2012年8月に「3,000」円の売上があったことを示す。なお、図10は、マスタサーバ12が売上伝票情報を拠点コードおよび部門を集計キーとして集計したサマライズデータ34を蓄積した場合を例としているため、「部門コード」の項目に、サマライズされている項目であることを示す「*」が格納されている。
図9に戻り、制御部52は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部52は、図9に示すように、格納部70と、分析制御部71とを有する。
格納部70は、サマライズデータ34を蓄積データ61に格納する処理部である。一態様としては、格納部70は、サマライズデータ34の種類毎にサマライズデータ34を蓄積データ61として格納する。なお、格納部70は、格納するサマライズデータ34とキーの項目の情報が同じレコードが既に蓄積データ61に格納されている場合、既に格納されているレコードの集計項目の値に、サマライズデータ34の対応する集計項目の値を合計する。一方、格納部70は、格納するサマライズデータ34とキーの項目の情報が同じレコードが蓄積データ61に無い場合、サマライズデータ34を蓄積データ61に格納する。
分析制御部71は、蓄積データ61に基づき、各種情報を提供する処理部である。一態様としては、分析制御部71は、各種の分析を行う端末装置からの分析対象データに対する分析の要求に応じて、蓄積データ61に蓄積された分析対象データを端末装置へ送信する。この際、分析制御部71は、分析対象データを何れの項目でも集計せずに、そのまま送信してもよい。これにより、端末装置は、分析対象データをそのまま表示したり、いずれかの項目で集計するなど様々な分析を行うことができる。また、分析制御部71は、分析対象データを属性情報を含む何れかの項目で集計して送信してもよい。これにより、端末装置は、分析対象データに対して集計を行うことなく分析を行うことができる。他の一態様としては、分析制御部71は、蓄積データ61に基づいて、端末装置に各拠点の各種の状況の分析に用いる分析画面を表示させる。分析制御部71は、分析対象データが販売実績などの実績のデータや、販売計画などの予定のデータである場合、予定や実績をそれぞれ個別に表示してもよい。また、分析制御部71は、予定と実績を比較できるように並べて表示したり、予定に対する実績の割合から達成率を表示してもよい。
図11は、実施例1に係る分析画面の一例を示す図である。なお、図11は、図10に示した蓄積データ61に基づいて月別の売上の分析を行う分析画面の一例を示す図である。図11に示すように、分析画面150には、月別の売上を表示する表示領域151が設けられている。
[具体的な処理の流れ]
次に、実施例1に係る分析システム10の具体的な処理の流れの一例を説明する。業務システム11は、各種の伝票など各種業務に関する情報が入力される。業務システム11は、入力された伝票情報などの各種業務に関する情報を業務データとしてマスタサーバ12へ送信する。例えば、業務システム11は、図3に示すような売上伝票情報を業務データとしてマスタサーバ12へ送信する。
マスタサーバ12では、各業務システム11から送信された業務データを受信した場合、受信制御部40が、受信された業務データを記憶部21へ格納する。特定部41は、格納された業務データ30の各レコードを順次読み出し、コードを変換すべき項目がある場合、コードを変換すべき項目に設定されたコードに対応する統一コードを統一コードテーブル32aから特定する。例えば、業務データ30として図3に示すような売上伝票情報が格納され、統一コードテーブル32aが図5に示すような場合、特定部41は、拠点コード「01」の拠点品番「L001」の統一コードを「S001」と特定する。また、特定部41は、拠点コード「01」の拠点品番「L002」の統一コードを「S002」と特定する。また、特定部41は、拠点コード「01」の拠点品番「L003」の統一コードを「S003」と特定する。
生成部42は、読み出されたレコードと識別情報が同じレコードが受信データ記憶テーブル31に記憶されているか否か判定する。そして、生成部42は、識別情報が同じレコードが記憶されている場合、記憶されたレコードの集計の対象とされた項目の数値の正負を反転させたレコードを赤伝票として生成する。例えば、業務データ30として図3に示すような売上伝票情報の何れのレコードもマスタサーバ12に初めて送信された場合、識別情報が同じレコードが受信データ記憶テーブル31に記憶されていないため、生成部42は、赤伝票の生成を行わない。格納部43は、読み出された業務データ30のレコードを受信データ記憶テーブル31および集計対象格納テーブル33に格納する。これにより、業務データ30が図3に示すような売上伝票情報である場合、受信データ記憶テーブル31には、図4に示すような情報が格納される。また、集計対象格納テーブル33には、図6に示すような情報が格納される。
集計部44は、集計キー情報32bに基づき、集計対象格納テーブル33に格納されたデータを集計してサマライズデータ34を生成する。例えば、集計部44は、図6に示した集計対象格納テーブル33の各レコードを拠点コードおよび部門毎に集計して、図7に示すようなサマライズデータ34を生成する。また、集計部44は、集計が完了すると、集計対象格納テーブル33に格納された全てのレコードを削除する。
送信制御部46は、集計部44により集計されたサマライズデータ34を分析対象データとしてモニタリングサーバ13へ送信する。また、送信制御部46は、サマライズデータ34の送信が完了すると、サマライズデータ34を記憶部21から削除する。
モニタリングサーバ13では、マスタサーバ12から送信されたサマライズデータ34を受信した場合、格納部70が、サマライズデータ34を蓄積データ61に格納する。例えば、図7に示すようなサマライズデータ34が受信された場合、蓄積データ61には、図10に示すような情報が格納される。
ところで、各拠点では、マスタサーバ12へ伝票情報を送信した後、送信した伝票情報の伝票の数量や金額などの数値を修正する場合がある。業務システム11は、送信した伝票情報の伝票の数量や金額などの数値が修正された場合、修正前と同じ識別情報で数値を修正した修正伝票の伝票情報を業務データとしてマスタサーバ12へ送信する。例えば、業務システム11では、図3に示すような売上伝票情報の売上金額を修正された場合、売上金額を修正した修正伝票の伝票情報を業務データとしてマスタサーバ12へ送信する。図12は、売上金額が修正された修正伝票の構成例を示す図である。図12の例では、拠点コード「01」の伝票番号「D001」は、図3に示す売上伝票情報から売上金額が「2,000」円に修正されている。また、拠点コード「01」の伝票番号「D002」は、図3に示す売上伝票情報から売上金額が「3,000」円に修正されている。また、拠点コード「01」の伝票番号「D003」は、図3に示す売上伝票情報から売上金額が「1,000」円に修正されている。
マスタサーバ12では、修正伝票の業務データを受信した場合、受信制御部40が、受信された業務データを記憶部21へ格納する。特定部41は、格納された業務データ30の各レコードを順次読み出し、コードを変換すべき項目に設定されたコードに対応する統一コードを統一コードテーブル32aから特定する。
生成部42は、読み出されたレコードと識別情報が同じレコードが受信データ記憶テーブル31に記憶されているか否か判定する。そして、生成部42は、識別情報が同じレコードが記憶されている場合、記憶されたレコードの集計の対象とされた項目の数値の正負を反転させたレコードを赤伝票として生成する。例えば、業務データ30が図12に示す売上伝票情報であり、受信データ記憶テーブル31に図4に示す情報が格納されている場合、生成部42は、図4に示す各レコードの売上金額の項目の数値の正負を反転させたレコードを赤伝票として生成する。
格納部43は、読み出された業務データ30のレコードを受信データ記憶テーブル31および集計対象格納テーブル33に格納する。また、格納部43は、生成部42により赤伝票のレコードが生成された場合、生成された赤伝票のレコードを集計対象格納テーブル33に格納する。図13は、赤伝票および黒伝票を格納した集計対象格納テーブルの構成例を示す図である。集計対象格納テーブル33には、区分が「01」として赤伝票のレコードが格納され、区分が「02」として、図12に示す修正伝票の情報が黒伝票のレコードが格納される。
集計部44は、集計キー情報32bに基づき、集計対象格納テーブル33に格納されたデータを集計してサマライズデータ34を生成する。例えば、集計部44は、図13に示した集計対象格納テーブル33の各レコードを拠点コードおよび部門毎に集計して、図14に示すサマライズデータ34を生成する。また、集計部44は、集計が完了すると、集計対象格納テーブル33に格納された全てのレコードを削除する。
図14は、図13に示す集計対象格納テーブルの各レコードを集計したサマライズデータの構成例を示す図である。図14の例では、拠点コード「01」の部門「A」は、2012年4月の売上金額の集計結果が「2,000」であることを示す。また、拠点コード「01」の部門「B」は、2012年8月の売上金額の集計結果が「−2,000」円であることを示す。
送信制御部46は、集計部44により集計されたサマライズデータ34を分析対象データとしてモニタリングサーバ13へ送信する。また、送信制御部46は、サマライズデータ34の送信が完了すると、サマライズデータ34を記憶部21から削除する。
モニタリングサーバ13では、マスタサーバ12から送信されたサマライズデータ34を受信した場合、格納部70が、サマライズデータ34を蓄積データ61に格納する。格納部70は、格納するサマライズデータ34とキーの項目の情報が同じレコードが既に蓄積データ61に格納されている場合、既に格納されているレコードの集計項目の値に、サマライズデータ34の対応する集計項目の値を合計する。一方、格納部70は、格納するサマライズデータ34とキーの項目の情報が同じレコードが蓄積データ61に無い場合、サマライズデータ34を蓄積データ61に格納する。これにより、例えば、蓄積データ61に図10に示す情報が格納され、図14に示すようなサマライズデータ34が受信された場合、蓄積データ61は、図15に示すように更新される。図15は、修正伝票のサマライズデータを蓄積した蓄積データの構成例を示す図である。図15の例では、拠点コード「01」の部門「A」は、2012年4月に「5,000」円の売上があったことを示す。また、拠点コード「01」の部門「B」は、2012年8月に「1,000」円の売上があったことを示す。この図15に示す集計結果は、図12に示す修正伝票を拠点コードおよび部門毎に売上年月の売上金額を集計した結果と合致する。このように、本実施例に係るマスタサーバ12によれば、伝票が修正された場合でも数値の整合性が取れなくなることを抑制できる。
[処理の流れ]
次に、本実施例に係るマスタサーバ12の処理の流れについて説明する。図16は、実施例1に係る格納処理の手順を示すフローチャートである。この格納処理は、業務システム11から送信された業務データを記憶部21へ格納した場合に実行される。例えば、格納処理は、業務システム11から受信した業務データが受信制御部40により記憶部21へ格納された場合に実行される。なお、格納処理は、日毎など一定期間毎に実行されてるものとしてもよい。
図16に示すように、格納部43は、記憶部21に記憶された業務データ30の全てのレコードに対する処理が完了したか否か判定する(ステップS10)。全てのレコードに対する処理が完了した場合(ステップS10肯定)、格納部43は、記憶部21に記憶された業務データ30を削除し(ステップS11)、処理を終了する。
一方、全てのレコードに対する処理が完了していない場合(ステップS10否定)、特定部41は、業務データ30から1レコードを順次読み出す(ステップS12)。特定部41は、読み出したレコードにコードを変換すべき項目がある場合、変換すべき項目に設定されたコードに対応する統一コードを統一コードテーブル32aから特定する(ステップS13)。
生成部42は、読み出したレコードと識別情報が同じレコードが受信データ記憶テーブル31に記憶されているか否か判定する(ステップS14)。識別情報が同じレコードが記憶されている場合(ステップS14肯定)、生成部42は、受信データ記憶テーブル31に記憶された識別情報が同じレコードの集計の対象とされた項目の数値の正負を反転させたレコードを赤伝票として生成する(ステップS15)。格納部43は、読み出したレコードにコードを変換すべき項目がある場合、特定部41により特定された統一コードを加えて、当該レコードの情報を集計対象格納テーブル33に格納する(ステップS16)。また、格納部43は、生成された赤伝票のレコードの情報を集計対象格納テーブル33に格納する(ステップS17)。その後、格納部43は、読み出したレコードと識別情報が同じ受信データ記憶テーブル31のレコードを読み出したレコードの情報に更新し(ステップS18)、ステップS10へ移行する。
一方、識別情報が同じレコードが記憶されていない場合(ステップS14否定)、格納部43は、読み出したレコードにコードを変換すべき項目がある場合、統一コードを加えて、当該レコードの情報を集計対象格納テーブル33に格納する(ステップS19)。その後、格納部43は、読み出したレコードの情報を受信データ記憶テーブル31に格納し(ステップS20)、ステップS10へ移行する。
次に、本実施例に係るマスタサーバ12によりサマライズデータを生成する集計処理の流れについて説明する。図17は、実施例1に係る集計処理の手順を示すフローチャートである。この集計処理は、日毎など一定期間毎に実行される。
図17に示すように、集計部44は、集計キー情報32bから集計キーを特定する(ステップS30)。集計部44は、特定した集計キーで集計対象格納テーブル33に格納されたデータを集計する(ステップS31)。集計部44は、集計対象格納テーブル33に格納されたデータを集計した集計結果を示すサマライズデータ34を生成し(ステップS32)、処理を終了する。
[実施例1の効果]
本実施例に係るマスタサーバ12は、それぞれの伝票を識別する識別情報および所定の集計項目の数値を含んだ伝票情報を記憶する。本実施例に係るマスタサーバ12は、各業務システム11から受信伝票情報を業務データとして受信する。本実施例に係るマスタサーバ12は、受信された伝票情報に含まれる識別情報と同じ識別情報を含んだ伝票情報が記憶されている場合、記憶された伝票情報に含まれる集計項目の数値に対する受信した伝票情報に含まれる集計項目の数値の差を集計する。また、本実施例に係るマスタサーバ12は、受信された伝票情報に含まれる識別情報と同じ識別情報を含んだ伝票情報が記憶されていない場合、受信した伝票情報に含まれる集計項目の数値を集計する。これにより、本実施例に係るマスタサーバ12によれば、伝票が修正された場合でも数値の整合性が取れなくなることを抑制できる。
また、本実施例に係るマスタサーバ12は、受信された伝票情報に含まれる識別情報と同じ識別情報を含んだ伝票情報が記憶されている場合、記憶された伝票情報の集計項目の数値の正負を反転させた伝票情報を生成する。そして、本実施例に係るマスタサーバ12は、受信した伝票情報に含まれる前記集計項目の数値および生成された伝票情報に含まれる集計項目の数値を集計する。このように、本実施例に係るマスタサーバ12によれば、集計項目の数値の正負を反転させた赤伝票の伝票情報を生成することにより、データ上で修正された伝票情報が判別しやすくなる。また、本実施例に係るマスタサーバ12によれば、修正された伝票情報について、赤伝票の伝票情報を生成することにより、修正前の伝票情報の内容を容易に把握できる。
また、本実施例に係るマスタサーバ12は、受信された伝票情報に含まれる識別情報と同じ識別情報を含んだ伝票情報が記憶されている場合、記憶された伝票情報を受信された伝票情報に更新する。また、本実施例に係るマスタサーバ12は、受信された伝票情報に含まれる識別情報と同じ識別情報を含んだ伝票情報が記憶されていない場合、受信された伝票情報を格納する。これにより、本実施例に係るマスタサーバ12によれば、識別情報毎に直近に受信した伝票情報のみを記憶することができる。このように、直近に受信した伝票情報のみを記憶することにより、伝票情報を記憶する記憶領域の容量を少なく抑えることができる。