売上データ処理装置及びプログラム
【課題】ドロアから不正に現金が引き出された疑いのある操作を、異常なドロア操作として検出すること。
【解決手段】履歴情報取得部121は、オペレータによる操作(各ファンクション)の履歴を取得する。基準情報取得部122は、ドロアを開放させる操作毎(ファンクション毎)に予め設定された標準操作の基準(ドロアオープン許可時間及びドロアオープン許可回数)のうち、履歴から特定される操作についての標準操作の基準を取得する。異常検出部123は、履歴から特定される操作毎に、基準情報取得部122により取得された標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する。
【解決手段】履歴情報取得部121は、オペレータによる操作(各ファンクション)の履歴を取得する。基準情報取得部122は、ドロアを開放させる操作毎(ファンクション毎)に予め設定された標準操作の基準(ドロアオープン許可時間及びドロアオープン許可回数)のうち、履歴から特定される操作についての標準操作の基準を取得する。異常検出部123は、履歴から特定される操作毎に、基準情報取得部122により取得された標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、売上データ処理装置及びプログラムに関する。
【背景技術】
【0002】
従来より、デパートやスーパー等の小売店では、販売員は、顧客と対面しながら、商品の代金を計算して、計算結果を店の売上として記録する、といった一連の作業をしている。このような作業を電子化すべく、近年、ECR(Electronic Cash Resister)、POS(Point of Sales)端末等の売上データ処理装置が普及している。即ち、販売員は、オペレータとして、売上データ処理装置を操作しながら、接客する。
【0003】
売上データ処理装置には、売上金を保管するためのドロアと呼ばれる引き出しが設けられている。ドロアは、通常閉じられており、オペレータによる所定の操作がなされたときのみ、売上データ処理装置の制御により開けられる。なお、一度開けられたドロアは、オペレータの手動操作により閉じられる。
【0004】
ドロアは、一般的には、オペレータによる所定の作業に伴い開閉される。具体的には、顧客から受け取った代金をドロアに収納する作業や、顧客に渡す釣銭をドロアから引き出す作業に伴い、ドロアは開閉される。従って、このような所定の作業に伴うドロアの開閉は短時間であることから、長時間ドロアが開放されていた場合には、ドロアから不正に現金が引き出された疑いがある。
そこで、ドロアの開放時間が基準値を超えると警告を発する技術が、特許文献1や特許文献2に開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平02−54397号公報
【特許文献2】特開平06−4768号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1や特許文献2の技術のように単にドロアの開放時間だけに着目しても、ドロアから不正に現金が引き出された疑いがある売上データ処理装置の各種操作を、異常なドロア操作として適切に検出することは困難である。
【0007】
本発明の課題は、ドロアから不正に現金が引き出された疑いのある操作を、異常なドロア操作として検出することである。
【課題を解決するための手段】
【0008】
本発明の売上データ処理装置は、
オペレータによる操作を受けてドロアを開放させる売上データ処理装置であって、
オペレータによる操作の履歴を取得する履歴取得手段と、
前記ドロアを開放させる操作毎に予め設定された標準操作の基準のうち、前記履歴から特定される操作についての前記標準操作の基準を取得する基準情報取得手段と、
前記履歴から特定される前記操作毎に、前記基準情報取得手段により取得された前記標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する異常検出手段と、
を備える。
【発明の効果】
【0009】
本発明によれば、ドロアから不正に現金が引き出された疑いのある操作を、異常なドロア操作として適切に検出することができる。
【図面の簡単な説明】
【0010】
【図1】本発明の一実施形態に係る売上データ処理装置の外観構成を示す斜視図である。
【図2】ファンクションの一例を表形式で示す図である。
【図3】図1の売上データ処理装置のハードウェア構成を示すブロック図である。
【図4】図3の売上データ処理装置の機能的構成のうち、履歴生成処理及びドロア異常検出処理を実行するための機能的構成を示す機能ブロック図である。
【図5】操作履歴ファイルの構造例を示す図である。
【図6】ドロア開閉履歴ファイルの構造例を示す図である。
【図7】操作履歴ファイルの構造例を示す図である。
【図8】ドロア開閉管理テーブルの構造例を示す図である。
【図9】オペレータマスターファイルの構造例を示す図である。
【図10】ファンクションマスターファイルの構造例を示す図である。
【図11】ドロアオープン異常レポートの一例を示す図である。
【図12】図3及び図4の売上データ処理装置が実行する履歴生成処理のうち、操作履歴ファイルを生成する処理の流れの一例を説明するフローチャートである。
【図13】ドロア異常検出処理の流れの一例を説明するフローチャートである。
【図14】図13のドロア異常検出処理のうちステップS22の中間マージファイル作成処理の詳細な流れの一例を説明するフローチャートである。
【図15】図13のドロア異常検出処理のうちステップS23のドロアオープン異常時間検出処理の詳細な流れの一例を説明するフローチャートである。
【図16】図13のドロア異常検出処理のうちステップS23のドロアオープン異常時間検出処理の詳細な流れの一例を説明するフローチャートである。
【図17】図16のステップS65の許可時間探索処理の詳細な流れを説明するフローチャートである。
【図18】図13のドロア異常検出処理のうちステップS24のドロアオープン異常回数検出処理の詳細な流れの一例を説明するフローチャートである。
【図19】図18のステップS128の許可回数探索処理の詳細な流れを説明するフローチャートである。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について、図面を用いて説明する。
【0012】
図1は、本発明の一実施形態に係る売上データ処理装置の外観構成を示す斜視図である。
【0013】
図1に示すように、売上データ処理装置10は、数字キー21と、ファンクションキー22と、表示部23と、印刷部24と、ドロア25と、を備えている。
【0014】
数字キー21は、図示はしないが各種数字がそれぞれ印字された複数のキーから構成されている。これらの複数のキーの各々には、印字された数字を売上データ処理装置10の本体に入力する機能が割り当てられている。即ち、オペレータは、数字キー21のうち、所望の数字が印字されたキーを押下操作することで、当該所望の数字を売上データ処理装置10に対して入力することができる。
【0015】
ファンクションキー22は、図示はしないが各種ファンクション名称がそれぞれ印字された複数のキーから構成されている。これらの複数のキーの各々には、印字された名称のファンクションを売上データ処理装置10の本体に対して通知する機能が割り当てられている。
ここで、ファンクションとは、オペレータが売上データ処理装置10を操作して行う作業を意味している。実行可能なファンクションはオペレータ毎に決定されており、オペレータは、ファンクションキー22のうち、現在行う又は直近で行ったファンクション名称が印字されたキーを押下操作する。売上データ処理装置10は、押下操作された当該キーに印字されたファンクションを、オペレータが現在行う又は直近で行ったファンクションとして認識する。
なお、ファンクションの詳細については、図2を参照して後述する。
【0016】
表示部23は、液晶ディスプレイ等で構成され、オペレータの作業にとって必要な各種情報を画像として表示する。
印刷部24は、オペレータの作業にとって必要な各種情報や、客に手渡すレシート等を紙媒体に印字して出力する。
ドロア25は、売上金を保管するための引き出しであり、通常閉じられているが、オペレータによる所定の操作がなされると、売上データ処理装置10の制御により開けられる。なお、一度開けられたドロア25は、オペレータの手動操作により閉じられる。
【0017】
ここで、オペレータによる売上データ処理装置10の操作(以下、適宜「売上データ処理用操作」と呼ぶ)の概略について説明する。
【0018】
オペレータは、先ず、売上データ処理用操作を開始するために、数字キー21等を押下操作して、オペレータ番号を入力することで、ログイン操作をする。
売上データ処理装置10は、入力されたオペレータ番号が登録されているか否かを確認し、登録されている場合にはログイン処理を実行し、登録されていない場合にはログイン処理を禁止する。売上データ処理装置10は、ログイン中のオペレータ番号を内部のメモリ(後述する図3の記憶部40等)に記憶する。
【0019】
ログイン処理が実行されると、オペレータは、予め設定されている1以上のファンクションを使用できるようになる。即ち、オペレータは、これらのファンクションに伴い、売上データ処理装置10に対する各種キー操作を実行できるようになる。
【0020】
図2は、ファンクションの一例を表形式で示す図である。
図2の表においては、所定の行は、所定の1のファンクションに対応している。即ち、所定の行において、第1列の項目には、当該行に対応付けられたファンクションを一意に示すコード(以下、「ファンクションコード」と呼ぶ)が記載されている。当該行の第2列の項目には、当該行に対応付けられたファンクションの名称(以下、「ファンクション名称」と呼ぶ)が記載されている。当該行の第3列の項目には、当該行に対応付けられたファンクションの具体的な内容(以下、「ファンクション内容」と呼ぶ)が記載されている。
例えば、1行目のファンクションは、「0001」のファンクションコードを有し、「釣銭準備」というファンクション名称を有していることがわかる。また、当該「釣銭準備」についてのファンクション内容は、「開店前に売上データ処理装置10に釣銭を入れるときに使用する。用意した釣銭の合計金額を数字キー21で入力してファンクションキー22の釣銭準備キーを押すと、ドロア25が自動で開くので、釣銭をドロア25に入れてからドロア25を手で閉める。」であることがわかる。
なお、釣銭準備キーとは、ファンクションキー22のうち、「釣銭準備」というファンクション名称が印字されたキーをいう。以下、ファンクションキー22の他のキーについても、印字されたファンクション名称を頭に冠して表現することにする。
【0021】
ここで、ファンクションを伴う各種キー操作の具体例として、代金が500円の第1商品と、代金が250円の第2商品とを客が購入する場合に、客の支払額が店舗の売上額として登録されるまでに行われる一連のキー操作について説明する。
【0022】
この場合、オペレータは、数字キー21等を押下操作して、第1商品の代金として500の数字を入力する。同様に、オペレータは、数字キー21等を押下操作して、第2商品の代金として250の数字を入力する。すると、売上データ処理装置10は、第1商品の代金500円と第2商品の代金250円とを内部のメモリに記憶する。
【0023】
なお、図示はしないが、売上データ処理装置10は、各キーに各商品をそれぞれ割り当てて、各商品の代金を内部又は外部から取得する構成を取ることもできる。このような構成を取る売上データ処理装置10に対して、オペレータは、数字キー21の代わりに、第1商品が割り当てられたキーを押下操作する。同様に、オペレータは、第2商品が割り当てられたキーを押下操作する。すると、売上データ処理装置10は、第1商品の代金500円と第2商品の代金250円とを取得して内部のメモリに記憶する。
【0024】
この段階で、オペレータが、第1商品と第2商品の各代金の合計額から、50円の値引をするものとする。この場合、図2の2行目のファンクション、即ち「値引」のファンクションがオペレータにより実行されることになる。
具体的には、2行目の「値引」についてのファンクション内容によれば、売上する商品の入力中(各商品の代金の入力中)に、オペレータは、数字キー21等を押下操作して、値引額として50の数字を入力する。すると、売上データ処理装置10は、商品の代金(本例では第1商品の代金500円と第2商品の代金250円)とともに、値引額(本例では−50円)を内部のメモリに記憶する。
そして、オペレータは、ファンクションキー22の値引キーを押下操作する。これにより、売上データ処理装置10は、「値引」のファンクションが実行されたと認識し、これまでに入力された合計額から値引額を減算し、減算結果を表示部23に表示させる。具体的には本例では、売上データ処理装置10は、500円(第1商品の代金)+250円(第2商品の代金)−50円(値引額)を演算し、その演算結果、即ち700円を示す画像(700の数値の画像)を表示部23に表示させる。
【0025】
第1商品と第2商品を購買しようとしている客は、売上データ処理装置10の表示部23の表示から、支払額を視認することができる。例えば、支払額として上述の700円が表示部23に表示されており、客が、現金で1000円をオペレータに受け渡したものとする。即ち、オペレータは、客からの預かり金として1000円を受け取ったものとする。
この場合、図2の3行目のファンクション、即ち「現金」のファンクションがオペレータにより実行されることになる。
具体的には、3行目の「現金」についてのファンクション内容によれば、オペレータは、数字キー21等を押下操作して、客からの預かり金額として1000の数字を入力し、ファンクションキー22の現金キーを押下操作する。
すると、売上データ処理装置10は、「現金」のファンクションが実行されたと認識し、預かり金額から支払額を減算し、減算結果を釣銭額として表示部23に表示させる。具体的には本例では、売上データ処理装置10は、1000円(預かり金額)から、700円(支払額=第1商品の代金+第2商品の代金−値引額)を演算し、その演算結果、即ち釣銭額が300円であることを示す画像(300の数値の画像)を表示部23に表示させる。
そして、売上データ処理装置10は、ドロア25を自動で開放させる。オペレータは、1000円の預かり金をドロア25に納め、300円の釣銭をドロア25から取り出して客に渡す。オペレータは、客に釣銭を渡したことをもって、「現金」のファンクションを完了させ、ドロア25を手で閉める。
【0026】
この間、売上データ処理装置10は、店舗の売上金として700円を内部のメモリに登録(記憶)する。また、売上データ処理装置10は、上述の売上データ処理用操作の履歴(以下、「操作履歴」と呼ぶ)を保存する。なお、操作履歴の保存場所は、特に限定されず、売上データ処理装置10の外部の装置(図示せぬサーバ等)でもよいが、本実施形態では内部のメモリ(後述する図3の記憶部40等)が採用されている。
【0027】
ここで、ファンクションは、上述した「値引」のようにドロア25の開放が伴わないファンクションと、上述した「現金」のようにドロア25の開放が伴うファンクションとに大別できる。そこで、本実施形態では、これらの2種類のファンクションを明確に区別すべく、ドロア25の開放が伴わないファンクションに対しては「0」が設定され、ドロア25の開放が伴うファンクションに対しては「1」が設定されるフラグが採用されている。このようなフラグを、以下、「ドロア自動オープンフラグ」と呼ぶ。
【0028】
ドロア自動オープンフラグが「1」であるファンクションは、オペレータにとって定型操作の組み合わせにより実行される。例えば、ドロア25の開閉に直目すれば、ドロア25を開放するためにファンクションキー22の押下という定型操作が行われ、その後、開放されたドロア25を手で締めるという定型操作が行われる。このような所定のファンクションにおける一の定型操作又は複数の定型操作の組み合わせは、当該所定のファンクションの標準的な操作であるといえる。そこで、以下、所定のファンクションにおける一の定型操作又は複数の定型操作の組み合わせを、「所定のファンクションの標準操作」と呼ぶ。
【0029】
所定のファンクションの標準操作が正常に行われる限り、当該所定のファンクションに伴うドロア25の開閉時間は、ある程度のオペレータの個人差が存在するにしても、一定時間よりも短くなるはずである。換言すると、所定のファンクションの標準操作であるにも関わらず、ドロア25の開閉時間が一定時間以上ならば、ドロア25から不正に現金が引き出された疑いがある操作、即ち異常なドロア操作が行われたことになる。
また、所定のファンクションの標準操作が正常に行われる限り、当該所定のファンクションに伴うドロア25の開閉回数は、ある程度のオペレータの個人差が存在するにしても、一定回数よりも少なくなるはずである。換言すると、所定のファンクションの標準操作であるにも関わらず、ドロア25の開閉回数が一定回数以上ならば、ドロア25から不正に現金が引き出された疑いがある操作、即ち異常なドロア操作が行われたことになる。
【0030】
このように、所定のファンクションの標準操作に対して、ドロア25の開閉時間についての一定時間や、ドロア25の開閉回数についての一定回数といった、異常なドロア操作が行われたか否かを判定するための基準を予め設定しておくことが可能である。
なお、所定のファンクションは、当該所定のファンクションキーが押下操作なされた場合に実行可能になる。従って、ドロア自動オープンフラグが「1」となる所定のファンクションキーの押下操作は、ドロア25を開放させる操作であると把握することができる。
このように把握した場合には、ドロア25を開放させる操作毎に、当該操作により実行される所定のファンクションの標準操作の基準を予め設定しておくことが可能である。
【0031】
この場合、売上データ処理装置10は、次のような一連の処理を実行することができる。
即ち、売上データ処理装置10は、オペレータによる各操作の履歴を取得する。
また、売上データ処理装置10は、ドロア25を開放させる操作毎に予め設定された標準操作の基準のうち、履歴から特定される操作についての標準操作の基準を取得する。
そして、売上データ処理装置10は、履歴から特定される操作毎に、取得された標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する。
なお、このような一連の処理を以下、「ドロア異常検出処理」と呼ぶ。
【0032】
ここで、複数のオペレータが売上データ処理装置10に対して操作をする可能性がある場合、全オペレータに対して一律に標準操作の基準が設定されるようにしてもよいが、オペレータの個人差に伴い、誤検出が発生したり、逆に精度よい検出が困難になったりする。
そこで、本実施形態では、オペレータ毎に標準操作の基準が個別にそれぞれ設定されている。これにより、誤検出を低減し、かつ精度よい検出が実現可能になる。
【0033】
図3は、ドロア異常検出処理を実行可能な売上データ処理装置10のハードウェア構成を示すブロック図である。
【0034】
売上データ処理装置10は、CPU(Central Processing Unit)31と、ROM(Read Only Memory)32と、RAM(Random Access Memory)33と、バス34と、入出力インターフェース35と、入力部36と、出力部37と、ドロア制御部38と、センサ部39と、記憶部40と、通信部41と、ドライブ42と、を備えている。
【0035】
CPU31は、ROM32に記録されているプログラム、又は、記憶部40からRAM33にロードされたプログラムに従って各種の処理を実行する。
RAM33には、CPU31が各種の処理を実行する上において必要なデータ等も適宜記憶される。
【0036】
CPU31、ROM32、及びRAM33は、バス34を介して相互に接続されている。このバス34にはまた、入出力インターフェース35も接続されている。入出力インターフェース35には、入力部36、出力部37、ドロア制御部38、センサ部39、記憶部40、通信部41、及びドライブ42が接続されている。
【0037】
入力部36は、上述した数字キー21及びファンクションキー22を含む各種キー及び各種スイッチ等で構成され、オペレータの押下操作に応じて各種情報を入力する。
出力部37は、上述した表示部23及び印刷部24を含み、各種情報を出力する。
ドロア制御部38は、CPU31の指示に従って、ドロア25を開放する制御を実行する。なお、一度開放されたドロア25は、オペレータの手動操作で閉められる。
センサ部39は、赤外線センサ等によって構成され、ドロア25の開閉状態を検出する。
記憶部40は、ハードディスク、或いはDRAM(Dynamic Random Access Memory)等で構成され、各種データを記憶する。
通信部41は、インターネットを含むネットワークを介して他の装置との間で行う通信を制御する。
【0038】
ドライブ42には、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリ等よりなる、リムーバブルメディア71が適宜装着される。ドライブ42によってリムーバブルメディア71から読み出されたプログラムは、必要に応じて記憶部40にインストールされる。
【0039】
図4は、このような各構成要素を含む売上データ処理装置10の機能的構成のうち、履歴生成処理及び上述のドロア異常検出処理を実行するための機能的構成を示す機能ブロック図である。
なお、履歴生成処理とは、オペレータによるレジ操作の履歴(ドロア26の開閉の履歴含む)を示す履歴情報を生成して記録するまでの一連の処理をいう。
【0040】
CPU31においては、主制御部101と、履歴情報生成部102と、ドロア異常検出部103と、異常情報出力制御部104と、が機能する。
記憶部40の一領域として、基準情報記憶部131と、操作履歴情報記憶部132と、開閉履歴情報記憶部133と、統合履歴情報記憶部134と、が設けられている。
【0041】
主制御部101は、履歴生成処理及び上述のドロア異常検出処理を実行する際に、売上データ処理装置10全体の動作を制御する。
【0042】
履歴情報生成部102は、履歴生成処理を実行すべく、操作履歴情報生成部111と、開閉履歴情報生成部112と、を備えている。
【0043】
操作履歴情報生成部111は、オペレータによりファンクションキー22のうちの任意のキーが押下操作される毎に、押下操作されたキーに対応するファンクションに関する操作の履歴を示す操作履歴情報を生成して、図5に示す操作履歴ファイルに格納する。
【0044】
図5は、操作履歴ファイルの構造例を示す図である。
図5において、所定の行は、ファンクションキー22のうちの任意のキーが押下操作された際に操作履歴情報生成部111により生成された操作履歴情報に対応している。
操作履歴情報は、「日付」、「時刻」、「ファンクションコード」、「ファンクション名称」、「ドロア自動オープンフラグ」、「オペレータ」、及び「金額」のデータの集合体として構成される。
「日付」及び「時刻」は、ファンクションキー22のうちの任意のキーが押下操作された日時を示すデータである。「ファンクションコード」及び「ファンクション名称」は、押下操作されたキーに対応付けられたファンクションについての、ファンクションコード及びファンクション名称を示すデータであり、上述の図2の表に対応しているものである。「ドロア自動オープンフラグ」は、押下操作されたキーに対応付けられたファンクションの種類が、ドロア25の開放を伴う種類である場合には「1」が設定され、ドロア25の開放を伴わない種類である場合には「0」が設定されるフラグである。「オペレータ」は、ファンクションキー22のうちの任意のキーを押下操作したオペレータの氏を示すデータである。「金額」は、押下操作されたキーに対応付けられたファンクションの最中又は前後において、数字キー21等で入力された金額を示すデータである。
【0045】
図4に戻り、開閉履歴情報生成部112は、センサ部39の検出結果に基づいて、ドロア25が開かれたとき及び閉じられたときの履歴を示すドロア開閉履歴情報を生成して、図6に示すドロア開閉履歴ファイルに格納する。
【0046】
図6は、ドロア開閉履歴ファイルの構造例を示す図である。
図6において、所定の行は、ドロア25が開かれたとき又は閉じられたときに開閉履歴情報生成部112により生成されたドロア開閉履歴情報に対応している。
ドロア開閉履歴情報は、「日付」、「時刻」、及び「開閉」のデータの集合体として構成される。
「日付」及び「時刻」は、ドロア25が開かれた又は閉じられたことがセンサ部39により検出された日時を示すデータである。「開閉」は、ドロア25が開かれたのか或いは閉じられたのかを示すデータである。具体的には、ドロア25が開かれたときには「オープン」が「開閉」のデータとして採用され、ドロア25が閉められたときには「クローズ」が「開閉」のデータとして採用される。
【0047】
図4に戻り、ドロア異常検出部103は、ドロア異常検出処理を実行すべく、履歴情報取得部121と、基準情報取得部122と、異常検出部123と、を備えている。
即ち、主制御部101は、ログインしているオペレータが、例えば店長等の、ドロアオープン異常検出処理を実行する権限がある者であると認識した場合に、ドロアオープン異常検出処理を実行すべく、履歴情報取得部121と、基準情報取得部122と、異常検出部123と、を機能させる。
【0048】
履歴情報取得部121は、操作履歴情報記憶部132に記憶された操作履歴ファイル(図5参照)における各操作履歴情報のうち、ドロア25の開放を伴うファンクションについての操作履歴情報、即ち「ドロア自動オープンフラグ」が「1」である操作履歴情報を取得する。
また、履歴情報取得部121は、開閉履歴情報記憶部133に記憶されたドロア開閉履歴ファイル(図6参照)における各ドロア開閉履歴情報の全てを取得する。
そして、履歴情報取得部121は、取得した各操作履歴情報及び各ドロア開閉履歴情報の各々を時系列に並べて統合し、新たに生成したファイルに含める。このように新たに生成されるファイルを、以下、「中間マージファイル」と呼ぶ。
また、履歴情報取得部121は、操作履歴情報記憶部132に記憶された操作履歴ファイルから、オペレータ毎かつファンクション毎に、ファンクションの発生回数をそれぞれ集計し、新たに生成したファイルに含める。このように新たに生成されるファイルを、以下、「回数集計ファイル」と呼ぶ。
これらの中間マージファイル及び回数集計ファイルは、本実施形態では、統合履歴情報記憶部134に記憶される。そこで、以下、中間マージファイル及び回数集計ファイルをまとめて、統合履歴ファイルと呼ぶ。
【0049】
図7は、統合履歴ファイルの構造例を示す図である。具体的には、図7(a)は、中間マージファイルの構造例を示す図である。図7(b)は、回数集計ファイルの構造例を示す図である。
【0050】
図7(a)において、中間マージファイルの所定の行は、履歴情報取得部121によって取得された各操作履歴情報又は各ドロア開閉履歴情報に対応している。
従って、所定の行の各項目のデータは、操作履歴情報(図5参照)又はドロア開閉履歴情報(図6参照)の対応する項目のデータに対応しており、これらのデータは上述しているため、ここではその説明は省略する。
【0051】
図7(b)において、回数集計ファイルの所定の行は、所定のオペレータの所定のファンクションが対応しており、「日付」、「オペレータ」、「ファンクション名称」、及び、「発生回数」のデータの集合体として構成される。
所定行の「日付」は、集計対象となった操作履歴ファイルが生成された日付を示すデータである。当該行の「オペレータ」及び「ファンクション名称」は、当該行に対応付けられたオペレータの氏及びファンクション名称を示すデータである。「発生回数」は、当該行に対応付けられたオペレータ及びファンクションの組み合わせで、当該ファンクションの発生回数を示すデータである。
【0052】
図4に戻り、基準情報取得部122は、ドロア25を開放させる操作毎に予め設定された標準操作の基準のうち、統合履歴ファイル(図7)から特定される操作(ファンクション)についての標準操作の基準を取得する。
本実施形態では、標準操作の基準として、オペレータ毎及びファンクション毎に設定された標準的操作時間及び標準的操作回数が採用されている。より具体的には本実施形態では、標準的操作時間としては、ドロア25の開放を継続する時間として許可された時間(以下、「ドロアオープン許可時間」と呼ぶ)が採用されている。また、本実施形態では、標準的操作回数としては、ドロア25の開閉を繰り返す回数として許可された回数(以下、「ドロアオープン許可回数」と呼ぶ)が採用されている。
このような標準操作の基準、即ち、本実施形態では、オペレータ毎及びファンクション毎の、ドロアオープン許可時間及びドロアオープン許可回数は、所定のテーブルに格納されて基準情報記憶部131に予め記憶されている。なお、以下、このような所定のテーブルを、「ドロア開閉管理テーブル」と呼ぶ。
【0053】
図8は、ドロア開閉管理テーブルの構造例を示す図である。
図8において、所定の行は、所定のオペレータの所定のファンクションが対応しており、「オペレータ」、「ファンクション名称」、「ドロアオープン許可時間」、及び「ドロアオープン許可回数」のデータの集合体として構成される。
所定の行の「オペレータ」及び「ファンクション名称」は、当該行に対応付けられたオペレータの氏及びファンクション名称を示すデータである。「ドロアオープン許可時間」は、当該行に対応付けられたオペレータ及びファンクションの組み合わせについての、ドロアオープン許可時間を示すデータである。「ドロアオープン許可回数」は、当該行に対応付けられたオペレータ及びファンクションの組み合わせについての、ドロアオープン許可回数を示すデータである。
【0054】
なお、図8の一番上の行の「伊藤」及び「現金」の組み合わせ、及び上から10行目の「吉田」及び「現金」の組み合わせについては、ドロアオープン許可回数が最大値である「9999」が設定されている。このように、ドロアオープン許可回数として最大値が設定されていることは、ドロア25の開閉の繰り返し回数に制限がないこと(何回開閉しても異常なドロア操作と判定されないこと)を意味する。同様に、図示はしないが、ドロアオープン許可時間として最大値が設定されていることは、ドロア25の開放の継続時間に制限がないこと(何時間開放しっ放しでも異常なドロア操作と判定されないこと)を意味する。
逆に、所定の行のドロアオープン許可時間又はドロアオープン許可回数として0が設定されている場合は、当該行に対応するオペレータに対して、当該行に対応するファンクションの実行が許可されていないことを意味する。
【0055】
なお、本実施形態では、オペレータは、ログイン操作として、自己に設定されたオペレータコードを入力する。
このオペレータコードをオペレータ毎に管理するファイルもまた、基準情報記憶部131に予め記憶されている。なお、以下、このようなファイルを、「オペレータマスターファイル」と呼ぶ。
【0056】
図9は、オペレータマスターファイルの構造例を示す図である。
図9において、所定の行は、所定のオペレータに対応しており、「オペレータコード」、及び「オペレータ」のデータの集合体として構成される。
所定の行の「オペレータコード」及び「オペレータ」の各々は、当該行に対応付けられたオペレータについての、オペレータコード及び氏の各々を示すデータである。
【0057】
また、本実施形態では、売上データ処理装置10を用いて実行可能なファンクションについての情報が含まれるファイルもまた、基準情報記憶部131に予め記憶されている。なお、以下、このようなファイルを、「ファンクションマスターファイル」と呼ぶ。
【0058】
図10は、ファンクションマスターファイルの構造例を示す図である。
図10において、所定の行は、所定のファンクションに対応しており、「ファンクションコード」、「ファンクション名称」、「ドロア自動オープンフラグ」等のデータの集合体として構成される。
所定の行の「ファンクションコード」及び「ファンクション名称」の各々は、当該行に対応付けられたファンクションについての、ファンクションコード及びファンクション名称の各々を示すデータである。「ドロア自動オープンフラグ」は、当該行に対応付けられたファンクションについて、ドロア25の開放を伴う場合には「1」が設定され、ドロア25の開放を伴わない場合には「0」が設定されるフラグである。
【0059】
図4に戻り、異常検出部123は、操作履歴ファイル(図7参照)から特定されるオペレータ及びファンクションの組み合わせ毎に、取得された標準操作の基準(図8のドロア開閉管理テーブルのドロアオープン許可時間及びドロアオープン許可回数)との差異を求め、所定以上の差異がある場合には、異常なドロア操作として検出する。
なお、異常検出部123による異常なドロア操作の検出の詳細については、図15乃至図19を参照して後述する。
【0060】
異常情報出力制御部104は、異常検出部123により検出された異常なドロア操作を報知するための情報(以下、「異常情報」と呼ぶ)を生成し、出力部37から出力させるように制御する。
例えば、異常情報出力制御部104は、出力部37のうち印刷部24を制御して、図11に示すような異常情報を紙媒体に印刷する。なお、紙媒体に印刷された異常情報を、以下、「ドロアオープン異常レポート」と呼ぶ。
【0061】
図11は、ドロアオープン異常レポートの一例を示す図である。具体的には、図11(a)は、ドロアオープン時間異常レポートの一例を示す図である。図11(b)は、ドロアオープン回数異常レポートの一例を示す図である。
【0062】
図11(a)に示すように、ドロアオープン時間異常レポートには、異常なドロア操作を示すものとしてドロア25の開放時間の異常が検出された場合の各種情報が印字される。具体的には、当該異常が検出された日付及び時刻、当該異常を起こしたオペレータの氏、当該異常の対象となったファンクション名称、当該異常時に入力された金額、及び、当該異常時のドロア25の開放時間(異常時間)が印字される。
【0063】
図11(b)に示すように、ドロアオープン回数異常レポートには、異常なドロア操作を示すものとしてドロア25の開閉回数の異常が検出された場合の各種情報が印字される。具体的には、当該異常が検出された日付及び時刻、当該異常を起こしたオペレータの氏、当該異常の対象となったファンクション名称、及び、当該異常時のドロア25の開閉回数(異常回数)が印字される。
【0064】
次に、図12乃至図19のフローチャートを参照して、図4の機能的構成を有する売上データ処理装置10の各種処理について説明する。
【0065】
図12は、売上データ処理装置10が実行する履歴生成処理のうち、操作履歴ファイルを生成する処理(以下、「操作履歴ファイル生成処理」と呼ぶ)の流れの一例を説明するフローチャートである。
操作履歴ファイル生成処理が実行されると、CPU31において図4の各機能ブロックが機能して、次のような処理が実行される。即ち、以下の各ステップの処理の動作主体は、ハードウェアではCPU31が該当する。ただし、本発明の理解を容易なものとすべく、CPU31において機能する各機能ブロックが動作主体であるものとして、以下の各ステップの処理の説明をする。
【0066】
ステップS1において、主制御部101は、オペレータによるログイン操作がなされたか否かを判定する。
オペレータによるログイン操作がなされていない場合、ステップS1においてNOであると判定されて、処理はステップS1に戻される。即ち、オペレータによるログイン操作がなされるまでの間、ステップS1の判定処理が繰り返し実行される。
その後、オペレータによるログイン操作がなされると、ステップS1においてYESであると判定されて、処理はステップS2に進む。
ステップS2において、主制御部101は、ログイン処理を実行する。
例えば、ログイン操作により入力されたオペレータコードが「0001」であった場合、主制御部101は、「有森」という氏で登録されたオペレータであると認識し(図9参照)、当該オペレータのログインを許可する。
【0067】
ステップS3において、操作履歴情報生成部111は、ファンクションキー22が押下操作されたか否かを判定する。
ファンクションキー22が押下操作されていない場合、ステップS3においてNOであると判定されて、処理はステップS6に進む。
ステップS6において、主制御部101は、売上データ処理装置10の電源がオフ状態であるか否かを判定する。
電源がオン状態の場合には、ステップS6においてNOであると判定されて、処理はステップS3に戻され、それ以降の処理が繰り返される。即ち、電源がオン状態の場合であって、ファンクションキー22が押下操作されていない場合には、ステップS3(NO)及びステップS6(NO)のループ処理が繰り返され、操作履歴ファイル生成処理は待機状態となる。
この間に、電源がオフ状態になると、ステップS6においてYESであると判定されて、操作履歴ファイル生成処理は終了となる。
一方で、この間に、電源がオン状態を維持したまま、ファンクションキー22が押下操作された場合には、ステップS3においてYESであると判定されて、処理はステップS4に進む。
【0068】
ステップS4において、操作履歴情報生成部111は、操作履歴情報を取得して、操作履歴情報ファイル(図5参照)に記憶する。
具体的には、操作履歴情報生成部111は、オペレータがファンクションキー22を押下操作した日時、ファンクションキー22のうち押下操作されたキーに対応するファンクションについてのファンクションコード及び名称、ドロア自動オープンフラグ、オペレータの氏、並びに入力された金額を、操作履歴情報として取得して操作履歴情報ファイルに記憶する。
【0069】
ステップS5において、主制御部101は、ファンクションキー22のうち押下操作に対応するファンクションの処理を実行する。なお、主制御部101は、当該ファンクションがドロア25の開放を伴う種類の場合、即ちドロア自動オープンフラグが「1」の場合、ドロア制御部38を介してドロア25を開ける。
なお、一旦開けられたドロア25は、オペレータの手動操作により閉められる。
その後、処理はステップS3に戻され、それ以降の処理が繰り返される。
即ち、オペレータによりファンクションキー22の押下操作がなされる毎に、ステップS3(YES)、ステップS4、及びS5のループ処理が繰り返し実行され、その都度取得された操作履歴情報が、操作履歴情報ファイルに追記(記憶)されていく。
その後、電源がオフ状態になると、操作履歴ファイルが終了となる。
【0070】
なお、この間、開閉履歴情報生成部112は、センサ部39によりドロア25の開閉が検出される毎に、ドロア開閉履歴情報を生成してドロア開閉履歴ファイルに記憶する(図6参照)。
【0071】
次に、図13を参照して、ドロア異常検出処理について説明する。
図13は、ドロア異常検出処理の流れの一例を説明するフローチャートである。
ドロア異常検出処理は、例えば、一日の営業が終了し、店長等がオペレータとして売上データ処理装置10にログインした後、売上データ処理装置10による精算処理の実行中に開始される。
ドロア異常検出処理が実行されると、CPU31において図4の各機能ブロックが機能して、次のような処理が実行される。即ち、以下の各ステップの処理の動作主体は、ハードウェアではCPU31が該当する。ただし、本発明の理解を容易なものとすべく、CPU31において機能する各機能ブロックが動作主体であるものとして、以下の各ステップの処理の説明をする。
【0072】
ステップS21において、基準情報取得部122は、ドロア開閉管理テーブル(図8参照)を基準情報記憶部131から読み込む。
【0073】
ステップS22において、履歴情報取得部121は、中間マージファイルを作成する処理(以下、「中間マージファイル作成処理」と呼ぶ)を実行する。中間マージファイル作成処理の詳細については、図14を参照して後述する。
【0074】
ステップS23において、異常検出部123は、ドロアオープン異常時間を検出する処理(以下、「ドロアオープン異常時間検出処理」と呼ぶ)を実行する。ドロアオープン異常時間検出処理の詳細については、図15乃至図17を参照して後述する。
【0075】
ステップS24において、異常検出部123は、ドロアオープン異常回数を検出する処理(以下、「ドロアオープン異常回数検出処理」と呼ぶ)を実行する。ドロアオープン異常回数検出処理の詳細については、図18及び図19を参照して後述する。
【0076】
ステップS25において、主制御部101は、操作履歴情報及びドロア開閉履歴情報を消去する。
これにより、ドロア異常検出処理は終了する。
【0077】
次に、図14を参照して、中間マージファイル作成処理について説明する。
図14は、図13のドロア異常検出処理のうちステップS22の中間マージファイル作成処理の詳細な流れの一例を説明するフローチャートである。
【0078】
ステップS41において、履歴情報取得部121は、操作履歴情報記憶部132に記憶されている操作履歴ファイルから、ドロア25の開放を伴うファンクションのレコード(操作履歴情報)のみを読み込む。
具体的には、履歴情報取得部121は、操作履歴ファイルに含まれる操作履歴情報の中から、ドロア自動オープンフラグが「1」の操作履歴情報(レコード)のみを読み込む。
図5の例を参照すると、「釣銭準備」、「現金」、「両替」のファンクションのそれぞれの操作履歴情報(レコード)が読み込まれる。
【0079】
ステップS42において、履歴情報取得部121は、読み込んだレコード(操作履歴情報)を統合履歴情報記憶部134の中間マージファイルに取り込む。
【0080】
ステップS43において、履歴情報取得部121は、開閉履歴情報記憶部133に記憶されたドロア開閉履歴ファイルのレコード(ドロア開閉履歴情報)を全件読み込む。図6の例を参照すると、8行分の全てのドロア開閉履歴情報(レコード)が読み込まれる。
【0081】
ステップS44において、履歴情報取得部121は、取得したレコードを統合履歴情報記憶部134の中間マージファイルに取り込む。
【0082】
ステップS45において、履歴情報取得部121は、統合履歴情報記憶部134の中間マージファイルのレコード(ドロア25の開放を伴う操作履歴情報及びドロア開閉履歴情報)を時系列に並び替える。これにより、例えば図7(a)に示す中間マージファイルが作成される。
【0083】
ステップS46において、統合履歴情報生成部135は、ステップS45の処理で並び替えた中間マージファイル(図7(a)参照)を統合履歴情報記憶部134に記憶する。
これにより、中間マージファイル作成処理は終了する。その後、処理は図13のステップS23のドロアオープン異常検出処理に進む。
【0084】
そこで、図15及び図16を参照して、ドロアオープン異常時間検出処理について説明する。
図15及び図16は、図13のドロア異常検出処理のうちステップS23のドロアオープン異常時間検出処理の詳細な流れの一例を説明するフローチャートである。
【0085】
ステップS60において、異常検出部123は、中間マージファイルの先頭の行にポインタを配置する。ポインタは、読み込み対象の行(レコード)を示すものであるものとする。
ステップS61において、異常検出部123は、異常時間検出回数iを0に初期設定する。異常時間検出回数iについては、後述する。
【0086】
ステップS62において、異常検出部123は、中間マージファイルにおいてポインタの示す位置にレコードが存在するか否かを判定する。
レコードが存在しない場合には、ステップS62においてNOであると判定されて、処理はステップS76に進む。ただし、ステップS76以降の処理については後述する。
これに対して、レコードが存在する場合には、ステップS62においてYESであると判定されて、処理はステップS63に進む。
ステップS63において、異常検出部123は、ポインタが指し示すレコードを中間マージファイルから読み込む。
具体的には例えば、図7(a)の中間マージファイルにおいて、上から4行目の位置にポイントが配置されているものとする。この場合、異常検出部123は、4行目のレコード、即ち、「現金」のファンクションでオペレータが「伊藤」の組み合わせのレコードを読み込む。
【0087】
図16のステップS64において、異常検出部123は、読み込んだレコードがファンクションのレコードか否かを判定する。
読み込んだレコードが、元々ドロア開閉履歴ファイルのレコードであった場合には、ドロア25の開閉を示すレコード(オープン又はクローズのレコード)であるため、ステップS64においてNOであると判定されて、処理はステップS75に進む。ただし、ステップS75以降の処理については後述する。
これに対して、読み込んだレコードが、元々操作履歴ファイルのレコードであった場合には、ファンクションのレコードであるため、ステップS64においてYESであると判定されて、処理はステップS65に進む。上述の例、即ち図7(a)の中間マージファイルの4行目のレコードが読み込まれた例では、「現金」のファンクションのレコードであるため、ステップS64においてYESであると判定されて、処理はステップS65に進む。
【0088】
ステップS65において、異常検出部123は、ステップS63の処理で読み込んだレコードに対応するオペレータ及びファンクションについての、ドロアオープン許可時間をドロア開閉管理テーブルから探索する。
なお、このようなステップS65の一連の処理を、以下、「許可時間探索処理」と呼ぶ。許可時間探索処理の詳細については、図17を参照して後述する。
例えば上述の例、即ち図7(a)の中間マージファイルの4行目のレコードが読み込まれた例では、「現金」のファンクションとオペレータが「伊藤」という組み合わせのため、図8のドロア開閉管理テーブルの1行目から、ドロアオープン許可時間が30秒であることが探索される。
【0089】
ステップS66において、異常検出部123は、ドロアオープン許可時間が最大値か否かを判定する。
ドロアオープン許可時間が最大値であることは、ステップS63の処理で読み込んだレコードに対応するオペレータ及びファンクションの組み合わせについては、ドロア25の開放時間に制限がないことを意味する。このような場合には、ステップS66においてYESであると判定されて、処理は図15のステップS75に進む。ただし、ステップS75以降の処理については後述する。
これに対して、ドロアオープン許可時間が最大値でない場合には、ステップS66においてNOであると判定されて、処理はステップS67に進む。例えば上述の例、即ち図8のドロア開閉管理テーブルの1行目から、ドロアオープン許可時間が30秒であることが探索された例では、ステップS66においてNOであると判定されて、処理はステップS67に進む。
【0090】
ステップS67において、異常検出部123は、中間マージファイルにおけるポインタを1レコード分進める。上述の例では、即ち図7(a)の中間マージファイルの4行目にポインタが設定されていた例では、5行目にポインタが移行する。
【0091】
ステップS68において、異常検出部123は、中間マージファイルにおいてポインタの示す位置にレコードが存在するか否かを判定する。
レコードが存在しない場合には、ステップS68においてNOであると判定されて、処理は図15のステップS76に進む。ただし、ステップS76以降の処理については後述する。
これに対して、レコードが存在する場合には、ステップS68においてYESであると判定されて、処理はステップS69に進む。
ステップS69において、異常検出部123は、読み込んだレコードがクローズのレコードか否かを判定する。
読み込んだレコードが、元々ドロア開閉履歴ファイルのオープンのレコード(ドロア25の開を示すレコード)であるか又は元々操作履歴ファイルのレコードであった場合には、ステップS69においてNOであると判定されて、処理はステップS77に進む。上述の例では、即ち図7(a)の中間マージファイルの5行目にポインタが移行した例では、5行目のレコードはオープンのレコードであるので、ステップS69においてNOであると判定されて、処理はステップS77に進む。
【0092】
ステップS77において、異常検出部123は、読み込んだレコードがファンクションのレコードか否かを判定する。
読み込んだレコードが、ファンクションのレコードであった場合には、ステップS77においてYESであると判定されて、処理はステップS78に進む。ただし、ステップS78以降の処理は後述する。
これに対して、読み込んだレコードが、クローズのレコードでもなく(ステップS69においてNOであると判定済み)、ファンクションのレコードでもなかった場合には、即ちオープンのレコードであった場合には、ステップS77においてNOであると判定されて、処理はステップS67に戻され、それ以降の処理が繰り返される。
上述の例では、即ち図7(a)の中間マージファイルの5行目にポインタが移行した例では、5行目のレコードはオープンのレコードであるので、ステップS77においてNOであると判定されて、処理はステップS67に戻される。この場合、図7(a)の中間マージファイルの6行目にポインタが移行し(ステップS67)、レコードが存在するが(ステップS68YES)、「現金」のファンクションのレコードであるので、ステップS77においてYESであると判定されて、処理はステップS78に進む。
【0093】
ステップS78において、異常検出部123は、前ファンクションと現ファンクションとの各レコードの時刻の差が、ドロアオープン許可時間を超えているか否かを判定する。
即ち、ステップS78の判定処理は、前ファンクションから、ドロア25が閉まらずに(ステップS69NO参照)開放状態を維持したまま、現ファンクションが実行されたものと把握することできる。従って、前ファンクションと現ファンクションとの各レコードの時刻の差が、ドロア25の開放状態の維持時間を示している。このドロア25の開放状態の維持時間が、ドロアオープン許可時間を超えているか否かが判定される。
【0094】
ドロア25の開放状態の維持時間がドロアオープン許可時間を超えていない場合、ドロアオープン異常時間が発生していないので、ステップS78においてNOであると判定されて、処理はステップS65に戻され、それ以降の処理が繰り返される。即ち、現ファンクションについてのドロアオープン許可時間が探索され、当該ドロアオープン許可時間に基づいて、ドロアオープン異常時間の有無が検出される。
【0095】
これに対して、ドロア25の開放状態の維持時間がドロアオープン許可時間を超えている場合、ドロアオープン異常時間が発生していることになるので、ステップS78においてYESであると判定されて、処理はステップS79に進む。
ステップS79において、異常検出部123は、異常時間検出回数iを1だけインクリメントする(i=i+1)。
ステップS80において、異常検出部123は、異常時間検出回数iが1であるか否かを判定する。
異常時間検出回数iが1である場合とは、ドロアオープン異常時間の検出が初回であることを意味する。このように異常時間検出回数iが1である場合には、ステップS80においてYESであると判定されて、処理はステップS81に進む。ステップS81において、異常情報出力制御部104は、印刷部24を制御して、検出されたドロアオープン異常時間をヘッダとともに印字する。即ち、ドロアオープン異常時間の検出が初回の場合には、初回に検出されたドロアオープン異常時間のみならず、ヘッダも印字される。
【0096】
上述の例では、即ち図7(a)の中間マージファイルの4行目から6行目にポインタが移行した例では、前ファンクションと現ファンクションのレコードの時刻差は1分(09:22:02.11−209:21:02.112)になる。一方で、ドロアオープン許可時間は30秒である。従って、ドロアオープン異常時間が発生していることになるので、それが検出されて、ステップS78においてYESであると判定されて、処理はステップS79に進む。
そして、ステップS79において異常時間検出回数iが0から1に更新され、ステップS80においてYESであると判定されて、ステップS81の処理で、図11(a)に示すように、「ドロアオープン時間異常レポート」というヘッダとともに、「2011/3/12 09:21 伊藤 現金 ・・・60秒」というドロアオープン異常時間が印字される。
【0097】
これに対して、異常時間検出回数iが1でない場合には、ドロアオープン異常時間の検出が2回目以降であることを意味する。従って、このような場合には、ステップS80においてNOであると判定されて、処理はステップS82に進む。ステップS82において、異常情報出力制御部104は、印刷部24を制御して、検出されたドロアオープン異常時間を印字する。即ち、ドロアオープン異常時間の検出が2回目以降の場合には、ヘッダの印字は不要であるので、検出されたドロアオープン異常時間のみが印字される。
【0098】
以上、中間マージファイルの時系列に並ぶレコードが、2つのファンクションの間に、クローズのレコードを挟まないパターンについての一連の処理について説明した。
次に、中間マージファイルの時系列に並ぶレコードが、2つのファンクションの間に、クローズのレコードを挟むパターンについての一連の処理について説明する。ただし、ステップS69に進むまでの処理は同様であるので、それらの説明は省略する。
【0099】
ポインタが進んでクローズのレコードを指し示すようになると、ステップS69においてYESであると判定されて、処理はステップS70に進む。
【0100】
ステップS70において、異常検出部123は、ファンクションとクローズとの各レコードの時刻の差が、ドロアオープン許可時間を超えているか否かを判定する。
即ち、ファンクションとクローズの時刻の差とは、ドロア25の開放状態の維持時間を示している。ステップS70の判定処理では、このドロア25の開放状態の維持時間が、ドロアオープン許可時間を超えているか否かが判定される。
【0101】
ドロア25の開放状態の維持時間がドロアオープン許可時間を超えていない場合、ドロアオープン異常時間が発生していないので、ステップS70においてNOであると判定されて、処理は図15のステップS75に進む。
ステップS75において、異常検出部123は、中間マージファイルにおけるポインタを1レコード分進め、処理をステップS62に戻し、それ以降の処理を繰り返す。
【0102】
これに対して、ドロア25の開放状態の維持時間がドロアオープン許可時間を超えている場合、ドロアオープン異常時間が発生していることになるので、ステップS70においてYESであると判定されて、処理はステップS71に進む。
なお、ステップS71乃至S74の各々の処理は、上述したステップS79乃至S82の各々の処理と同様であるため、ここではその説明は省略する。
【0103】
以上の処理が繰り返し実行されると、ポインタが進んでいき、中間マージファイルにおける最後のレコードの次(最後尾)に移行する。このような場合には、図15のステップS62においてNOであると判定されて、処理はステップS76に進む。
ステップS76において、主制御部101は、中間マージファイルを削除する。
これにより、ドロアオープン異常時間検出処理は終了となる。
【0104】
ここで、図17を参照して、図16のステップS65の許可時間探索処理について説明する。
図17は、図16のステップS65の許可時間探索処理の詳細な流れを説明するフローチャートである。
許可時間探索処理は、中間マージファイルからファンクションのレコードが読み込まれた場合に実行される(図15のステップS63及び図16のステップS64でYES)。
【0105】
ステップS101において、異常検出部123は、最大値をドロアオープン許可時間に設定する。即ち、最大値が初期設定値になる。
ステップS102において、異常検出部123は、基準情報記憶部131に記憶されたドロア開閉管理テーブルの先頭にポインタを配置する。
【0106】
ステップS103において、異常検出部123は、ポインタの指し示す位置にレコードが存在するか否か判定する。
レコードが存在する場合は、ステップS103においてYESであると判定されて、処理はステップS104に進む。ステップS104において、異常検出部123は、ドロア開閉管理テーブルにおけるポインタが指し示す位置のレコードを読み込む。
【0107】
ステップS105において、異常検出部123は、ステップS63の処理で中間マージンファイルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせと、ステップS104の処理でドロア開閉管理テーブルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせが一致するか否かを判定する。
【0108】
一致しない場合には、ステップS104の処理で読み込まれたレコードには、目的のドロアオープン許可時間が含まれていないので、ステップS105においてNOであると判定されて、処理はステップS106に進む。
ステップS106において、異常検出部123は、ポインタの位置を1レコード分進める。その後、処理はステップS103に戻され、それ以降の処理が繰り返される。
即ち、ステップS103(YES),S104,S105(NO),S106のループ処理が繰り返され、ポインタが順次移行していく。
そして、ステップS63の処理で中間マージンファイルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせと、ステップS104の処理でドロア開閉管理テーブルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせが一致した場合には、ステップS105においてYESであると判定されて、処理はステップS107に進む。
【0109】
ステップS107において、異常検出部123は、ステップS104の処理でドロア開閉管理テーブルから読み込んだレコードにおいて、オペレータに割り当てられたドロアオープン許可時間を設定する。これにより許可時間探索処理は終了となる。
なお、上述のループ処理が繰り返している最中に、ポインタが最後まで移行して、読み出し可能なレコードが存在しなくなった場合にも、ステップS103においてNOであると判定されて、許可時間探索処理は終了となる。
許可時間探索処理が終了すると、即ち、図16のドロアオープン異常時間検出処理のステップS65の処理が終了すると、処理はステップS66に進む。
【0110】
以上、図13のドロア異常検出処理のうち、ステップS23のドロアオープン異常時間検出処理について説明した。
このようなドロアオープン異常回数検出処理が終了すると、処理は図13のステップS24のドロアオープン異常回数検出処理に進む。
【0111】
そこで、図18を参照して、ドロアオープン異常回数検出処理について説明する。
図18は、図13のドロア異常検出処理のうちステップS24のドロアオープン異常回数検出処理の詳細な流れの一例を説明するフローチャートである。
【0112】
ステップS121において、履歴情報取得部121は、操作履歴情報記憶部132に記憶された操作履歴ファイルのレコード(操作履歴情報)をオペレータ別に読み込む。
ステップS122において、履歴情報取得部121は、ファンクション別にレコード件数を集計する。
ステップS123において、履歴情報取得部121は、集計したオペレータ別ファンクション別レコード件数を、回数集計ファイル(図7(b)参照)として統合履歴情報記憶部134に保存する。
【0113】
ステップS124において、異常検出部123は、回収集計ファイルの先頭にポインタを配置する。
ステップS125において、異常検出部123は、異常回数検出回数jを0に設定する。
【0114】
ステップS126において、異常検出部123は、回数集計ファイルにおいてポインタの示す位置にレコードが存在するか否かを判定する。
レコードが存在しない場合には、ステップS126においてNOであると判定されて、処理はステップS136に進む。ただし、ステップS136以降の処理については後述する。
これに対して、レコードが存在する場合には、ステップS126においてYESであると判定されて、処理はステップS127に進む。
ステップS127において、異常検出部123は、ポインタが指し示すレコードを回数集計ファイルから読み込む。
具体的には例えば、図7(b)の回数集計ファイルにおいて、上から1行目の位置にポイントが配置されているものとする。この場合、異常検出部123は、1行目のレコード、即ち、「両替」のファンクションでオペレータが「伊藤」についての、ドロア25の開閉の発生回数は「15回」であることを示すレコードを読み込む。
【0115】
ステップS128において、異常検出部123は、ステップS127の処理で読み込んだレコードに対応するオペレータ及びファンクションについての、ドロアオープン許可回数をドロア開閉管理テーブルから探索する。
なお、このようなステップS128の一連の処理を、以下、「許可回数探索処理」と呼ぶ。許可回数探索処理の詳細については、図19を参照して後述する。
例えば上述の例、即ち図7(b)の集計回数ファイルの1行目のレコードが読み込まれた例では、「両替」のファンクションとオペレータが「伊藤」という組み合わせのため、図8のドロア開閉管理テーブルの3行目から、ドロアオープン許可回数が10回であることが探索される。
【0116】
ステップS129において、異常検出部123は、ドロアオープン許可回数が最大値か否かを判定する。
【0117】
ドロアオープン許可回数が最大値であることは、ステップS127の処理で読み込んだレコードに対応するオペレータ及びファンクションの組み合わせについては、ドロア25の開閉回数に制限がないことを意味する。このような場合には、ステップS129においてYESであると判定されて、処理はステップS135に進む。
ステップS135において、異常検出部123は、ポインタを1レコード分進める。その後、処理はステップS126に戻され、それ以降の処理が繰り返される。
【0118】
これに対して、ドロアオープン許可時間が最大値でない場合には、ステップS129においてNOであると判定されて、処理はステップS130に進む。
【0119】
ステップS130において、異常検出部123は、レコードの発生回数がドロアオープン許可回数を超えているか否かを判定する。
レコードの発生回数がドロアオープン許可回数を超えていない場合、ドロアオープン異常回数が発生していないので、ステップS130においてNOであると判定されて、処理はステップS135に戻され、それ以降の処理が繰り返される。
【0120】
これに対して、レコードの発生回数がドロアオープン許可回数を超えている場合、ドロアオープン異常回数が発生していることになるので、ステップS130においてYESであると判定されて、処理はステップS131に進む。
ステップS131において、異常検出部123は、異常回数検出回数jを1だけインクリメントする(j=j+1)。
ステップS132において、異常検出部123は、異常回数検出回数jが1であるか否かを判定する。
異常回数検出回数jが1である場合とは、ドロアオープン異常回数の検出が初回であることを意味する。このように異常回数検出回数jが1である場合には、ステップS132においてYESであると判定されて、処理はステップS133に進む。
ステップS133において、異常情報出力制御部104は、印刷部24を制御して、検出されたドロアオープン異常回数をヘッダとともに印字する。即ち、ドロアオープン異常回数の検出が初回の場合には、初回に検出されたドロアオープン異常回数のみならず、ヘッダも印字される。
【0121】
上述の例では、即ち図7(b)の集計回数ファイルの1行目にポインタがある例では、レコードの発生回数は15回になる。一方で、ドロアオープン許可回数は10回である。従って、ドロアオープン異常回数が発生していることになるので、それが検出されて、ステップS130においてYESであると判定されて、処理はステップS131に進む。
そして、ステップS131において異常回数検出回数jが0から1に更新され、ステップS132においてYESであると判定されて、ステップS133の処理で、図11(b)に示すように、「ドロアオープン回数異常レポート」というヘッダとともに、「2011/3/12 伊藤 両替 15」というドロアオープン異常回数が印字される。
【0122】
これに対して、異常回数検出回数jが1でない場合には、ドロアオープン異常回数の検出が2回目以降であることを意味する。従って、このような場合には、ステップS132においてNOであると判定されて、処理はステップS134に進む。ステップS134において、異常情報出力制御部104は、印刷部24を制御して、検出されたドロアオープン異常回数を印字する。即ち、ドロアオープン異常回数の検出が2回目以降の場合には、ヘッダの印字は不要であるので、検出されたドロアオープン異常回数のみが印字される。
【0123】
以上の処理が繰り返し実行されると、ポインタが進んでいき、回数集計ファイルにおける最後のレコードの次(最後尾)に移行する。このような場合には、ステップS126においてNOであると判定されて、処理はステップS136に進む。
ステップS136において、主制御部101は、回数集計ファイルを削除する。
これにより、ドロアオープン異常回数検出処理は終了となる。
【0124】
ここで、図19を参照して、図18のステップS128の許可回数探索処理について説明する。
図19は、図18のステップS128の許可回数探索処理の詳細な流れを説明するフローチャートである。
許可回数探索処理は、回数集計ファイルからレコードが読み込まれた場合に実行される(ステップS127参照)。
【0125】
ステップS151において、異常検出部123は、最大値をドロアオープン許可回数に設定する。即ち、最大値が初期設定値になる。
ステップS152において、異常検出部123は、基準情報記憶部131に記憶されたドロア開閉管理テーブルの先頭にポインタを配置する。
【0126】
ステップS153において、異常検出部123は、ポインタの指し示す位置にレコードが存在するか否か判定する。
レコードが存在する場合は、ステップS153においてYESであると判定されて、処理はステップS154に進む。ステップS154において、異常検出部123は、ドロア開閉管理テーブルにおけるポインタが指し示す位置のレコードを読み込む。
【0127】
ステップS155において、異常検出部123は、ステップS127の処理で回数集計ファイルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせと、ステップS154の処理でドロア開閉管理テーブルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせが一致するか否かを判定する。
【0128】
一致しない場合には、ステップS154の処理で読み込まれたレコードには、目的のドロアオープン許可回数が含まれていないので、ステップS155においてNOであると判定されて、処理はステップS156に進む。
ステップS156において、異常検出部123は、ポインタの位置を1レコード分進める。その後、処理はステップS153に戻され、それ以降の処理が繰り返される。
即ち、ステップS153(YES),S154,S155(NO),S156のループ処理が繰り返され、ポインタが順次移行していく。
そして、ステップS155の処理で集計回数ファイルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせと、ステップS154の処理でドロア開閉管理テーブルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせが一致した場合には、ステップS155においてYESであると判定されて、処理はステップS157に進む。
【0129】
ステップS157において、異常検出部123は、ステップS154の処理でドロア開閉管理テーブルから読み込んだレコードにおいて、オペレータに割り当てられたドロアオープン許可回数を設定する。これにより許可回数探索処理は終了となる。
なお、上述のループ処理が繰り返している最中に、ポインタが最後まで移行して、読み出し可能なレコードが存在しなくなった場合にも、ステップS153においてNOであると判定されて、許可回数探索処理は終了となる。
許可回数探索処理が終了すると、即ち、図18のドロアオープン異常回数検出処理のステップS128の処理が終了すると、処理はステップS129に進む。
【0130】
以上説明したように、売上データ処理装置10は、「現金」、「釣銭準備」、「両替」等、客から受け取った代金をドロア25に収納したり、客に渡す釣銭をドロア25から引き出す必要のあるファンクションが実行されると、ドロア25を自動的に開放する。ただし、開放されたドロア25は、自動的に閉じずに、オペレータの手動操作により閉じられる。
【0131】
このようなファンクションに伴うドロア25の開閉は短時間であり、開閉回数も頻繁でないことから、ドロア25の開放時間が長時間であった場合や、ドロア25の開閉回数が多数回であった場合には、ドロア25から不正に現金が引き出された疑いがある。
そこで、オペレータ毎かつファンクション毎に要する、ドロア25の標準的開放時間(ドロアオープン許可時間)及び標準的開閉回数(ドロアオープン許可回数)が予め設定されている。売上データ処理装置10は、このドロア25の標準的な開放時間及び標準的な開閉回数の各々と、オペレータが実際にファンクションを実行した場合の操作履歴である開放時間及び開閉回数の各々とを比較して、その比較の結果に基づいて、ドロア25から不正に現金が引き出された疑いがある操作履歴を、異常なドロア操作として検出する。
【0132】
具体的には、オペレータによる操作を受けてドロア25を開放させる売上データ処理装置10に対して、ドロア25から不正に現金が引き出された疑いがある操作を、異常なドロア操作として検出するドロア異常検出装置が、売上データ処理装置10に内蔵されている。
このドロア異常検出装置は、履歴情報取得部121と、基準情報取得部122と、異常検出部123と、を備えている。
履歴情報取得部121は、売上データ処理装置10に対する各操作(各ファンクション)の履歴を取得する。
基準情報取得部122は、ドロア25を開放させる操作毎(ファンクション毎)に予め設定された標準操作の基準(ドロアオープン許可時間及びドロアオープン許可回数)のうち、履歴から特定される操作についての標準操作の基準を取得する。
異常検出部123は、履歴から特定される操作毎に、基準情報取得部122により取得された標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する。
このようにして、ドロア25から不正に現金が引き出された疑いのある売上データ処理装置10の操作履歴を、ドロア25の異常操作として適切に、かつ高精度で、効率的に検出することが可能になる。
【0133】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
【0134】
例えば本実施形態では、売上データ処理装置の各機能は、本実施形態では1の筺体に収められていたが、特にこの必要はなく、分散させてもよい。
特に、基準情報記憶部131乃至統合履歴情報記憶部134の少なくとも一部は、売上データ処理装置10の記憶部40に設ける必要は特になく、売上データ処理装置10の外部の装置(サーバ等)に設けるようにしてもよい。
【0135】
また、基準情報記憶部131にドロアオープン許可時間、ドロアオープン許可回数が存在しない場合は、基準情報記憶部131のオペレータ毎、ファンクション毎の操作履歴情報から、過去の平均的なドロア25の開放時間及びドロア25の開閉回数を算出し、ドロアオープン許可時間、ドロアオープン許可回数として取得するようにしてもよい。
上述の実施形態では、本発明が適用される売上データ処理装置10を例として説明したが、特にこれに限定されない。例えば、本発明は、ドロア25を有する電子機器一般に適用することができる。
【0136】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。
換言すると、図3の機能的構成は例示に過ぎず、特に限定されない。即ち、上述した一連の処理を全体として実行できる機能が備えられていれば足り、この機能を実現するためにどのような機能ブロックを用いるのかは特に図3の例に限定されない。
また、1つの機能ブロックは、ハードウェア単体で構成してもよいし、ソフトウェア単体で構成してもよいし、それらの組み合わせで構成してもよい。
【0137】
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、コンピュータ等にネットワークや記録媒体からインストールされる。
コンピュータは、専用のハードウェアに組み込まれているコンピュータであってもよい。また、コンピュータは、各種のプログラムをインストールすることで、各種の機能を実行することが可能なコンピュータ、例えば汎用のパーソナルコンピュータであってもよい。
【0138】
このようなプログラムを含む記録媒体は、オペレータにプログラムを提供するために装置本体とは別に配布される図3のリムーバブルメディア71により構成されるだけでなく、装置本体に予め組み込まれた状態でオペレータに提供される記録媒体等で構成される。リムーバブルメディア71は、例えば、磁気ディスク(フロッピディスクを含む)、光ディスク、又は光磁気ディスク等により構成される。光ディスクは、例えば、CD−ROM(Compact Disk−Read Only Memory),DVD(Digital Versatile Disk)等により構成される。光磁気ディスクは、MD(Mini−Disk)等により構成される。また、装置本体に予め組み込まれた状態でオペレータに提供される記録媒体は、例えば、プログラムが記録されている図2のROM32や、記憶部40に含まれるハードディスク等で構成される。
【0139】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的或いは個別に実行される処理をも含むものである。
また、本明細書において、システムの用語は、複数の装置や複数の手段等より構成される全体的な装置を意味するものとする。
【0140】
以上、本発明のいくつかの実施形態について説明したが、これらの実施形態は、例示に過ぎず、本発明の技術的範囲を限定するものではない。本発明はその他の様々な実施形態を取ることが可能であり、さらに、本発明の要旨を逸脱しない範囲で、省略や置換等種々の変更を行うことができる。これら実施形態やその変形は、本明細書等に記載された発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0141】
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[付記1]
オペレータによる操作を受けてドロアを開放させる売上データ処理装置であって、
オペレータによる操作の履歴を取得する履歴取得手段と、
前記ドロアを開放させる操作毎に予め設定された標準操作の基準のうち、前記履歴から特定される操作についての前記標準操作の基準を取得する基準情報取得手段と、
前記履歴から特定される前記操作毎に、前記基準情報取得手段により取得された前記標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する異常検出手段と、
を備えることを特徴とする売上データ処理装置。
[付記2]
前記履歴には、前記売上データ処理装置に対する操作の操作時間を含み、
前記標準操作の基準は、操作毎に設定された標準的操作時間を含み、
前記異常検出手段は、前記履歴から特定される各操作の中に、前記操作時間が前記標準的操作時間より一定以上長い時間を要した操作が存在する場合、異常なドロア操作として検出する、
ことを特徴とする付記1に記載の売上データ処理装置。
[付記3]
前記履歴には、前記オペレータによる操作の操作回数を含み、
前記標準操作の基準は、操作毎に設定された標準的操作回数を含み、
前記異常検出手段は、前記履歴から特定される各操作の中に、前記操作回数が前記標準的操作回数より一定以上多い操作が存在する場合、異常なドロア操作として検出する、
ことを特徴とする付記1又は2に記載の売上データ処理装置。
[付記4]
複数のオペレータのうち所定のオペレータによるログイン操作を受け付け、
前記操作毎に予め設定された前記標準操作の基準は、前記複数のオペレータ毎にそれぞれ設定されており、
前記履歴取得手段は、前記ログイン操作をした前記所定のオペレータによる操作の履歴を取得し、
前記基準情報取得手段は、前記ログイン操作をした前記所定のオペレータについての、前記標準操作の基準を取得し、
前記異常検出手段は、前記ログイン操作をした前記所定のオペレータについて、前記履歴から特定される前記操作毎に前記標準操作の基準との差異を求め、所定以上の差異がある場合には前記ドロアの異常として検出する、
ことを特徴とする付記1乃至3のうち何れか1つに記載の売上データ処理装置。
[付記6]
コンピュータを、
オペレータによる操作を受けてドロアを開放させる売上データ処理装置に対する、オペレータによる操作の履歴を取得する履歴取得手段、
前記ドロアを開放させる操作毎に予め設定された標準操作の基準のうち、前記履歴から特定される操作についての前記標準操作の基準を取得する基準情報取得手段、
前記履歴から特定される前記操作毎に、前記基準情報取得手段により取得された前記標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する異常検出手段、
として機能させることを特徴とするプログラム。
【符号の説明】
【0142】
10・・・売上データ処理装置、21・・・数字キー、22・・・ファンクションキー、23・・・表示部、24・・・印刷部、25・・・ドロア、31・・・CPU、32・・・ROM、33・・・RAM、34・・・バス、35・・・入出力インターフェース、36・・・入力部、37・・・出力部、38・・・ドロア制御部、39・・・センサ部、40・・・記憶部、41・・・通信部、42・・・ドライブ、71・・・リムーバブルメディア、101・・・主制御部、102・・・履歴情報生成部、103・・・ドロア異常検出部、104・・・異常情報出力制御部、111・・・操作履歴情報取得部、112・・・開閉履歴情報生成部、121・・・開閉履歴情報取得部、122・・・基準情報取得部、123・・・異常検出部、131・・・基準情報記憶部、132・・・操作履歴情報記憶部、133・・・開閉履歴情報記憶部、134・・・統合履歴情報取得部
【技術分野】
【0001】
本発明は、売上データ処理装置及びプログラムに関する。
【背景技術】
【0002】
従来より、デパートやスーパー等の小売店では、販売員は、顧客と対面しながら、商品の代金を計算して、計算結果を店の売上として記録する、といった一連の作業をしている。このような作業を電子化すべく、近年、ECR(Electronic Cash Resister)、POS(Point of Sales)端末等の売上データ処理装置が普及している。即ち、販売員は、オペレータとして、売上データ処理装置を操作しながら、接客する。
【0003】
売上データ処理装置には、売上金を保管するためのドロアと呼ばれる引き出しが設けられている。ドロアは、通常閉じられており、オペレータによる所定の操作がなされたときのみ、売上データ処理装置の制御により開けられる。なお、一度開けられたドロアは、オペレータの手動操作により閉じられる。
【0004】
ドロアは、一般的には、オペレータによる所定の作業に伴い開閉される。具体的には、顧客から受け取った代金をドロアに収納する作業や、顧客に渡す釣銭をドロアから引き出す作業に伴い、ドロアは開閉される。従って、このような所定の作業に伴うドロアの開閉は短時間であることから、長時間ドロアが開放されていた場合には、ドロアから不正に現金が引き出された疑いがある。
そこで、ドロアの開放時間が基準値を超えると警告を発する技術が、特許文献1や特許文献2に開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平02−54397号公報
【特許文献2】特開平06−4768号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1や特許文献2の技術のように単にドロアの開放時間だけに着目しても、ドロアから不正に現金が引き出された疑いがある売上データ処理装置の各種操作を、異常なドロア操作として適切に検出することは困難である。
【0007】
本発明の課題は、ドロアから不正に現金が引き出された疑いのある操作を、異常なドロア操作として検出することである。
【課題を解決するための手段】
【0008】
本発明の売上データ処理装置は、
オペレータによる操作を受けてドロアを開放させる売上データ処理装置であって、
オペレータによる操作の履歴を取得する履歴取得手段と、
前記ドロアを開放させる操作毎に予め設定された標準操作の基準のうち、前記履歴から特定される操作についての前記標準操作の基準を取得する基準情報取得手段と、
前記履歴から特定される前記操作毎に、前記基準情報取得手段により取得された前記標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する異常検出手段と、
を備える。
【発明の効果】
【0009】
本発明によれば、ドロアから不正に現金が引き出された疑いのある操作を、異常なドロア操作として適切に検出することができる。
【図面の簡単な説明】
【0010】
【図1】本発明の一実施形態に係る売上データ処理装置の外観構成を示す斜視図である。
【図2】ファンクションの一例を表形式で示す図である。
【図3】図1の売上データ処理装置のハードウェア構成を示すブロック図である。
【図4】図3の売上データ処理装置の機能的構成のうち、履歴生成処理及びドロア異常検出処理を実行するための機能的構成を示す機能ブロック図である。
【図5】操作履歴ファイルの構造例を示す図である。
【図6】ドロア開閉履歴ファイルの構造例を示す図である。
【図7】操作履歴ファイルの構造例を示す図である。
【図8】ドロア開閉管理テーブルの構造例を示す図である。
【図9】オペレータマスターファイルの構造例を示す図である。
【図10】ファンクションマスターファイルの構造例を示す図である。
【図11】ドロアオープン異常レポートの一例を示す図である。
【図12】図3及び図4の売上データ処理装置が実行する履歴生成処理のうち、操作履歴ファイルを生成する処理の流れの一例を説明するフローチャートである。
【図13】ドロア異常検出処理の流れの一例を説明するフローチャートである。
【図14】図13のドロア異常検出処理のうちステップS22の中間マージファイル作成処理の詳細な流れの一例を説明するフローチャートである。
【図15】図13のドロア異常検出処理のうちステップS23のドロアオープン異常時間検出処理の詳細な流れの一例を説明するフローチャートである。
【図16】図13のドロア異常検出処理のうちステップS23のドロアオープン異常時間検出処理の詳細な流れの一例を説明するフローチャートである。
【図17】図16のステップS65の許可時間探索処理の詳細な流れを説明するフローチャートである。
【図18】図13のドロア異常検出処理のうちステップS24のドロアオープン異常回数検出処理の詳細な流れの一例を説明するフローチャートである。
【図19】図18のステップS128の許可回数探索処理の詳細な流れを説明するフローチャートである。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について、図面を用いて説明する。
【0012】
図1は、本発明の一実施形態に係る売上データ処理装置の外観構成を示す斜視図である。
【0013】
図1に示すように、売上データ処理装置10は、数字キー21と、ファンクションキー22と、表示部23と、印刷部24と、ドロア25と、を備えている。
【0014】
数字キー21は、図示はしないが各種数字がそれぞれ印字された複数のキーから構成されている。これらの複数のキーの各々には、印字された数字を売上データ処理装置10の本体に入力する機能が割り当てられている。即ち、オペレータは、数字キー21のうち、所望の数字が印字されたキーを押下操作することで、当該所望の数字を売上データ処理装置10に対して入力することができる。
【0015】
ファンクションキー22は、図示はしないが各種ファンクション名称がそれぞれ印字された複数のキーから構成されている。これらの複数のキーの各々には、印字された名称のファンクションを売上データ処理装置10の本体に対して通知する機能が割り当てられている。
ここで、ファンクションとは、オペレータが売上データ処理装置10を操作して行う作業を意味している。実行可能なファンクションはオペレータ毎に決定されており、オペレータは、ファンクションキー22のうち、現在行う又は直近で行ったファンクション名称が印字されたキーを押下操作する。売上データ処理装置10は、押下操作された当該キーに印字されたファンクションを、オペレータが現在行う又は直近で行ったファンクションとして認識する。
なお、ファンクションの詳細については、図2を参照して後述する。
【0016】
表示部23は、液晶ディスプレイ等で構成され、オペレータの作業にとって必要な各種情報を画像として表示する。
印刷部24は、オペレータの作業にとって必要な各種情報や、客に手渡すレシート等を紙媒体に印字して出力する。
ドロア25は、売上金を保管するための引き出しであり、通常閉じられているが、オペレータによる所定の操作がなされると、売上データ処理装置10の制御により開けられる。なお、一度開けられたドロア25は、オペレータの手動操作により閉じられる。
【0017】
ここで、オペレータによる売上データ処理装置10の操作(以下、適宜「売上データ処理用操作」と呼ぶ)の概略について説明する。
【0018】
オペレータは、先ず、売上データ処理用操作を開始するために、数字キー21等を押下操作して、オペレータ番号を入力することで、ログイン操作をする。
売上データ処理装置10は、入力されたオペレータ番号が登録されているか否かを確認し、登録されている場合にはログイン処理を実行し、登録されていない場合にはログイン処理を禁止する。売上データ処理装置10は、ログイン中のオペレータ番号を内部のメモリ(後述する図3の記憶部40等)に記憶する。
【0019】
ログイン処理が実行されると、オペレータは、予め設定されている1以上のファンクションを使用できるようになる。即ち、オペレータは、これらのファンクションに伴い、売上データ処理装置10に対する各種キー操作を実行できるようになる。
【0020】
図2は、ファンクションの一例を表形式で示す図である。
図2の表においては、所定の行は、所定の1のファンクションに対応している。即ち、所定の行において、第1列の項目には、当該行に対応付けられたファンクションを一意に示すコード(以下、「ファンクションコード」と呼ぶ)が記載されている。当該行の第2列の項目には、当該行に対応付けられたファンクションの名称(以下、「ファンクション名称」と呼ぶ)が記載されている。当該行の第3列の項目には、当該行に対応付けられたファンクションの具体的な内容(以下、「ファンクション内容」と呼ぶ)が記載されている。
例えば、1行目のファンクションは、「0001」のファンクションコードを有し、「釣銭準備」というファンクション名称を有していることがわかる。また、当該「釣銭準備」についてのファンクション内容は、「開店前に売上データ処理装置10に釣銭を入れるときに使用する。用意した釣銭の合計金額を数字キー21で入力してファンクションキー22の釣銭準備キーを押すと、ドロア25が自動で開くので、釣銭をドロア25に入れてからドロア25を手で閉める。」であることがわかる。
なお、釣銭準備キーとは、ファンクションキー22のうち、「釣銭準備」というファンクション名称が印字されたキーをいう。以下、ファンクションキー22の他のキーについても、印字されたファンクション名称を頭に冠して表現することにする。
【0021】
ここで、ファンクションを伴う各種キー操作の具体例として、代金が500円の第1商品と、代金が250円の第2商品とを客が購入する場合に、客の支払額が店舗の売上額として登録されるまでに行われる一連のキー操作について説明する。
【0022】
この場合、オペレータは、数字キー21等を押下操作して、第1商品の代金として500の数字を入力する。同様に、オペレータは、数字キー21等を押下操作して、第2商品の代金として250の数字を入力する。すると、売上データ処理装置10は、第1商品の代金500円と第2商品の代金250円とを内部のメモリに記憶する。
【0023】
なお、図示はしないが、売上データ処理装置10は、各キーに各商品をそれぞれ割り当てて、各商品の代金を内部又は外部から取得する構成を取ることもできる。このような構成を取る売上データ処理装置10に対して、オペレータは、数字キー21の代わりに、第1商品が割り当てられたキーを押下操作する。同様に、オペレータは、第2商品が割り当てられたキーを押下操作する。すると、売上データ処理装置10は、第1商品の代金500円と第2商品の代金250円とを取得して内部のメモリに記憶する。
【0024】
この段階で、オペレータが、第1商品と第2商品の各代金の合計額から、50円の値引をするものとする。この場合、図2の2行目のファンクション、即ち「値引」のファンクションがオペレータにより実行されることになる。
具体的には、2行目の「値引」についてのファンクション内容によれば、売上する商品の入力中(各商品の代金の入力中)に、オペレータは、数字キー21等を押下操作して、値引額として50の数字を入力する。すると、売上データ処理装置10は、商品の代金(本例では第1商品の代金500円と第2商品の代金250円)とともに、値引額(本例では−50円)を内部のメモリに記憶する。
そして、オペレータは、ファンクションキー22の値引キーを押下操作する。これにより、売上データ処理装置10は、「値引」のファンクションが実行されたと認識し、これまでに入力された合計額から値引額を減算し、減算結果を表示部23に表示させる。具体的には本例では、売上データ処理装置10は、500円(第1商品の代金)+250円(第2商品の代金)−50円(値引額)を演算し、その演算結果、即ち700円を示す画像(700の数値の画像)を表示部23に表示させる。
【0025】
第1商品と第2商品を購買しようとしている客は、売上データ処理装置10の表示部23の表示から、支払額を視認することができる。例えば、支払額として上述の700円が表示部23に表示されており、客が、現金で1000円をオペレータに受け渡したものとする。即ち、オペレータは、客からの預かり金として1000円を受け取ったものとする。
この場合、図2の3行目のファンクション、即ち「現金」のファンクションがオペレータにより実行されることになる。
具体的には、3行目の「現金」についてのファンクション内容によれば、オペレータは、数字キー21等を押下操作して、客からの預かり金額として1000の数字を入力し、ファンクションキー22の現金キーを押下操作する。
すると、売上データ処理装置10は、「現金」のファンクションが実行されたと認識し、預かり金額から支払額を減算し、減算結果を釣銭額として表示部23に表示させる。具体的には本例では、売上データ処理装置10は、1000円(預かり金額)から、700円(支払額=第1商品の代金+第2商品の代金−値引額)を演算し、その演算結果、即ち釣銭額が300円であることを示す画像(300の数値の画像)を表示部23に表示させる。
そして、売上データ処理装置10は、ドロア25を自動で開放させる。オペレータは、1000円の預かり金をドロア25に納め、300円の釣銭をドロア25から取り出して客に渡す。オペレータは、客に釣銭を渡したことをもって、「現金」のファンクションを完了させ、ドロア25を手で閉める。
【0026】
この間、売上データ処理装置10は、店舗の売上金として700円を内部のメモリに登録(記憶)する。また、売上データ処理装置10は、上述の売上データ処理用操作の履歴(以下、「操作履歴」と呼ぶ)を保存する。なお、操作履歴の保存場所は、特に限定されず、売上データ処理装置10の外部の装置(図示せぬサーバ等)でもよいが、本実施形態では内部のメモリ(後述する図3の記憶部40等)が採用されている。
【0027】
ここで、ファンクションは、上述した「値引」のようにドロア25の開放が伴わないファンクションと、上述した「現金」のようにドロア25の開放が伴うファンクションとに大別できる。そこで、本実施形態では、これらの2種類のファンクションを明確に区別すべく、ドロア25の開放が伴わないファンクションに対しては「0」が設定され、ドロア25の開放が伴うファンクションに対しては「1」が設定されるフラグが採用されている。このようなフラグを、以下、「ドロア自動オープンフラグ」と呼ぶ。
【0028】
ドロア自動オープンフラグが「1」であるファンクションは、オペレータにとって定型操作の組み合わせにより実行される。例えば、ドロア25の開閉に直目すれば、ドロア25を開放するためにファンクションキー22の押下という定型操作が行われ、その後、開放されたドロア25を手で締めるという定型操作が行われる。このような所定のファンクションにおける一の定型操作又は複数の定型操作の組み合わせは、当該所定のファンクションの標準的な操作であるといえる。そこで、以下、所定のファンクションにおける一の定型操作又は複数の定型操作の組み合わせを、「所定のファンクションの標準操作」と呼ぶ。
【0029】
所定のファンクションの標準操作が正常に行われる限り、当該所定のファンクションに伴うドロア25の開閉時間は、ある程度のオペレータの個人差が存在するにしても、一定時間よりも短くなるはずである。換言すると、所定のファンクションの標準操作であるにも関わらず、ドロア25の開閉時間が一定時間以上ならば、ドロア25から不正に現金が引き出された疑いがある操作、即ち異常なドロア操作が行われたことになる。
また、所定のファンクションの標準操作が正常に行われる限り、当該所定のファンクションに伴うドロア25の開閉回数は、ある程度のオペレータの個人差が存在するにしても、一定回数よりも少なくなるはずである。換言すると、所定のファンクションの標準操作であるにも関わらず、ドロア25の開閉回数が一定回数以上ならば、ドロア25から不正に現金が引き出された疑いがある操作、即ち異常なドロア操作が行われたことになる。
【0030】
このように、所定のファンクションの標準操作に対して、ドロア25の開閉時間についての一定時間や、ドロア25の開閉回数についての一定回数といった、異常なドロア操作が行われたか否かを判定するための基準を予め設定しておくことが可能である。
なお、所定のファンクションは、当該所定のファンクションキーが押下操作なされた場合に実行可能になる。従って、ドロア自動オープンフラグが「1」となる所定のファンクションキーの押下操作は、ドロア25を開放させる操作であると把握することができる。
このように把握した場合には、ドロア25を開放させる操作毎に、当該操作により実行される所定のファンクションの標準操作の基準を予め設定しておくことが可能である。
【0031】
この場合、売上データ処理装置10は、次のような一連の処理を実行することができる。
即ち、売上データ処理装置10は、オペレータによる各操作の履歴を取得する。
また、売上データ処理装置10は、ドロア25を開放させる操作毎に予め設定された標準操作の基準のうち、履歴から特定される操作についての標準操作の基準を取得する。
そして、売上データ処理装置10は、履歴から特定される操作毎に、取得された標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する。
なお、このような一連の処理を以下、「ドロア異常検出処理」と呼ぶ。
【0032】
ここで、複数のオペレータが売上データ処理装置10に対して操作をする可能性がある場合、全オペレータに対して一律に標準操作の基準が設定されるようにしてもよいが、オペレータの個人差に伴い、誤検出が発生したり、逆に精度よい検出が困難になったりする。
そこで、本実施形態では、オペレータ毎に標準操作の基準が個別にそれぞれ設定されている。これにより、誤検出を低減し、かつ精度よい検出が実現可能になる。
【0033】
図3は、ドロア異常検出処理を実行可能な売上データ処理装置10のハードウェア構成を示すブロック図である。
【0034】
売上データ処理装置10は、CPU(Central Processing Unit)31と、ROM(Read Only Memory)32と、RAM(Random Access Memory)33と、バス34と、入出力インターフェース35と、入力部36と、出力部37と、ドロア制御部38と、センサ部39と、記憶部40と、通信部41と、ドライブ42と、を備えている。
【0035】
CPU31は、ROM32に記録されているプログラム、又は、記憶部40からRAM33にロードされたプログラムに従って各種の処理を実行する。
RAM33には、CPU31が各種の処理を実行する上において必要なデータ等も適宜記憶される。
【0036】
CPU31、ROM32、及びRAM33は、バス34を介して相互に接続されている。このバス34にはまた、入出力インターフェース35も接続されている。入出力インターフェース35には、入力部36、出力部37、ドロア制御部38、センサ部39、記憶部40、通信部41、及びドライブ42が接続されている。
【0037】
入力部36は、上述した数字キー21及びファンクションキー22を含む各種キー及び各種スイッチ等で構成され、オペレータの押下操作に応じて各種情報を入力する。
出力部37は、上述した表示部23及び印刷部24を含み、各種情報を出力する。
ドロア制御部38は、CPU31の指示に従って、ドロア25を開放する制御を実行する。なお、一度開放されたドロア25は、オペレータの手動操作で閉められる。
センサ部39は、赤外線センサ等によって構成され、ドロア25の開閉状態を検出する。
記憶部40は、ハードディスク、或いはDRAM(Dynamic Random Access Memory)等で構成され、各種データを記憶する。
通信部41は、インターネットを含むネットワークを介して他の装置との間で行う通信を制御する。
【0038】
ドライブ42には、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリ等よりなる、リムーバブルメディア71が適宜装着される。ドライブ42によってリムーバブルメディア71から読み出されたプログラムは、必要に応じて記憶部40にインストールされる。
【0039】
図4は、このような各構成要素を含む売上データ処理装置10の機能的構成のうち、履歴生成処理及び上述のドロア異常検出処理を実行するための機能的構成を示す機能ブロック図である。
なお、履歴生成処理とは、オペレータによるレジ操作の履歴(ドロア26の開閉の履歴含む)を示す履歴情報を生成して記録するまでの一連の処理をいう。
【0040】
CPU31においては、主制御部101と、履歴情報生成部102と、ドロア異常検出部103と、異常情報出力制御部104と、が機能する。
記憶部40の一領域として、基準情報記憶部131と、操作履歴情報記憶部132と、開閉履歴情報記憶部133と、統合履歴情報記憶部134と、が設けられている。
【0041】
主制御部101は、履歴生成処理及び上述のドロア異常検出処理を実行する際に、売上データ処理装置10全体の動作を制御する。
【0042】
履歴情報生成部102は、履歴生成処理を実行すべく、操作履歴情報生成部111と、開閉履歴情報生成部112と、を備えている。
【0043】
操作履歴情報生成部111は、オペレータによりファンクションキー22のうちの任意のキーが押下操作される毎に、押下操作されたキーに対応するファンクションに関する操作の履歴を示す操作履歴情報を生成して、図5に示す操作履歴ファイルに格納する。
【0044】
図5は、操作履歴ファイルの構造例を示す図である。
図5において、所定の行は、ファンクションキー22のうちの任意のキーが押下操作された際に操作履歴情報生成部111により生成された操作履歴情報に対応している。
操作履歴情報は、「日付」、「時刻」、「ファンクションコード」、「ファンクション名称」、「ドロア自動オープンフラグ」、「オペレータ」、及び「金額」のデータの集合体として構成される。
「日付」及び「時刻」は、ファンクションキー22のうちの任意のキーが押下操作された日時を示すデータである。「ファンクションコード」及び「ファンクション名称」は、押下操作されたキーに対応付けられたファンクションについての、ファンクションコード及びファンクション名称を示すデータであり、上述の図2の表に対応しているものである。「ドロア自動オープンフラグ」は、押下操作されたキーに対応付けられたファンクションの種類が、ドロア25の開放を伴う種類である場合には「1」が設定され、ドロア25の開放を伴わない種類である場合には「0」が設定されるフラグである。「オペレータ」は、ファンクションキー22のうちの任意のキーを押下操作したオペレータの氏を示すデータである。「金額」は、押下操作されたキーに対応付けられたファンクションの最中又は前後において、数字キー21等で入力された金額を示すデータである。
【0045】
図4に戻り、開閉履歴情報生成部112は、センサ部39の検出結果に基づいて、ドロア25が開かれたとき及び閉じられたときの履歴を示すドロア開閉履歴情報を生成して、図6に示すドロア開閉履歴ファイルに格納する。
【0046】
図6は、ドロア開閉履歴ファイルの構造例を示す図である。
図6において、所定の行は、ドロア25が開かれたとき又は閉じられたときに開閉履歴情報生成部112により生成されたドロア開閉履歴情報に対応している。
ドロア開閉履歴情報は、「日付」、「時刻」、及び「開閉」のデータの集合体として構成される。
「日付」及び「時刻」は、ドロア25が開かれた又は閉じられたことがセンサ部39により検出された日時を示すデータである。「開閉」は、ドロア25が開かれたのか或いは閉じられたのかを示すデータである。具体的には、ドロア25が開かれたときには「オープン」が「開閉」のデータとして採用され、ドロア25が閉められたときには「クローズ」が「開閉」のデータとして採用される。
【0047】
図4に戻り、ドロア異常検出部103は、ドロア異常検出処理を実行すべく、履歴情報取得部121と、基準情報取得部122と、異常検出部123と、を備えている。
即ち、主制御部101は、ログインしているオペレータが、例えば店長等の、ドロアオープン異常検出処理を実行する権限がある者であると認識した場合に、ドロアオープン異常検出処理を実行すべく、履歴情報取得部121と、基準情報取得部122と、異常検出部123と、を機能させる。
【0048】
履歴情報取得部121は、操作履歴情報記憶部132に記憶された操作履歴ファイル(図5参照)における各操作履歴情報のうち、ドロア25の開放を伴うファンクションについての操作履歴情報、即ち「ドロア自動オープンフラグ」が「1」である操作履歴情報を取得する。
また、履歴情報取得部121は、開閉履歴情報記憶部133に記憶されたドロア開閉履歴ファイル(図6参照)における各ドロア開閉履歴情報の全てを取得する。
そして、履歴情報取得部121は、取得した各操作履歴情報及び各ドロア開閉履歴情報の各々を時系列に並べて統合し、新たに生成したファイルに含める。このように新たに生成されるファイルを、以下、「中間マージファイル」と呼ぶ。
また、履歴情報取得部121は、操作履歴情報記憶部132に記憶された操作履歴ファイルから、オペレータ毎かつファンクション毎に、ファンクションの発生回数をそれぞれ集計し、新たに生成したファイルに含める。このように新たに生成されるファイルを、以下、「回数集計ファイル」と呼ぶ。
これらの中間マージファイル及び回数集計ファイルは、本実施形態では、統合履歴情報記憶部134に記憶される。そこで、以下、中間マージファイル及び回数集計ファイルをまとめて、統合履歴ファイルと呼ぶ。
【0049】
図7は、統合履歴ファイルの構造例を示す図である。具体的には、図7(a)は、中間マージファイルの構造例を示す図である。図7(b)は、回数集計ファイルの構造例を示す図である。
【0050】
図7(a)において、中間マージファイルの所定の行は、履歴情報取得部121によって取得された各操作履歴情報又は各ドロア開閉履歴情報に対応している。
従って、所定の行の各項目のデータは、操作履歴情報(図5参照)又はドロア開閉履歴情報(図6参照)の対応する項目のデータに対応しており、これらのデータは上述しているため、ここではその説明は省略する。
【0051】
図7(b)において、回数集計ファイルの所定の行は、所定のオペレータの所定のファンクションが対応しており、「日付」、「オペレータ」、「ファンクション名称」、及び、「発生回数」のデータの集合体として構成される。
所定行の「日付」は、集計対象となった操作履歴ファイルが生成された日付を示すデータである。当該行の「オペレータ」及び「ファンクション名称」は、当該行に対応付けられたオペレータの氏及びファンクション名称を示すデータである。「発生回数」は、当該行に対応付けられたオペレータ及びファンクションの組み合わせで、当該ファンクションの発生回数を示すデータである。
【0052】
図4に戻り、基準情報取得部122は、ドロア25を開放させる操作毎に予め設定された標準操作の基準のうち、統合履歴ファイル(図7)から特定される操作(ファンクション)についての標準操作の基準を取得する。
本実施形態では、標準操作の基準として、オペレータ毎及びファンクション毎に設定された標準的操作時間及び標準的操作回数が採用されている。より具体的には本実施形態では、標準的操作時間としては、ドロア25の開放を継続する時間として許可された時間(以下、「ドロアオープン許可時間」と呼ぶ)が採用されている。また、本実施形態では、標準的操作回数としては、ドロア25の開閉を繰り返す回数として許可された回数(以下、「ドロアオープン許可回数」と呼ぶ)が採用されている。
このような標準操作の基準、即ち、本実施形態では、オペレータ毎及びファンクション毎の、ドロアオープン許可時間及びドロアオープン許可回数は、所定のテーブルに格納されて基準情報記憶部131に予め記憶されている。なお、以下、このような所定のテーブルを、「ドロア開閉管理テーブル」と呼ぶ。
【0053】
図8は、ドロア開閉管理テーブルの構造例を示す図である。
図8において、所定の行は、所定のオペレータの所定のファンクションが対応しており、「オペレータ」、「ファンクション名称」、「ドロアオープン許可時間」、及び「ドロアオープン許可回数」のデータの集合体として構成される。
所定の行の「オペレータ」及び「ファンクション名称」は、当該行に対応付けられたオペレータの氏及びファンクション名称を示すデータである。「ドロアオープン許可時間」は、当該行に対応付けられたオペレータ及びファンクションの組み合わせについての、ドロアオープン許可時間を示すデータである。「ドロアオープン許可回数」は、当該行に対応付けられたオペレータ及びファンクションの組み合わせについての、ドロアオープン許可回数を示すデータである。
【0054】
なお、図8の一番上の行の「伊藤」及び「現金」の組み合わせ、及び上から10行目の「吉田」及び「現金」の組み合わせについては、ドロアオープン許可回数が最大値である「9999」が設定されている。このように、ドロアオープン許可回数として最大値が設定されていることは、ドロア25の開閉の繰り返し回数に制限がないこと(何回開閉しても異常なドロア操作と判定されないこと)を意味する。同様に、図示はしないが、ドロアオープン許可時間として最大値が設定されていることは、ドロア25の開放の継続時間に制限がないこと(何時間開放しっ放しでも異常なドロア操作と判定されないこと)を意味する。
逆に、所定の行のドロアオープン許可時間又はドロアオープン許可回数として0が設定されている場合は、当該行に対応するオペレータに対して、当該行に対応するファンクションの実行が許可されていないことを意味する。
【0055】
なお、本実施形態では、オペレータは、ログイン操作として、自己に設定されたオペレータコードを入力する。
このオペレータコードをオペレータ毎に管理するファイルもまた、基準情報記憶部131に予め記憶されている。なお、以下、このようなファイルを、「オペレータマスターファイル」と呼ぶ。
【0056】
図9は、オペレータマスターファイルの構造例を示す図である。
図9において、所定の行は、所定のオペレータに対応しており、「オペレータコード」、及び「オペレータ」のデータの集合体として構成される。
所定の行の「オペレータコード」及び「オペレータ」の各々は、当該行に対応付けられたオペレータについての、オペレータコード及び氏の各々を示すデータである。
【0057】
また、本実施形態では、売上データ処理装置10を用いて実行可能なファンクションについての情報が含まれるファイルもまた、基準情報記憶部131に予め記憶されている。なお、以下、このようなファイルを、「ファンクションマスターファイル」と呼ぶ。
【0058】
図10は、ファンクションマスターファイルの構造例を示す図である。
図10において、所定の行は、所定のファンクションに対応しており、「ファンクションコード」、「ファンクション名称」、「ドロア自動オープンフラグ」等のデータの集合体として構成される。
所定の行の「ファンクションコード」及び「ファンクション名称」の各々は、当該行に対応付けられたファンクションについての、ファンクションコード及びファンクション名称の各々を示すデータである。「ドロア自動オープンフラグ」は、当該行に対応付けられたファンクションについて、ドロア25の開放を伴う場合には「1」が設定され、ドロア25の開放を伴わない場合には「0」が設定されるフラグである。
【0059】
図4に戻り、異常検出部123は、操作履歴ファイル(図7参照)から特定されるオペレータ及びファンクションの組み合わせ毎に、取得された標準操作の基準(図8のドロア開閉管理テーブルのドロアオープン許可時間及びドロアオープン許可回数)との差異を求め、所定以上の差異がある場合には、異常なドロア操作として検出する。
なお、異常検出部123による異常なドロア操作の検出の詳細については、図15乃至図19を参照して後述する。
【0060】
異常情報出力制御部104は、異常検出部123により検出された異常なドロア操作を報知するための情報(以下、「異常情報」と呼ぶ)を生成し、出力部37から出力させるように制御する。
例えば、異常情報出力制御部104は、出力部37のうち印刷部24を制御して、図11に示すような異常情報を紙媒体に印刷する。なお、紙媒体に印刷された異常情報を、以下、「ドロアオープン異常レポート」と呼ぶ。
【0061】
図11は、ドロアオープン異常レポートの一例を示す図である。具体的には、図11(a)は、ドロアオープン時間異常レポートの一例を示す図である。図11(b)は、ドロアオープン回数異常レポートの一例を示す図である。
【0062】
図11(a)に示すように、ドロアオープン時間異常レポートには、異常なドロア操作を示すものとしてドロア25の開放時間の異常が検出された場合の各種情報が印字される。具体的には、当該異常が検出された日付及び時刻、当該異常を起こしたオペレータの氏、当該異常の対象となったファンクション名称、当該異常時に入力された金額、及び、当該異常時のドロア25の開放時間(異常時間)が印字される。
【0063】
図11(b)に示すように、ドロアオープン回数異常レポートには、異常なドロア操作を示すものとしてドロア25の開閉回数の異常が検出された場合の各種情報が印字される。具体的には、当該異常が検出された日付及び時刻、当該異常を起こしたオペレータの氏、当該異常の対象となったファンクション名称、及び、当該異常時のドロア25の開閉回数(異常回数)が印字される。
【0064】
次に、図12乃至図19のフローチャートを参照して、図4の機能的構成を有する売上データ処理装置10の各種処理について説明する。
【0065】
図12は、売上データ処理装置10が実行する履歴生成処理のうち、操作履歴ファイルを生成する処理(以下、「操作履歴ファイル生成処理」と呼ぶ)の流れの一例を説明するフローチャートである。
操作履歴ファイル生成処理が実行されると、CPU31において図4の各機能ブロックが機能して、次のような処理が実行される。即ち、以下の各ステップの処理の動作主体は、ハードウェアではCPU31が該当する。ただし、本発明の理解を容易なものとすべく、CPU31において機能する各機能ブロックが動作主体であるものとして、以下の各ステップの処理の説明をする。
【0066】
ステップS1において、主制御部101は、オペレータによるログイン操作がなされたか否かを判定する。
オペレータによるログイン操作がなされていない場合、ステップS1においてNOであると判定されて、処理はステップS1に戻される。即ち、オペレータによるログイン操作がなされるまでの間、ステップS1の判定処理が繰り返し実行される。
その後、オペレータによるログイン操作がなされると、ステップS1においてYESであると判定されて、処理はステップS2に進む。
ステップS2において、主制御部101は、ログイン処理を実行する。
例えば、ログイン操作により入力されたオペレータコードが「0001」であった場合、主制御部101は、「有森」という氏で登録されたオペレータであると認識し(図9参照)、当該オペレータのログインを許可する。
【0067】
ステップS3において、操作履歴情報生成部111は、ファンクションキー22が押下操作されたか否かを判定する。
ファンクションキー22が押下操作されていない場合、ステップS3においてNOであると判定されて、処理はステップS6に進む。
ステップS6において、主制御部101は、売上データ処理装置10の電源がオフ状態であるか否かを判定する。
電源がオン状態の場合には、ステップS6においてNOであると判定されて、処理はステップS3に戻され、それ以降の処理が繰り返される。即ち、電源がオン状態の場合であって、ファンクションキー22が押下操作されていない場合には、ステップS3(NO)及びステップS6(NO)のループ処理が繰り返され、操作履歴ファイル生成処理は待機状態となる。
この間に、電源がオフ状態になると、ステップS6においてYESであると判定されて、操作履歴ファイル生成処理は終了となる。
一方で、この間に、電源がオン状態を維持したまま、ファンクションキー22が押下操作された場合には、ステップS3においてYESであると判定されて、処理はステップS4に進む。
【0068】
ステップS4において、操作履歴情報生成部111は、操作履歴情報を取得して、操作履歴情報ファイル(図5参照)に記憶する。
具体的には、操作履歴情報生成部111は、オペレータがファンクションキー22を押下操作した日時、ファンクションキー22のうち押下操作されたキーに対応するファンクションについてのファンクションコード及び名称、ドロア自動オープンフラグ、オペレータの氏、並びに入力された金額を、操作履歴情報として取得して操作履歴情報ファイルに記憶する。
【0069】
ステップS5において、主制御部101は、ファンクションキー22のうち押下操作に対応するファンクションの処理を実行する。なお、主制御部101は、当該ファンクションがドロア25の開放を伴う種類の場合、即ちドロア自動オープンフラグが「1」の場合、ドロア制御部38を介してドロア25を開ける。
なお、一旦開けられたドロア25は、オペレータの手動操作により閉められる。
その後、処理はステップS3に戻され、それ以降の処理が繰り返される。
即ち、オペレータによりファンクションキー22の押下操作がなされる毎に、ステップS3(YES)、ステップS4、及びS5のループ処理が繰り返し実行され、その都度取得された操作履歴情報が、操作履歴情報ファイルに追記(記憶)されていく。
その後、電源がオフ状態になると、操作履歴ファイルが終了となる。
【0070】
なお、この間、開閉履歴情報生成部112は、センサ部39によりドロア25の開閉が検出される毎に、ドロア開閉履歴情報を生成してドロア開閉履歴ファイルに記憶する(図6参照)。
【0071】
次に、図13を参照して、ドロア異常検出処理について説明する。
図13は、ドロア異常検出処理の流れの一例を説明するフローチャートである。
ドロア異常検出処理は、例えば、一日の営業が終了し、店長等がオペレータとして売上データ処理装置10にログインした後、売上データ処理装置10による精算処理の実行中に開始される。
ドロア異常検出処理が実行されると、CPU31において図4の各機能ブロックが機能して、次のような処理が実行される。即ち、以下の各ステップの処理の動作主体は、ハードウェアではCPU31が該当する。ただし、本発明の理解を容易なものとすべく、CPU31において機能する各機能ブロックが動作主体であるものとして、以下の各ステップの処理の説明をする。
【0072】
ステップS21において、基準情報取得部122は、ドロア開閉管理テーブル(図8参照)を基準情報記憶部131から読み込む。
【0073】
ステップS22において、履歴情報取得部121は、中間マージファイルを作成する処理(以下、「中間マージファイル作成処理」と呼ぶ)を実行する。中間マージファイル作成処理の詳細については、図14を参照して後述する。
【0074】
ステップS23において、異常検出部123は、ドロアオープン異常時間を検出する処理(以下、「ドロアオープン異常時間検出処理」と呼ぶ)を実行する。ドロアオープン異常時間検出処理の詳細については、図15乃至図17を参照して後述する。
【0075】
ステップS24において、異常検出部123は、ドロアオープン異常回数を検出する処理(以下、「ドロアオープン異常回数検出処理」と呼ぶ)を実行する。ドロアオープン異常回数検出処理の詳細については、図18及び図19を参照して後述する。
【0076】
ステップS25において、主制御部101は、操作履歴情報及びドロア開閉履歴情報を消去する。
これにより、ドロア異常検出処理は終了する。
【0077】
次に、図14を参照して、中間マージファイル作成処理について説明する。
図14は、図13のドロア異常検出処理のうちステップS22の中間マージファイル作成処理の詳細な流れの一例を説明するフローチャートである。
【0078】
ステップS41において、履歴情報取得部121は、操作履歴情報記憶部132に記憶されている操作履歴ファイルから、ドロア25の開放を伴うファンクションのレコード(操作履歴情報)のみを読み込む。
具体的には、履歴情報取得部121は、操作履歴ファイルに含まれる操作履歴情報の中から、ドロア自動オープンフラグが「1」の操作履歴情報(レコード)のみを読み込む。
図5の例を参照すると、「釣銭準備」、「現金」、「両替」のファンクションのそれぞれの操作履歴情報(レコード)が読み込まれる。
【0079】
ステップS42において、履歴情報取得部121は、読み込んだレコード(操作履歴情報)を統合履歴情報記憶部134の中間マージファイルに取り込む。
【0080】
ステップS43において、履歴情報取得部121は、開閉履歴情報記憶部133に記憶されたドロア開閉履歴ファイルのレコード(ドロア開閉履歴情報)を全件読み込む。図6の例を参照すると、8行分の全てのドロア開閉履歴情報(レコード)が読み込まれる。
【0081】
ステップS44において、履歴情報取得部121は、取得したレコードを統合履歴情報記憶部134の中間マージファイルに取り込む。
【0082】
ステップS45において、履歴情報取得部121は、統合履歴情報記憶部134の中間マージファイルのレコード(ドロア25の開放を伴う操作履歴情報及びドロア開閉履歴情報)を時系列に並び替える。これにより、例えば図7(a)に示す中間マージファイルが作成される。
【0083】
ステップS46において、統合履歴情報生成部135は、ステップS45の処理で並び替えた中間マージファイル(図7(a)参照)を統合履歴情報記憶部134に記憶する。
これにより、中間マージファイル作成処理は終了する。その後、処理は図13のステップS23のドロアオープン異常検出処理に進む。
【0084】
そこで、図15及び図16を参照して、ドロアオープン異常時間検出処理について説明する。
図15及び図16は、図13のドロア異常検出処理のうちステップS23のドロアオープン異常時間検出処理の詳細な流れの一例を説明するフローチャートである。
【0085】
ステップS60において、異常検出部123は、中間マージファイルの先頭の行にポインタを配置する。ポインタは、読み込み対象の行(レコード)を示すものであるものとする。
ステップS61において、異常検出部123は、異常時間検出回数iを0に初期設定する。異常時間検出回数iについては、後述する。
【0086】
ステップS62において、異常検出部123は、中間マージファイルにおいてポインタの示す位置にレコードが存在するか否かを判定する。
レコードが存在しない場合には、ステップS62においてNOであると判定されて、処理はステップS76に進む。ただし、ステップS76以降の処理については後述する。
これに対して、レコードが存在する場合には、ステップS62においてYESであると判定されて、処理はステップS63に進む。
ステップS63において、異常検出部123は、ポインタが指し示すレコードを中間マージファイルから読み込む。
具体的には例えば、図7(a)の中間マージファイルにおいて、上から4行目の位置にポイントが配置されているものとする。この場合、異常検出部123は、4行目のレコード、即ち、「現金」のファンクションでオペレータが「伊藤」の組み合わせのレコードを読み込む。
【0087】
図16のステップS64において、異常検出部123は、読み込んだレコードがファンクションのレコードか否かを判定する。
読み込んだレコードが、元々ドロア開閉履歴ファイルのレコードであった場合には、ドロア25の開閉を示すレコード(オープン又はクローズのレコード)であるため、ステップS64においてNOであると判定されて、処理はステップS75に進む。ただし、ステップS75以降の処理については後述する。
これに対して、読み込んだレコードが、元々操作履歴ファイルのレコードであった場合には、ファンクションのレコードであるため、ステップS64においてYESであると判定されて、処理はステップS65に進む。上述の例、即ち図7(a)の中間マージファイルの4行目のレコードが読み込まれた例では、「現金」のファンクションのレコードであるため、ステップS64においてYESであると判定されて、処理はステップS65に進む。
【0088】
ステップS65において、異常検出部123は、ステップS63の処理で読み込んだレコードに対応するオペレータ及びファンクションについての、ドロアオープン許可時間をドロア開閉管理テーブルから探索する。
なお、このようなステップS65の一連の処理を、以下、「許可時間探索処理」と呼ぶ。許可時間探索処理の詳細については、図17を参照して後述する。
例えば上述の例、即ち図7(a)の中間マージファイルの4行目のレコードが読み込まれた例では、「現金」のファンクションとオペレータが「伊藤」という組み合わせのため、図8のドロア開閉管理テーブルの1行目から、ドロアオープン許可時間が30秒であることが探索される。
【0089】
ステップS66において、異常検出部123は、ドロアオープン許可時間が最大値か否かを判定する。
ドロアオープン許可時間が最大値であることは、ステップS63の処理で読み込んだレコードに対応するオペレータ及びファンクションの組み合わせについては、ドロア25の開放時間に制限がないことを意味する。このような場合には、ステップS66においてYESであると判定されて、処理は図15のステップS75に進む。ただし、ステップS75以降の処理については後述する。
これに対して、ドロアオープン許可時間が最大値でない場合には、ステップS66においてNOであると判定されて、処理はステップS67に進む。例えば上述の例、即ち図8のドロア開閉管理テーブルの1行目から、ドロアオープン許可時間が30秒であることが探索された例では、ステップS66においてNOであると判定されて、処理はステップS67に進む。
【0090】
ステップS67において、異常検出部123は、中間マージファイルにおけるポインタを1レコード分進める。上述の例では、即ち図7(a)の中間マージファイルの4行目にポインタが設定されていた例では、5行目にポインタが移行する。
【0091】
ステップS68において、異常検出部123は、中間マージファイルにおいてポインタの示す位置にレコードが存在するか否かを判定する。
レコードが存在しない場合には、ステップS68においてNOであると判定されて、処理は図15のステップS76に進む。ただし、ステップS76以降の処理については後述する。
これに対して、レコードが存在する場合には、ステップS68においてYESであると判定されて、処理はステップS69に進む。
ステップS69において、異常検出部123は、読み込んだレコードがクローズのレコードか否かを判定する。
読み込んだレコードが、元々ドロア開閉履歴ファイルのオープンのレコード(ドロア25の開を示すレコード)であるか又は元々操作履歴ファイルのレコードであった場合には、ステップS69においてNOであると判定されて、処理はステップS77に進む。上述の例では、即ち図7(a)の中間マージファイルの5行目にポインタが移行した例では、5行目のレコードはオープンのレコードであるので、ステップS69においてNOであると判定されて、処理はステップS77に進む。
【0092】
ステップS77において、異常検出部123は、読み込んだレコードがファンクションのレコードか否かを判定する。
読み込んだレコードが、ファンクションのレコードであった場合には、ステップS77においてYESであると判定されて、処理はステップS78に進む。ただし、ステップS78以降の処理は後述する。
これに対して、読み込んだレコードが、クローズのレコードでもなく(ステップS69においてNOであると判定済み)、ファンクションのレコードでもなかった場合には、即ちオープンのレコードであった場合には、ステップS77においてNOであると判定されて、処理はステップS67に戻され、それ以降の処理が繰り返される。
上述の例では、即ち図7(a)の中間マージファイルの5行目にポインタが移行した例では、5行目のレコードはオープンのレコードであるので、ステップS77においてNOであると判定されて、処理はステップS67に戻される。この場合、図7(a)の中間マージファイルの6行目にポインタが移行し(ステップS67)、レコードが存在するが(ステップS68YES)、「現金」のファンクションのレコードであるので、ステップS77においてYESであると判定されて、処理はステップS78に進む。
【0093】
ステップS78において、異常検出部123は、前ファンクションと現ファンクションとの各レコードの時刻の差が、ドロアオープン許可時間を超えているか否かを判定する。
即ち、ステップS78の判定処理は、前ファンクションから、ドロア25が閉まらずに(ステップS69NO参照)開放状態を維持したまま、現ファンクションが実行されたものと把握することできる。従って、前ファンクションと現ファンクションとの各レコードの時刻の差が、ドロア25の開放状態の維持時間を示している。このドロア25の開放状態の維持時間が、ドロアオープン許可時間を超えているか否かが判定される。
【0094】
ドロア25の開放状態の維持時間がドロアオープン許可時間を超えていない場合、ドロアオープン異常時間が発生していないので、ステップS78においてNOであると判定されて、処理はステップS65に戻され、それ以降の処理が繰り返される。即ち、現ファンクションについてのドロアオープン許可時間が探索され、当該ドロアオープン許可時間に基づいて、ドロアオープン異常時間の有無が検出される。
【0095】
これに対して、ドロア25の開放状態の維持時間がドロアオープン許可時間を超えている場合、ドロアオープン異常時間が発生していることになるので、ステップS78においてYESであると判定されて、処理はステップS79に進む。
ステップS79において、異常検出部123は、異常時間検出回数iを1だけインクリメントする(i=i+1)。
ステップS80において、異常検出部123は、異常時間検出回数iが1であるか否かを判定する。
異常時間検出回数iが1である場合とは、ドロアオープン異常時間の検出が初回であることを意味する。このように異常時間検出回数iが1である場合には、ステップS80においてYESであると判定されて、処理はステップS81に進む。ステップS81において、異常情報出力制御部104は、印刷部24を制御して、検出されたドロアオープン異常時間をヘッダとともに印字する。即ち、ドロアオープン異常時間の検出が初回の場合には、初回に検出されたドロアオープン異常時間のみならず、ヘッダも印字される。
【0096】
上述の例では、即ち図7(a)の中間マージファイルの4行目から6行目にポインタが移行した例では、前ファンクションと現ファンクションのレコードの時刻差は1分(09:22:02.11−209:21:02.112)になる。一方で、ドロアオープン許可時間は30秒である。従って、ドロアオープン異常時間が発生していることになるので、それが検出されて、ステップS78においてYESであると判定されて、処理はステップS79に進む。
そして、ステップS79において異常時間検出回数iが0から1に更新され、ステップS80においてYESであると判定されて、ステップS81の処理で、図11(a)に示すように、「ドロアオープン時間異常レポート」というヘッダとともに、「2011/3/12 09:21 伊藤 現金 ・・・60秒」というドロアオープン異常時間が印字される。
【0097】
これに対して、異常時間検出回数iが1でない場合には、ドロアオープン異常時間の検出が2回目以降であることを意味する。従って、このような場合には、ステップS80においてNOであると判定されて、処理はステップS82に進む。ステップS82において、異常情報出力制御部104は、印刷部24を制御して、検出されたドロアオープン異常時間を印字する。即ち、ドロアオープン異常時間の検出が2回目以降の場合には、ヘッダの印字は不要であるので、検出されたドロアオープン異常時間のみが印字される。
【0098】
以上、中間マージファイルの時系列に並ぶレコードが、2つのファンクションの間に、クローズのレコードを挟まないパターンについての一連の処理について説明した。
次に、中間マージファイルの時系列に並ぶレコードが、2つのファンクションの間に、クローズのレコードを挟むパターンについての一連の処理について説明する。ただし、ステップS69に進むまでの処理は同様であるので、それらの説明は省略する。
【0099】
ポインタが進んでクローズのレコードを指し示すようになると、ステップS69においてYESであると判定されて、処理はステップS70に進む。
【0100】
ステップS70において、異常検出部123は、ファンクションとクローズとの各レコードの時刻の差が、ドロアオープン許可時間を超えているか否かを判定する。
即ち、ファンクションとクローズの時刻の差とは、ドロア25の開放状態の維持時間を示している。ステップS70の判定処理では、このドロア25の開放状態の維持時間が、ドロアオープン許可時間を超えているか否かが判定される。
【0101】
ドロア25の開放状態の維持時間がドロアオープン許可時間を超えていない場合、ドロアオープン異常時間が発生していないので、ステップS70においてNOであると判定されて、処理は図15のステップS75に進む。
ステップS75において、異常検出部123は、中間マージファイルにおけるポインタを1レコード分進め、処理をステップS62に戻し、それ以降の処理を繰り返す。
【0102】
これに対して、ドロア25の開放状態の維持時間がドロアオープン許可時間を超えている場合、ドロアオープン異常時間が発生していることになるので、ステップS70においてYESであると判定されて、処理はステップS71に進む。
なお、ステップS71乃至S74の各々の処理は、上述したステップS79乃至S82の各々の処理と同様であるため、ここではその説明は省略する。
【0103】
以上の処理が繰り返し実行されると、ポインタが進んでいき、中間マージファイルにおける最後のレコードの次(最後尾)に移行する。このような場合には、図15のステップS62においてNOであると判定されて、処理はステップS76に進む。
ステップS76において、主制御部101は、中間マージファイルを削除する。
これにより、ドロアオープン異常時間検出処理は終了となる。
【0104】
ここで、図17を参照して、図16のステップS65の許可時間探索処理について説明する。
図17は、図16のステップS65の許可時間探索処理の詳細な流れを説明するフローチャートである。
許可時間探索処理は、中間マージファイルからファンクションのレコードが読み込まれた場合に実行される(図15のステップS63及び図16のステップS64でYES)。
【0105】
ステップS101において、異常検出部123は、最大値をドロアオープン許可時間に設定する。即ち、最大値が初期設定値になる。
ステップS102において、異常検出部123は、基準情報記憶部131に記憶されたドロア開閉管理テーブルの先頭にポインタを配置する。
【0106】
ステップS103において、異常検出部123は、ポインタの指し示す位置にレコードが存在するか否か判定する。
レコードが存在する場合は、ステップS103においてYESであると判定されて、処理はステップS104に進む。ステップS104において、異常検出部123は、ドロア開閉管理テーブルにおけるポインタが指し示す位置のレコードを読み込む。
【0107】
ステップS105において、異常検出部123は、ステップS63の処理で中間マージンファイルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせと、ステップS104の処理でドロア開閉管理テーブルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせが一致するか否かを判定する。
【0108】
一致しない場合には、ステップS104の処理で読み込まれたレコードには、目的のドロアオープン許可時間が含まれていないので、ステップS105においてNOであると判定されて、処理はステップS106に進む。
ステップS106において、異常検出部123は、ポインタの位置を1レコード分進める。その後、処理はステップS103に戻され、それ以降の処理が繰り返される。
即ち、ステップS103(YES),S104,S105(NO),S106のループ処理が繰り返され、ポインタが順次移行していく。
そして、ステップS63の処理で中間マージンファイルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせと、ステップS104の処理でドロア開閉管理テーブルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせが一致した場合には、ステップS105においてYESであると判定されて、処理はステップS107に進む。
【0109】
ステップS107において、異常検出部123は、ステップS104の処理でドロア開閉管理テーブルから読み込んだレコードにおいて、オペレータに割り当てられたドロアオープン許可時間を設定する。これにより許可時間探索処理は終了となる。
なお、上述のループ処理が繰り返している最中に、ポインタが最後まで移行して、読み出し可能なレコードが存在しなくなった場合にも、ステップS103においてNOであると判定されて、許可時間探索処理は終了となる。
許可時間探索処理が終了すると、即ち、図16のドロアオープン異常時間検出処理のステップS65の処理が終了すると、処理はステップS66に進む。
【0110】
以上、図13のドロア異常検出処理のうち、ステップS23のドロアオープン異常時間検出処理について説明した。
このようなドロアオープン異常回数検出処理が終了すると、処理は図13のステップS24のドロアオープン異常回数検出処理に進む。
【0111】
そこで、図18を参照して、ドロアオープン異常回数検出処理について説明する。
図18は、図13のドロア異常検出処理のうちステップS24のドロアオープン異常回数検出処理の詳細な流れの一例を説明するフローチャートである。
【0112】
ステップS121において、履歴情報取得部121は、操作履歴情報記憶部132に記憶された操作履歴ファイルのレコード(操作履歴情報)をオペレータ別に読み込む。
ステップS122において、履歴情報取得部121は、ファンクション別にレコード件数を集計する。
ステップS123において、履歴情報取得部121は、集計したオペレータ別ファンクション別レコード件数を、回数集計ファイル(図7(b)参照)として統合履歴情報記憶部134に保存する。
【0113】
ステップS124において、異常検出部123は、回収集計ファイルの先頭にポインタを配置する。
ステップS125において、異常検出部123は、異常回数検出回数jを0に設定する。
【0114】
ステップS126において、異常検出部123は、回数集計ファイルにおいてポインタの示す位置にレコードが存在するか否かを判定する。
レコードが存在しない場合には、ステップS126においてNOであると判定されて、処理はステップS136に進む。ただし、ステップS136以降の処理については後述する。
これに対して、レコードが存在する場合には、ステップS126においてYESであると判定されて、処理はステップS127に進む。
ステップS127において、異常検出部123は、ポインタが指し示すレコードを回数集計ファイルから読み込む。
具体的には例えば、図7(b)の回数集計ファイルにおいて、上から1行目の位置にポイントが配置されているものとする。この場合、異常検出部123は、1行目のレコード、即ち、「両替」のファンクションでオペレータが「伊藤」についての、ドロア25の開閉の発生回数は「15回」であることを示すレコードを読み込む。
【0115】
ステップS128において、異常検出部123は、ステップS127の処理で読み込んだレコードに対応するオペレータ及びファンクションについての、ドロアオープン許可回数をドロア開閉管理テーブルから探索する。
なお、このようなステップS128の一連の処理を、以下、「許可回数探索処理」と呼ぶ。許可回数探索処理の詳細については、図19を参照して後述する。
例えば上述の例、即ち図7(b)の集計回数ファイルの1行目のレコードが読み込まれた例では、「両替」のファンクションとオペレータが「伊藤」という組み合わせのため、図8のドロア開閉管理テーブルの3行目から、ドロアオープン許可回数が10回であることが探索される。
【0116】
ステップS129において、異常検出部123は、ドロアオープン許可回数が最大値か否かを判定する。
【0117】
ドロアオープン許可回数が最大値であることは、ステップS127の処理で読み込んだレコードに対応するオペレータ及びファンクションの組み合わせについては、ドロア25の開閉回数に制限がないことを意味する。このような場合には、ステップS129においてYESであると判定されて、処理はステップS135に進む。
ステップS135において、異常検出部123は、ポインタを1レコード分進める。その後、処理はステップS126に戻され、それ以降の処理が繰り返される。
【0118】
これに対して、ドロアオープン許可時間が最大値でない場合には、ステップS129においてNOであると判定されて、処理はステップS130に進む。
【0119】
ステップS130において、異常検出部123は、レコードの発生回数がドロアオープン許可回数を超えているか否かを判定する。
レコードの発生回数がドロアオープン許可回数を超えていない場合、ドロアオープン異常回数が発生していないので、ステップS130においてNOであると判定されて、処理はステップS135に戻され、それ以降の処理が繰り返される。
【0120】
これに対して、レコードの発生回数がドロアオープン許可回数を超えている場合、ドロアオープン異常回数が発生していることになるので、ステップS130においてYESであると判定されて、処理はステップS131に進む。
ステップS131において、異常検出部123は、異常回数検出回数jを1だけインクリメントする(j=j+1)。
ステップS132において、異常検出部123は、異常回数検出回数jが1であるか否かを判定する。
異常回数検出回数jが1である場合とは、ドロアオープン異常回数の検出が初回であることを意味する。このように異常回数検出回数jが1である場合には、ステップS132においてYESであると判定されて、処理はステップS133に進む。
ステップS133において、異常情報出力制御部104は、印刷部24を制御して、検出されたドロアオープン異常回数をヘッダとともに印字する。即ち、ドロアオープン異常回数の検出が初回の場合には、初回に検出されたドロアオープン異常回数のみならず、ヘッダも印字される。
【0121】
上述の例では、即ち図7(b)の集計回数ファイルの1行目にポインタがある例では、レコードの発生回数は15回になる。一方で、ドロアオープン許可回数は10回である。従って、ドロアオープン異常回数が発生していることになるので、それが検出されて、ステップS130においてYESであると判定されて、処理はステップS131に進む。
そして、ステップS131において異常回数検出回数jが0から1に更新され、ステップS132においてYESであると判定されて、ステップS133の処理で、図11(b)に示すように、「ドロアオープン回数異常レポート」というヘッダとともに、「2011/3/12 伊藤 両替 15」というドロアオープン異常回数が印字される。
【0122】
これに対して、異常回数検出回数jが1でない場合には、ドロアオープン異常回数の検出が2回目以降であることを意味する。従って、このような場合には、ステップS132においてNOであると判定されて、処理はステップS134に進む。ステップS134において、異常情報出力制御部104は、印刷部24を制御して、検出されたドロアオープン異常回数を印字する。即ち、ドロアオープン異常回数の検出が2回目以降の場合には、ヘッダの印字は不要であるので、検出されたドロアオープン異常回数のみが印字される。
【0123】
以上の処理が繰り返し実行されると、ポインタが進んでいき、回数集計ファイルにおける最後のレコードの次(最後尾)に移行する。このような場合には、ステップS126においてNOであると判定されて、処理はステップS136に進む。
ステップS136において、主制御部101は、回数集計ファイルを削除する。
これにより、ドロアオープン異常回数検出処理は終了となる。
【0124】
ここで、図19を参照して、図18のステップS128の許可回数探索処理について説明する。
図19は、図18のステップS128の許可回数探索処理の詳細な流れを説明するフローチャートである。
許可回数探索処理は、回数集計ファイルからレコードが読み込まれた場合に実行される(ステップS127参照)。
【0125】
ステップS151において、異常検出部123は、最大値をドロアオープン許可回数に設定する。即ち、最大値が初期設定値になる。
ステップS152において、異常検出部123は、基準情報記憶部131に記憶されたドロア開閉管理テーブルの先頭にポインタを配置する。
【0126】
ステップS153において、異常検出部123は、ポインタの指し示す位置にレコードが存在するか否か判定する。
レコードが存在する場合は、ステップS153においてYESであると判定されて、処理はステップS154に進む。ステップS154において、異常検出部123は、ドロア開閉管理テーブルにおけるポインタが指し示す位置のレコードを読み込む。
【0127】
ステップS155において、異常検出部123は、ステップS127の処理で回数集計ファイルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせと、ステップS154の処理でドロア開閉管理テーブルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせが一致するか否かを判定する。
【0128】
一致しない場合には、ステップS154の処理で読み込まれたレコードには、目的のドロアオープン許可回数が含まれていないので、ステップS155においてNOであると判定されて、処理はステップS156に進む。
ステップS156において、異常検出部123は、ポインタの位置を1レコード分進める。その後、処理はステップS153に戻され、それ以降の処理が繰り返される。
即ち、ステップS153(YES),S154,S155(NO),S156のループ処理が繰り返され、ポインタが順次移行していく。
そして、ステップS155の処理で集計回数ファイルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせと、ステップS154の処理でドロア開閉管理テーブルから読み込んだレコードにおけるオペレータとファンクションとの組み合わせが一致した場合には、ステップS155においてYESであると判定されて、処理はステップS157に進む。
【0129】
ステップS157において、異常検出部123は、ステップS154の処理でドロア開閉管理テーブルから読み込んだレコードにおいて、オペレータに割り当てられたドロアオープン許可回数を設定する。これにより許可回数探索処理は終了となる。
なお、上述のループ処理が繰り返している最中に、ポインタが最後まで移行して、読み出し可能なレコードが存在しなくなった場合にも、ステップS153においてNOであると判定されて、許可回数探索処理は終了となる。
許可回数探索処理が終了すると、即ち、図18のドロアオープン異常回数検出処理のステップS128の処理が終了すると、処理はステップS129に進む。
【0130】
以上説明したように、売上データ処理装置10は、「現金」、「釣銭準備」、「両替」等、客から受け取った代金をドロア25に収納したり、客に渡す釣銭をドロア25から引き出す必要のあるファンクションが実行されると、ドロア25を自動的に開放する。ただし、開放されたドロア25は、自動的に閉じずに、オペレータの手動操作により閉じられる。
【0131】
このようなファンクションに伴うドロア25の開閉は短時間であり、開閉回数も頻繁でないことから、ドロア25の開放時間が長時間であった場合や、ドロア25の開閉回数が多数回であった場合には、ドロア25から不正に現金が引き出された疑いがある。
そこで、オペレータ毎かつファンクション毎に要する、ドロア25の標準的開放時間(ドロアオープン許可時間)及び標準的開閉回数(ドロアオープン許可回数)が予め設定されている。売上データ処理装置10は、このドロア25の標準的な開放時間及び標準的な開閉回数の各々と、オペレータが実際にファンクションを実行した場合の操作履歴である開放時間及び開閉回数の各々とを比較して、その比較の結果に基づいて、ドロア25から不正に現金が引き出された疑いがある操作履歴を、異常なドロア操作として検出する。
【0132】
具体的には、オペレータによる操作を受けてドロア25を開放させる売上データ処理装置10に対して、ドロア25から不正に現金が引き出された疑いがある操作を、異常なドロア操作として検出するドロア異常検出装置が、売上データ処理装置10に内蔵されている。
このドロア異常検出装置は、履歴情報取得部121と、基準情報取得部122と、異常検出部123と、を備えている。
履歴情報取得部121は、売上データ処理装置10に対する各操作(各ファンクション)の履歴を取得する。
基準情報取得部122は、ドロア25を開放させる操作毎(ファンクション毎)に予め設定された標準操作の基準(ドロアオープン許可時間及びドロアオープン許可回数)のうち、履歴から特定される操作についての標準操作の基準を取得する。
異常検出部123は、履歴から特定される操作毎に、基準情報取得部122により取得された標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する。
このようにして、ドロア25から不正に現金が引き出された疑いのある売上データ処理装置10の操作履歴を、ドロア25の異常操作として適切に、かつ高精度で、効率的に検出することが可能になる。
【0133】
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の目的を達成できる範囲での変形、改良等は本発明に含まれるものである。
【0134】
例えば本実施形態では、売上データ処理装置の各機能は、本実施形態では1の筺体に収められていたが、特にこの必要はなく、分散させてもよい。
特に、基準情報記憶部131乃至統合履歴情報記憶部134の少なくとも一部は、売上データ処理装置10の記憶部40に設ける必要は特になく、売上データ処理装置10の外部の装置(サーバ等)に設けるようにしてもよい。
【0135】
また、基準情報記憶部131にドロアオープン許可時間、ドロアオープン許可回数が存在しない場合は、基準情報記憶部131のオペレータ毎、ファンクション毎の操作履歴情報から、過去の平均的なドロア25の開放時間及びドロア25の開閉回数を算出し、ドロアオープン許可時間、ドロアオープン許可回数として取得するようにしてもよい。
上述の実施形態では、本発明が適用される売上データ処理装置10を例として説明したが、特にこれに限定されない。例えば、本発明は、ドロア25を有する電子機器一般に適用することができる。
【0136】
上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。
換言すると、図3の機能的構成は例示に過ぎず、特に限定されない。即ち、上述した一連の処理を全体として実行できる機能が備えられていれば足り、この機能を実現するためにどのような機能ブロックを用いるのかは特に図3の例に限定されない。
また、1つの機能ブロックは、ハードウェア単体で構成してもよいし、ソフトウェア単体で構成してもよいし、それらの組み合わせで構成してもよい。
【0137】
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、コンピュータ等にネットワークや記録媒体からインストールされる。
コンピュータは、専用のハードウェアに組み込まれているコンピュータであってもよい。また、コンピュータは、各種のプログラムをインストールすることで、各種の機能を実行することが可能なコンピュータ、例えば汎用のパーソナルコンピュータであってもよい。
【0138】
このようなプログラムを含む記録媒体は、オペレータにプログラムを提供するために装置本体とは別に配布される図3のリムーバブルメディア71により構成されるだけでなく、装置本体に予め組み込まれた状態でオペレータに提供される記録媒体等で構成される。リムーバブルメディア71は、例えば、磁気ディスク(フロッピディスクを含む)、光ディスク、又は光磁気ディスク等により構成される。光ディスクは、例えば、CD−ROM(Compact Disk−Read Only Memory),DVD(Digital Versatile Disk)等により構成される。光磁気ディスクは、MD(Mini−Disk)等により構成される。また、装置本体に予め組み込まれた状態でオペレータに提供される記録媒体は、例えば、プログラムが記録されている図2のROM32や、記憶部40に含まれるハードディスク等で構成される。
【0139】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的或いは個別に実行される処理をも含むものである。
また、本明細書において、システムの用語は、複数の装置や複数の手段等より構成される全体的な装置を意味するものとする。
【0140】
以上、本発明のいくつかの実施形態について説明したが、これらの実施形態は、例示に過ぎず、本発明の技術的範囲を限定するものではない。本発明はその他の様々な実施形態を取ることが可能であり、さらに、本発明の要旨を逸脱しない範囲で、省略や置換等種々の変更を行うことができる。これら実施形態やその変形は、本明細書等に記載された発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0141】
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
[付記1]
オペレータによる操作を受けてドロアを開放させる売上データ処理装置であって、
オペレータによる操作の履歴を取得する履歴取得手段と、
前記ドロアを開放させる操作毎に予め設定された標準操作の基準のうち、前記履歴から特定される操作についての前記標準操作の基準を取得する基準情報取得手段と、
前記履歴から特定される前記操作毎に、前記基準情報取得手段により取得された前記標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する異常検出手段と、
を備えることを特徴とする売上データ処理装置。
[付記2]
前記履歴には、前記売上データ処理装置に対する操作の操作時間を含み、
前記標準操作の基準は、操作毎に設定された標準的操作時間を含み、
前記異常検出手段は、前記履歴から特定される各操作の中に、前記操作時間が前記標準的操作時間より一定以上長い時間を要した操作が存在する場合、異常なドロア操作として検出する、
ことを特徴とする付記1に記載の売上データ処理装置。
[付記3]
前記履歴には、前記オペレータによる操作の操作回数を含み、
前記標準操作の基準は、操作毎に設定された標準的操作回数を含み、
前記異常検出手段は、前記履歴から特定される各操作の中に、前記操作回数が前記標準的操作回数より一定以上多い操作が存在する場合、異常なドロア操作として検出する、
ことを特徴とする付記1又は2に記載の売上データ処理装置。
[付記4]
複数のオペレータのうち所定のオペレータによるログイン操作を受け付け、
前記操作毎に予め設定された前記標準操作の基準は、前記複数のオペレータ毎にそれぞれ設定されており、
前記履歴取得手段は、前記ログイン操作をした前記所定のオペレータによる操作の履歴を取得し、
前記基準情報取得手段は、前記ログイン操作をした前記所定のオペレータについての、前記標準操作の基準を取得し、
前記異常検出手段は、前記ログイン操作をした前記所定のオペレータについて、前記履歴から特定される前記操作毎に前記標準操作の基準との差異を求め、所定以上の差異がある場合には前記ドロアの異常として検出する、
ことを特徴とする付記1乃至3のうち何れか1つに記載の売上データ処理装置。
[付記6]
コンピュータを、
オペレータによる操作を受けてドロアを開放させる売上データ処理装置に対する、オペレータによる操作の履歴を取得する履歴取得手段、
前記ドロアを開放させる操作毎に予め設定された標準操作の基準のうち、前記履歴から特定される操作についての前記標準操作の基準を取得する基準情報取得手段、
前記履歴から特定される前記操作毎に、前記基準情報取得手段により取得された前記標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する異常検出手段、
として機能させることを特徴とするプログラム。
【符号の説明】
【0142】
10・・・売上データ処理装置、21・・・数字キー、22・・・ファンクションキー、23・・・表示部、24・・・印刷部、25・・・ドロア、31・・・CPU、32・・・ROM、33・・・RAM、34・・・バス、35・・・入出力インターフェース、36・・・入力部、37・・・出力部、38・・・ドロア制御部、39・・・センサ部、40・・・記憶部、41・・・通信部、42・・・ドライブ、71・・・リムーバブルメディア、101・・・主制御部、102・・・履歴情報生成部、103・・・ドロア異常検出部、104・・・異常情報出力制御部、111・・・操作履歴情報取得部、112・・・開閉履歴情報生成部、121・・・開閉履歴情報取得部、122・・・基準情報取得部、123・・・異常検出部、131・・・基準情報記憶部、132・・・操作履歴情報記憶部、133・・・開閉履歴情報記憶部、134・・・統合履歴情報取得部
【特許請求の範囲】
【請求項1】
オペレータによる操作を受けてドロアを開放させる売上データ処理装置であって、
オペレータによる操作の履歴を取得する履歴取得手段と、
前記ドロアを開放させる操作毎に予め設定された標準操作の基準のうち、前記履歴から特定される操作についての前記標準操作の基準を取得する基準情報取得手段と、
前記履歴から特定される前記操作毎に、前記基準情報取得手段により取得された前記標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する異常検出手段と、
を備えることを特徴とする売上データ処理装置。
【請求項2】
前記履歴には、前記オペレータによる操作の操作時間を含み、
前記標準操作の基準は、操作毎に設定された標準的操作時間を含み、
前記異常検出手段は、前記履歴から特定される各操作の中に、前記操作時間が前記標準的操作時間より一定以上長い時間を要した操作が存在する場合、異常なドロア操作として検出する、
ことを特徴とする請求項1に記載の売上データ処理装置。
【請求項3】
前記履歴には、前記オペレータによる操作の操作回数を含み、
前記標準操作の基準は、操作毎に設定された標準的操作回数を含み、
前記異常検出手段は、前記履歴から特定される各操作の中に、前記操作回数が前記標準的操作回数より一定以上多い操作が存在する場合、異常なドロア操作として検出する、
ことを特徴とする請求項1又は2に記載の売上データ処理装置。
【請求項4】
複数のオペレータのうち所定のオペレータによるログイン操作を受け付け、
前記操作毎に予め設定された前記標準操作の基準は、前記複数のオペレータ毎にそれぞれ設定されており、
前記履歴取得手段は、前記ログイン操作をした前記所定のオペレータによる操作の履歴を取得し、
前記基準情報取得手段は、前記ログイン操作をした前記所定のオペレータについての、前記標準操作の基準を取得し、
前記異常検出手段は、前記ログイン操作をした前記所定のオペレータについて、前記履歴から特定される前記操作毎に前記標準操作の基準との差異を求め、所定以上の差異がある場合には前記ドロアの異常として検出する、
ことを特徴とする請求項1乃至3のうち何れか1項に記載の売上データ処理装置。
【請求項5】
コンピュータを、
オペレータによる操作を受けてドロアを開放させる売上データ処理装置に対する、オペレータによる操作の履歴を取得する履歴取得手段、
前記ドロアを開放させる操作毎に予め設定された標準操作の基準のうち、前記履歴から特定される操作についての前記標準操作の基準を取得する基準情報取得手段、
前記履歴から特定される前記操作毎に、前記基準情報取得手段により取得された前記標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する異常検出手段、
として機能させることを特徴とするプログラム。
【請求項1】
オペレータによる操作を受けてドロアを開放させる売上データ処理装置であって、
オペレータによる操作の履歴を取得する履歴取得手段と、
前記ドロアを開放させる操作毎に予め設定された標準操作の基準のうち、前記履歴から特定される操作についての前記標準操作の基準を取得する基準情報取得手段と、
前記履歴から特定される前記操作毎に、前記基準情報取得手段により取得された前記標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する異常検出手段と、
を備えることを特徴とする売上データ処理装置。
【請求項2】
前記履歴には、前記オペレータによる操作の操作時間を含み、
前記標準操作の基準は、操作毎に設定された標準的操作時間を含み、
前記異常検出手段は、前記履歴から特定される各操作の中に、前記操作時間が前記標準的操作時間より一定以上長い時間を要した操作が存在する場合、異常なドロア操作として検出する、
ことを特徴とする請求項1に記載の売上データ処理装置。
【請求項3】
前記履歴には、前記オペレータによる操作の操作回数を含み、
前記標準操作の基準は、操作毎に設定された標準的操作回数を含み、
前記異常検出手段は、前記履歴から特定される各操作の中に、前記操作回数が前記標準的操作回数より一定以上多い操作が存在する場合、異常なドロア操作として検出する、
ことを特徴とする請求項1又は2に記載の売上データ処理装置。
【請求項4】
複数のオペレータのうち所定のオペレータによるログイン操作を受け付け、
前記操作毎に予め設定された前記標準操作の基準は、前記複数のオペレータ毎にそれぞれ設定されており、
前記履歴取得手段は、前記ログイン操作をした前記所定のオペレータによる操作の履歴を取得し、
前記基準情報取得手段は、前記ログイン操作をした前記所定のオペレータについての、前記標準操作の基準を取得し、
前記異常検出手段は、前記ログイン操作をした前記所定のオペレータについて、前記履歴から特定される前記操作毎に前記標準操作の基準との差異を求め、所定以上の差異がある場合には前記ドロアの異常として検出する、
ことを特徴とする請求項1乃至3のうち何れか1項に記載の売上データ処理装置。
【請求項5】
コンピュータを、
オペレータによる操作を受けてドロアを開放させる売上データ処理装置に対する、オペレータによる操作の履歴を取得する履歴取得手段、
前記ドロアを開放させる操作毎に予め設定された標準操作の基準のうち、前記履歴から特定される操作についての前記標準操作の基準を取得する基準情報取得手段、
前記履歴から特定される前記操作毎に、前記基準情報取得手段により取得された前記標準操作の基準との差異を求め、所定以上の差異がある場合には異常なドロア操作として検出する異常検出手段、
として機能させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公開番号】特開2013−45243(P2013−45243A)
【公開日】平成25年3月4日(2013.3.4)
【国際特許分類】
【出願番号】特願2011−181800(P2011−181800)
【出願日】平成23年8月23日(2011.8.23)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】
【公開日】平成25年3月4日(2013.3.4)
【国際特許分類】
【出願日】平成23年8月23日(2011.8.23)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】
[ Back to top ]