POSレジの移行とショッピングサイトの統合 その1

今回、クライアントからの依頼でNCR CounterpointからShopkeepへPOSレジを入れ替え、BigCommerceでショッピング機能を追加し日本語化、更にShopkeepとBigCommerceの統合させるというプロジェクトを行っています。
かなり、複雑なプロセスだったので、忘備録も兼ね、記録に残しておきます。

今回のプロジェクトは大きく3つの作業から成っています。

  1. POSレジの移行
    NCR CounterpointからShopkeepへ
  2. POSレジとEコマースの統合(在庫連動)
    Shopkeep(POSレジ)、BigCommerce(Eコマース)
  3. Eコマースサの日本語化
    BigCommerce + Weglot

それでは今回はPOSレジの移行について解説します。

POSレジの移行 NCR CounterpointからShopkeepへ


NCR Counterpointは多店舗展開、膨大なインベントリに対応した、かなりしっかりとしたPOSレジシステムです。
タッチパネルのWindowsコンピューターで操作するPOSレジシステムで、大手スーパーマーケットなどで稼働しているのをよく目にします。

実に多くの機能を搭載しているのですが、今回のクライアントにとってはそれが仇となり、十分に使いこなせていませんでした。

レポートを出力するのにも、外部サポート会社に依頼する必要があり、そこでかなりのサポート費用が発生していました。

今回のプロジェクトの主な目的は、小規模のPOSレジシステムに移行し、必要最低限の機能にしぼること、サポートコストを圧縮することにありました。

その様な、視点でリサーチした結果、ShopKeepを採用しました。ShopKeepはウェブベースのモダンなPOSレジシステムで、基本iPad上で動作します。
加えて、Backofficeと呼ばれる管理画面が用意されており、ブラウザーで開き、レポートを出力したり、在庫管理をすることが出来ます。

今回のPOSレジの移行はこの両者の設計思想の違いが、作業を大変にしました。

POSレジ移行の手順

POSレジ移行は基本的に、旧レジからCSVファイルを書き出し、それを新レジに読み込む形で行います。
今回は、旧レジ、新レジ側の特性から、以下の様なステップで移行作業を行いました。

  1. CounterpointからのCSVファイルの書き出し、データ解析
  2. リレーショナルデータベースへのCSVファイルの読み込み
  3. データベースよりShopKeep読み込み用CSVファイル制作1
  4. ShopKeepへのCSVファイル読み込み、
    1. Basic Productの登録
    2. オプション行制作
    3. UUID生成
  5. ShopKeepより、インベントリCSVファイル出力
  6. インベントリCSVファイルのデータベースへの読み込み
  7. オプション行にUPC(バーコード)、在庫割り当て
  8. データベースよりShopKeep読み込み用CSVファイル制作2
  9. ShopKeepへのCSVファイル読み込み
    1. オプションへのUPC、在庫アップデート
  10. 移行内容のチェック、修正

Counterpointの特性


Counterpointはデータが複数のSQLデータベースファイルで構成されていました。POSレジ移行に必要なファイルが別れています。
まずは、必要なデータがどのファイルに含まれているか、サイズの大小を判断材料に、必要なファイル判定するところから作業を開始しました。

結果、必要であったファイルは以下の通りです。

  • IM_BARCOD バーコード
  • IM_GRID_DIM_1 オプション1の内容
  • IM_GRID_DIM_2 オプション2の内容
  • IM_GRID_DIM_3 オプション3の内容
  • IM_INV_CELL オプションごとの在庫
  • IM_INV 在庫数
  • IM_ITEM 基本の商品情報、オプション名

各データはITEM_NO、他で、ひも付けされています。

Shopkeepの特性とトラブル

基本商品とオプション

ShopKeepのバルク登録は、2ステップの作業でした。

  1. まず、基本商品とそのオプションを登録する
  2. 次にオプションごとのUPCバーコードと在庫量を更新する

この際、オプションがある商品のUPCバーコードと在庫量はゼロにしておく。

UPCバーコードがあると、ステップ2でUPCバーコードを登録することが出来ません。
在庫量に入っている数字が全てのオプションの在庫量として書き込まれます。

書き込まれた在庫量はステップ2で上書きされないと(元データベース上では存在しなかったオプションの組み合わせ場合など)そのまま残り、在庫量がおかしくなります。

オプションにUPCバーコードと在庫量をアップデート

UPCバーコードの制限

ShopKeepは使用できるバーコードのに対する制限がいささか厳しいです。

ShopKeepで使用できるバーコードは、8、12、13桁のみです。桁数を合わせたバーコードを用意する必要があります。
CountePointでは6桁のバーコードがあったため、末尾に00を追加することで対応しました。

またバーコードは2、4、5で始まることができません。最初に9を追加し、対応しました。

もちろんこの後、新たにバーコードを印刷し、商品に添付する必要がありました。

CSVファイルとエクセルの特性

CSVとエクセルの互換性でもいくつか問題がありました。

0で始まるバーコード

バーコード欄は数値として認識されるため、0で始まるバーコードは最初のゼロが落ちた状態となります。
このままShopKeepに読み込むとバーコードが桁落ちでエラーとなり更新されません。
セルの表示形式をテキストにして、最初の0が落ちない様にしました。

桁数が多いバーコード

CSVをエクセルとして読み込むと、12桁、13桁は電卓で桁数がオーバーした時の様に桁落ちして表示されます。
例えば、818279010060が8.18279E+11と表示されます。
このまま、保存すると、バーコード欄に8.18279E+11と文字列のまま更新しようとしてエラーになることが何度かありました。
セルの表示形式を変え、一旦全桁を表示し、保存することで全ての数字が桁落ちすることなく保存でき、問題なく更新できました。

リンク