库存数据库:合并永久和定期库存系统

Inventory Database: Merging Perpetual and Periodic inventory system

我的客户要求我创建一个库存系统,当然可以每天、每周、每月和每年打印报告。

到目前为止,有了这个描述,我可以做这个系统,输出将是这样的:

-------------------------------
|id|cost|price|quantity|profit|
-------------------------------
|1 | 10 | 12  |  100   | 200  |
-------------------------------

然后我的客户想要有一个开始和结束数量,这应该不是问题,只需添加已售出的商品和剩余商品。但是我的客户希望能够转载过去的数据,比如说5天前的报告。

我的数据库设计是这样的:

tbl_items
------------------------------------------------    
|item_code|item_name|item_cost|item_price|stock|
------------------------------------------------

tbl_sold
-----------------------------------------------------------
|id|item_code|item_cost|item_price|quantity_sold|date_sold|
-----------------------------------------------------------

如何改进我的数据库设计以满足我的客户需求? 我怎样才能使输出像这样:

------------------------------------------------
|id|beginning|cost|price|quantity|ending|profit|
------------------------------------------------

首先,您可以设置一个名为 tbl_item_transactions 的新 table(或用这个替换 tbl_sold)。 tbl_item_transactions 很可能包含以下字段:

  • 编号
  • item_code
  • item_cost
  • item_price
  • transaction_type(如果是销售、交货、处置或任何其他库存移动)
  • transaction_quantity
  • transaction_amount(取决于交易类型,可能是item_price*交易数量,item_cost*交易数量,或交易数量*计算的平均成本,或者可能是零-金额交易)
  • transaction_date

这样您就可以计算所有库存变动,包括它们的影响。然后,您可以根据交易日期和商品代码(或报告要求所需的任何内容)进行查询。