Selection for my Life

いま、僕にできること。

システム導入な日々 06 Day

06Day 注文管理システムプログラムの作成

注文管理システムプログラムを作成します。

・手入力で注文を入力できるようにする
CSVデータで届く注文データを取り込めるようにする
基本的には、上記の2大要件を満たすように検討します。

基本的には、アプリ側は Microsoft Access + SQLServer で
バッチ処理系は、 Microsoft Excel VBAマクロ + PHP で構築していきます。 

データベース作成

注文を入れるDBを作成します。詳細は省きますが、基本情報(ヘッダー部分)と明細情報(ボディー部分)、記録部分(ヘッダー部分)を分けて考えていきます。

(※下記はあくまで例です。それぞれの状況で項目は変動します)
■基本情報に入れる項目
  ・注文No
  ・注文日付
  ・出荷日付
  ・出荷希望日
  ・注文をもらった取引先の情報
  ・商品の発送先の情報
決済方法などの情報も考慮する必要があるかもしれません

■明細部分に入れる項目
  ・注文商品
  ・注文数
  ・注文金額
  ・消費全
  ・備考項目

■記録部分に入れる項目
  ・注文状態フラグ
  ・登録日時
  ・登録者
  ・更新日
  ・更新者

注文データ追加処理

CSVデータ取込処理については、PHPでDBへ登録していきます。 手入力はAccessで処理します。
ここで、注意することは、伝票Noなど、レコードを特定する番号を採番するときに、採番ロジック部分で、番号が重複しないように制御することが必要です。DB上で、注文Noをユニークキーに設定して、重複しないようにすることはもちろん、テーブルロック処理や、トランザクション処理を利用して、処理することに注意します。

注文データ変更処理

変更処理はAccessで処理していくように運用するのですが、複数人で同時に同じレコードを編集できないように、レコードロック処理を入れましょう。さらに、変更したログを残しておきましょう。

注文データ削除処理

DBで、いきなりDeleteするのはちょっとキライです。基本的には、状態フラグで管理しておいて、日次処理、または月次処理で、Delete処理をするようにしておきます。うっかり削除のリスクに備えます。また、注文受けて、出荷処理したのに、削除ができてしまうと問題なので、削除できる段階かどうかをちゃんとフラグで管理しましょう。

日次、月次レポート

基本的に、日次や月次の集計を準備しておくとよいと思います。日次注文数のカウントや月次での注文数のカウント、取引先ごとの注文数など分析用レポートが必要になると思います。
あと、日次処理で、売上確定をして、確定したレコードについては、変更削除処理ができないようにロックをする必要があります。

注意:
上記は個人的な見解です。