簡體   English   中英

庫存管理:如何處理數據庫中已售出的庫存單位?

[英]Inventory Management: How do I handle sold inventory units in the database?

我賣酒。 所以我有一個瓶子的清單。 到目前為止,我有一個“InventoryUnit”模型,它引用了product和line_item。

  1. 應該將每個瓶子作為單個InventoryUnit對象存儲在我的數據庫中嗎?

  2. 什么是減少庫存的最佳做法? 如果我賣瓶子,我會銷毀一個InventoryUnit嗎? 或者我應該添加一個可以“出售”或“有庫存”的狀態列?

  3. 我擔心性能,Postgres可以處理數十萬個InventoryUnit對象嗎?

我真的很感激這方面的一些幫助。 對不起,我是一個前端人員,所以我真的很厭倦數據庫建模......

一。 應該將每個瓶子作為單個InventoryUnit對象存儲在我的數據庫中嗎?

如果您可以單獨出售,那么是,否則通過案例/框跟蹤它們。

二。 什么是減少庫存的最佳做法? 如果我賣瓶子,我會銷毀一個InventoryUnit嗎? 或者我應該添加一個可以“出售”或“有庫存”的狀態列?

使用位置和移動的概念(移動應該是它自己的實體)。 例如,OpenERP使用與此類似的“虛擬位置”。

瓶子壞了? 將其從庫存位置移至“已損壞”位置
瓶子不見了? 將其從庫存移至“以太”位置
發現一個隨機的瓶子? 將其從“以太”移至庫存
賣了一瓶? 將其從庫存移至“已售出”
買了一瓶? 將其從購買轉移到庫存

三。 我擔心性能,Postgres可以處理數十萬個InventoryUnit對象嗎?

Postgres可以處理數千億個對象。 正常化。 使用小數據類型。 使用索引。

其他一些要記住的事情:

  • 你可以賣東西,它會被退回,你把它放回庫存中
  • 你可以買東西,但是不對,所以你把它寄回給賣家
  • 你可以出售你不擁有的東西(寄售,或者還沒有庫存)
  • 您可能在庫存中有一些目前尚未出售的商品。

對於會計庫存,您還需要根據免費的FOB狀態計算您負責的入庫和出庫貨物的貨物。

你需要計算原料(DIY釀酒的東西嗎?),如果你制作/組裝任何東西,以及訂購費用等,還在進行中。

寄售商品不計入會計庫存。

您應該在最低可替換級別跟蹤庫存。 換句話說,當你要從架子上挑選一個單元時,為了獲得正確的東西,你需要知道的最具體信息是什么。

在你的例子中,我不能只說,“去拿瓶子”或者你可以帶回酒而不是伏特加酒。 我也不能說,“去拿一瓶伏特加”,因為當我想要Ciroc時你可能會帶回Absolut。 最后,我不能說,“去買一瓶Ciroc”,因為當我想要1.5L尺寸時你可能會帶回1L尺寸。

我可以說“從1.5L Ciroc底殼的前排左側獲得第三瓶”,但這很愚蠢,因為所有1.5L的Ciroc瓶都是一樣的。 (味道不在;))。

甜蜜點成為您的庫存單位(SKU)。 值得慶幸的是,世界上幾乎所有公司都已經為您解決了這個問題。 只需使用條形碼下的UPC編號作為SKU。

基於此,你的模型將是......

InventoryOnHand
- id:int
- product_id:int
- quantity:int

Product
- id:int
- sku:string
- name:string

然后,當貨物進出時,您將增加和減少InventoryOnHand數量。

啊,這是一個難以回答的問題。 沒有正確的方法,雖然不同的模型會根據使用情況產生影響。

如果您正在跟蹤數量較少但信息量較大的庫存(例如飛機和零件),您可能需要為每個項目定義一個條目; 如果你正在模擬大量相同的產品,幾乎沒有身份(就像你的情況似乎),我會專注於庫存狀態。 這一切都取決於你想要追蹤物品生命周期的程度。

問問自己“跟蹤一箱破解者的實例是否值得,或者我可以跟蹤托盤對我現有庫存的影響程度?” 加油站會為每升燃料創造一個入口嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM