以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  实时库存设计思路  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=160469)

--  作者:朱女士
--  发布时间:2021/2/3 16:49:00
--  实时库存设计思路

老师您好!

      我想设计一个实时库存程序,这个问题困扰了我好久就是没有思路。我的库存数据表由原料期初结转表(ylqcb)和原料入库表(ylrkb),原料出库表(ylckb),然后由这三个表计算库存表。每个表的原料因子比较多比如:原料厂家,原料名称,原料规格:长、宽、厚,原料价格等等,需要实时查询库存。通过什么思路能实时查询到每一个因子的原料库存?

    我现在的计算库存的方法是先通过计算然后再查询,我想输入一笔入库数据就能直接显示库存,或输入一笔出库同样能显示库存。老师您给我指点一条思路即可,谢谢!


--  作者:有点蓝
--  发布时间:2021/2/3 16:59:00
--  
我也不是很懂这方面的业务处理。如果要做查询,可以参考这里的方法做:http://www.foxtable.com/webhelp/topics/1058.htm
--  作者:程兴刚
--  发布时间:2021/2/4 3:46:00
--  
在建立的原材料信息数据表增加一列,库存余额,每次入库,将入库数量累加到对应材料的库存余额,每出库一笔从对应的材料库存余额中减去出库数量,当删除入库明细记录前,先将该行数量从库存中减去,同理,当删除出库明细记录前,也要将该记录加入到库存余额中,道理您想想就明白,实现起来并不难,我就是这么干的!
[此贴子已经被作者于2021/2/5 1:27:27编辑过]

--  作者:lgzhao
--  发布时间:2021/2/5 11:26:00
--  
老程的思路可以,但是如果需要回溯查询历史库存余额的话就会比较麻烦。

我这么干的:

只有一张库存表。期初余额,出入库记录统统记在一起。类似银行流水记录,增加一个数量余额列和价值余额列。

每个ID出入库时,按时间流水排列,需要插入日期时,则同时刷新该日期之后的记录。

这样的好处是,出报表的时候可以随时回溯任何日期的余额,不需要逐个累加计算,很方便。

你那个物料特征比较多那就增加一列,存储所有特征数据的组合(字符串),出入库时这个字符串可以作为StockID来用就可以了。


--  作者:程兴刚
--  发布时间:2021/2/8 2:06:00
--  
库存余额始终截止到当前,查历史库存数量没有太大意义,如果确实要查,没必要单独生成字段来保存截止到操作日期的库存,采用代码自动计算某个开始日期至截止日期(某个时间段)的入库总数减该时间段的出库总数,并生成查询表或报表均可实现一键查询,这就是截止到指定日期的库存数量,没必要让数据库冗余!而且,在系统实际应用中,有可能某几天(某一个时间段没有入库)同理,也可能没有出库,但不等于这几天没有库存数量,按照您的方法,查这几天的库存数量则查不到!而用我的方法,就是一个按钮+几个查询条件控件就可以解决的事!
[此贴子已经被作者于2021/2/8 2:09:54编辑过]

--  作者:lgzhao
--  发布时间:2021/2/8 10:43:00
--  
可能应用方式不同导致思路不同。我的库存系统和财务系统是一体的,查询历史余额(各品种的数量和当时库存价值)那是财务的家常便饭。每月报表都要随时可以查询的。
老程算法可以行得通,但是出报表时计算量相对比较大,数据大了速度会下降。我的方法是用空间换时间,增加的空间也不大。

库存余额是通过查询指定之日和该日之前最后一条记录获得的,某几天录不录数据没有所谓。我的系统已经运行一年多了,财务人员觉得还可以。所以思路供参考。
肯定有多种实现方式,我的也不保证是最好的

--  作者:lxy060669
--  发布时间:2021/2/8 10:50:00
--  
在mssql后台数据库写一个关于结转表、出库表、进库表这三个表相关联的视图,然后调用该视图数据即可。
--  作者:xxfoxtable
--  发布时间:2021/2/8 10:57:00
--  
以下是引用lxy060669在2021/2/8 10:50:00的发言:
在mssql后台数据库写一个关于结转表、出库表、进库表这三个表相关联的视图,然后调用该视图数据即可。

是个好思路,能分享一下代码?


--  作者:lgzhao
--  发布时间:2021/2/8 11:04:00
--  
在数据库那边动手脚比较节省前台的代码,但后遗症也比较明显,容易导致数据库压力大,看情况使用也可以。


可能以上诸位只考虑库存数量的出入库吧?那样的话计算量不大,出入库顺序也不太严格,怎么做都无所谓吧。

不过如果是配合财务系统,对从财务角度而言,库存的金额和移动均价是更重要的数据,这个在每次出入库时候都要算清楚的。
此时每个品种出库时都需要知道该品种的数量,移动平均单价,库存余额,那么按照以上架构设计的话,每个出库记录都需要重算一次,那样数据多了系统会跑得越来越慢的。

--  作者:newbog
--  发布时间:2021/2/8 15:06:00
--  
采用移动加权平均计算单价时以材料出入库顺序有关