本帖最后由 successit 于 2020-8-14 15:29 编辑
年前要过高级,需要准备一次在线分享课,一直不知道分享点啥好,再加上比较忙,所以就一直拖着没准备。
最近空了点就从在手项目中摘了个库存更新的功能下来,想想还是这个比较经典,适用面也最广,所以就单独做了个DEMO来给大家分享下。
库存核算的方式和方法很多,就活字格来说,我所知道的就有以下几种:
1、早期的在页面中计算,然后更新到库存表中;
2、mucai大神、荆州大神的库存核算案例;
3、最近比较火的服务端命令实现库存更新;
4、其他大神未分享的方式方法
各种方案都可以实现,也都有各自的优缺点,没有好与不好,只有适不适合自己,能不能实现自己的需求而已
今天我分享这种的库存更新方案,也是基于项目需求来定的,也许不适合每个人,但希望能给大家带来点思路,集思广益,各自都有提高。
基础环境:活字格6.0+MSSQL2016
主要实现功能:SQL视图计算即时库存、存储过程核算期间发生、服务端命令实现月度结存及反结存
PS:刚开始结存与反结存是在页面中常规做法弄的,昨天晚上翻看了胡老板的服务端命令的讲座(就是那个翻车频次比较高的那个),突然发现这玩意可以省去很多页面中数据的倒来倒去的,很方面,所以今天就改了,直接上服务端命令搞,结果是确实很便利,页面贼清爽。。。
库存核算,在很多企业里其实不止是数量,还有金额,在这个DEMO中,根据项目要求,把即时库存里分了期初、本期入、本期出、本期结等数和额,然后再利用加权平均实时得到当前物料的库存单价,调入到每一次的出入库单据中。然后每个月月初做一次结存,把上月的所有发生进行结转成期末,并作为当前月的期初。这样在利用视图计算即时库存时,能够大大减少计算量,从而提高数据读取效率。相当于每次都计算当月发生的数据,之前的所有发生被标记为"已结转",同时这些单据将不允许再次修改或删除。如果要修改,那就执行反结转,这样会取消结转状态,以达到可修改或删除的目的。
另一个就是,在页面中添加了库存的实时校验,不是保存时校验。对于修改时,原表数据的比对问题,也做了考虑,主要是用了很多表格数据传递插件,且保存时再重新提取一次即时库存,以避免时间差上的库存更新而导致负库出现。当然,这些验证都是基于项目,不允许负库的要求来设定的,如果你允许负库,那就放开了吧,跟操作者斗智斗勇,有时真的很伤脑筋,因为你根本就不知道他可能会干出什么事来。。。
好了,废话说完,直接上图:
DEMOBak.zip
(142.65 KB, 下载次数: 1166)
|