1/6用友股份-LE支持服务业务本部产品方案--《库龄推演解决方案》建立日期:2013-07-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-CP-2013-03182/6文档控制创建记录适用范围审阅人日期审阅签字所属部门发布范围内部员工伙伴客户发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-03-31用友NC产品支持部V1.0版本领域模块备注3/6目录库龄推演解决方案...............................................................................................4一、问题描述:...................................................................................................4二、解决方案:...................................................................................................44/6库龄推演解决方案一、问题描述:库龄数据填写二、解决方案:1、先设定变量便于后续解说,N1代表第一个区间的值,N2代表第二个区间,…Nn代表最后一个区间的值(即>90天的值),S代表现存量2、区间中取的值只是入库数量+退库数量,不包含正数的出库数量。3、有一点要认识到,现存量是最先查询到的,最后一个区间的值是最后算出来的,且库龄中所有附件数区间中的数量加起来等于现存量。即表示最后一个区间的值(即>90天的值)等于现存量减去其他区间所有的值,即:Nn=S–(N1+N2+…),当然如果S>(N1+N2+…),则Nn取0.4、还有,库龄分析日期当天的入库数量和退库数量会放入第一个区间中下面通过数据来分析:1)查询库龄,存货:0501货批次号:201207012)做一笔出库,日期要小于等于库龄分析日期,否则对库龄无影响5/63)查询库龄可以看到现存量减少的数量恰好是出库的数量,但库龄区间内取的值不包含正数的出库数量,所以对前几个区间无影响,但最后一个>90的值是通过现存量减去其他区间的值得到的,所以最后一个区间的值改变了。后台主要算法分析:1、通过公司PK、存货基本档案PK、批次号和库龄分析日期,查询在库龄分析日期之前(包含当日)的期初数据,即现存量2、通过公司PK、存货基本档案PK和库龄分析日期,查询在库龄分析日期之前(包含当日)的每一个批次的每一笔入库数量(包括退库数量不包括正数的出库数量),下面为sql的入库数量算法(ninnum代表入库数量,noutnum代表出库数量):SUM(casewhenninnum>0thenninnumelse0end+casewhennoutnum<0then-noutnumelse0end)ninnum3、计算区间值,代码如下:6/61)当单据业务日期落在区间中时(除>90天),会将入库数量+退库数量放入该区间中,如果没有落入,则跳出循环2)只要执行过依次循环,则会执行下列算法,如果入库数量+退库数量小于现存量,则最后一个区间值等于现存量-(入库数量+退库数量),否则等于0.