2

これは、より抽象的なアーキテクチャの問題です。

私は薬局関連の在庫管理システムに取り組んでいます。製品定義(製品タイプ、カテゴリなど)倉庫、発注書、商品受領メモ、販売注文、製品価格などの通常のコンポーネントがすべてあります。

購入ごとに、製品には異なるコスト (購入コスト + 運送費 + 追加コスト) がかかる可能性があり、購入の「バッチ」ごとに販売価格を設定できる必要があります。販売時には、FIFO または LIFO に基づいてバッチを選択できる必要があります (製品定義で構成されます)。

この要件を達成するにはどうすればよいでしょうか? 「価格」の性質は何ですか?このトピックに関する一般的なベスト プラクティスは大歓迎です。

4

1 に答える 1

2

「ベスト」プラクティスが何であるかはわかりませんが、以前にこの種の在庫システムを作成したことがあります。あなたの質問にはほとんど答えがあります-バッチ番号で購入を追跡する必要があります.

したがって、在庫マスターは次のようになります。

Primary_Inventory_Key
Description
LIFO_FIFO_FLAG          // if this is set at the inventory item level
...

そして、Inventory Batch テーブルは次のようになります。

 Primary_Inventory_Key
 Batch #                  // autoincrement
 // maybe PO # or something rather than these fields, depends on rest of schema
 Purchase Date            //
 Purchase Price           //
 Purchase Qty             // quantity originally purchased 
 VendorID                 

 InventoryLevel           // quantity remaining from this batch
 ...

 PRIMARYKEY(Primary_Inventory_Key,Batch#)

次に、販売に行くときは、次のようにします。

SELECT MAX(Batch#) WHERE InventoryKey = 'Mykey' AND InventoryLevel > 0

LIFO および:

SELECT MIN(Batch#) WHERE InventoryKey = 'Mykey' AND InventoryLevel > 0

FIFO用。

リストをプルアップして、ユーザーがこのスキーマでバッチを選択できるようにすることもできます。

トランザクションがコミットされたら、在庫レベルを減らすことを忘れないでください。

于 2012-10-19T21:03:27.277 に答える