PawnCounterが質屋POSのあらゆる書き出しデータを読み取る仕組み
質屋のデータは、LeadsOnlineファイル、Visual FoxProテーブル、カリフォルニア州のXML届出書、あるいは誰も見たことのないCSVとして届きます。1つのリーダーですべてを読み込む方法をご紹介します。
質屋の分析で難しいのは分析そのものではありません。店舗ごとに異なるファイルが渡され、オーナーの多くはそれがどの形式か説明できないのです。そこで私たちが最初に定めたのは、 PawnCounterのリーダーについてのルールは、店舗にファイルの種類を尋ねないことでした。ファイルはバイト列から判別します。
形式の判別
判別は、ファイル全体を解析する前に先頭64KBを対象に行います。いくつかのチェックで大半のケースが決まります。
- DBFヘッダーはVisual FoxProテーブルを意味し、 WinPawn はこの形式でデータを保存しています。テーブル名、または列名から、どのテーブルかがわかります:質札、商品、履歴、取り置き。
- XMLのルート要素から、CAPSSが判別されます。CAPSSは カリフォルニア州の届出形式です。LeadsOnlineのチケットWebサービスは別です。
- 列名だけがヘッダーにあるCSV LeadsOnline が使う(チケット種別、チケット番号、顧客名の項目、商品メーカー)形式のCSVは、どのPOSで作成されたものであっても、LeadsOnlineの書き出しです。
- パイプ区切りのテキストファイルで、 Pawn Trackerのレイアウトを持つものは、Pawn Trackerです。
- 火器の製本台帳(取得・処分のCSV)には、独自のシグネチャと専用のリーダーがあります。
これらのルールはそれぞれ、そのシステムの実際のサンプルで検証した署名であるため、判定は決定的で、各分岐にはテストがあります。どれにも一致しない場合、ファイルは汎用リーダーに回されます。
誰も見たことのないCSV
Pawn Wizard、PawnSnap、そして十数個の小規模システムがCSVを出力しますが、列名は一致しません。ベンダーごとのアダプターを作る代わりに、汎用リーダーは列を意味で照合します。大文字と小文字を区別せず、スペース、アンダースコア、ハイフンを無視して比較する長いエイリアス一覧により、どの列が原価か、どれが希望販売価格か、どれが預かり日か、どれが説明かを判断します。商品と原価を記述するファイルは在庫であり、質札を記述するファイルは取引ログです。両方を兼ねるものもあり、その場合は両方が生成されます。判別できない列は致命的エラーではなく無視され、推測した箇所はすべて店舗から見える警告として返されます。事前にそのシステムを知っている必要はありません。そのため 「その他のPOS」ガイドは 形だけの断りではなく、実際に利用できる道筋です。
単一の商品モデル
ソースが何であれ、すべてのレコードは同じ形式に正規化されます。カテゴリ、説明、原価、希望販売価格、預かり日と返済日、そしてそれが属する質入れまたは販売を持つ商品です。ルールは形式が暗黙的に示している情報を補い、回復ステップは同じ商品を異なる形で記述するテーブルを結合します。このステップが必要な理由はWinPawnにあります。実際の販売価格を持つ唯一のテーブルである履歴テーブルは、説明ではなくカテゴリを記録するため、販売された商品はすべて「銃器」や「工具」として届いてしまいます。一方、商品テーブルの同じ商品番号は「Remington 870 散弾銃」と記載しています。商品番号で結合すると販売に説明が戻り、同じ条件同士で比較できるようになります。分析が見るのは常にこの一つのモデルなので、値下げロジックの修正はWinPawnの店舗にもLeadsOnlineの店舗にも同時に適用されます。
読めないものを率直に
Bravoには一括エクスポートがないため、店舗がReport PreviewまたはAd Hoc画面からCSVまたはExcelとして保存したレポートを読み込みます。列の見出しはBravo独自のものを使用します(2026年9月追加)。PawnMasterは本日時点で、こちらが扱えるエクスポートを店舗に提供していません。ごまかすのではなく、 PawnMaster ガイドでそのことを明記し、Bravoへ移行する前にエクスポートすべき内容を説明し、読み込みツールができる日のためにそれらのファイルを保管しておきます。
その結果は、製品が こちらのページで約束している内容そのものです。現在のPOSを維持し、既に出力しているファイルを送るだけで、 Profit X-Ray を取り戻せます。