2011年7月2日星期六

仓库管理模型中采购计划的计算过程

最近帮人做了一个仓库管理的模型,本来是打算用库存表,在入库/出库操作时,同步更新库存表,考虑模型的数据量不是很大,于是采用动态计算的方式来生成采购计划。

在物料表中,有字段记录物料的最低安全库存/最高安全库存,由于时间的关系,设计时并没有真正考虑最高安全库存,特此说明一下。

数据库为MS SQL Server,在2000/2008上测试通过。

为了简化设计难度,增加脚本的可读性,计算过程分成两步,第一步进行汇总:

SELECT     p.ItemRef, p.ItemName, p.Price, p.LowerQTY, p.UpperQTY, p.SecurityQTY, p.UOMs_Ref, ISNULL(o.OutQTY, 0) AS OutQTY, ISNULL(i.InQTY, 0) AS InQTY,
                      ISNULL(i.InQTY, 0) - ISNULL(o.OutQTY, 0) AS BalanceQTY, dbo.UOMs.UOMName
FROM         dbo.Products AS p INNER JOIN
                      dbo.UOMs ON p.UOMs_Ref = dbo.UOMs.Ref LEFT OUTER JOIN
                      dbo.vInQTY AS i ON p.ItemRef = i.ItemRef LEFT OUTER JOIN
                      dbo.vOutQTY AS o ON p.ItemRef = o.ItemRef



第二步根据安全库存设置计算采购计划:


SELECT     dbo.vStockSum.ItemRef, dbo.vStockSum.ItemName, dbo.vStockSum.LowerQTY, dbo.vStockSum.UpperQTY, dbo.vStockSum.SecurityQTY, dbo.vStockSum.BalanceQTY,
                       dbo.vStockSum.BalanceQTY - dbo.vStockSum.LowerQTY AS L, ABS(dbo.vStockSum.BalanceQTY - dbo.vStockSum.LowerQTY) AS PurchasePlan,
                      dbo.vStockSum.UOMs_Ref, dbo.UOMs.UOMName
FROM         dbo.vStockSum INNER JOIN
                      dbo.UOMs ON dbo.vStockSum.UOMs_Ref = dbo.UOMs.Ref
WHERE     (dbo.vStockSum.BalanceQTY - dbo.vStockSum.LowerQTY < 0)

没有评论:

发表评论