浅析 K3虚仓库龄分析

     K/3 V10.3 库存账龄分析表的原理

     账龄分析表是按先进先出原则进行账龄分析,时间的判定方法是:以系统的当前日期为截止日期和单据日期进行比较(采用保质期管理的物料同样是以单据日期作为比较对象),得到存储天数;如果是初始化录入的余额,则以初始化录入的入库日期为比较对象,得到存储天数。调拨单参与分析必须选择过滤条件:调拨单参与账龄分析。单价依据,系统提供了计划价、采购单价、最新入库价、最新出库价、上期最新出库价、期初余额加权平均价6种计价方式供选择。

     在K3 v12.2对虚仓没有现成的虚仓库龄分析表,现在有这个需求,试了做了一下这个报表,可能有问题,请高手看到这个帮忙指正,谢谢!

     方法:

     1、将虚仓入库单按时间段分类汇总,例如:30天以内,30-60天,……180天以上,      

     2、用现有库存去依次减去30天以内,30-60天,……180天以上的分段数据,得到最终的报表即为库龄分析表。


具体做法及代码:

--虚仓入库单按时间段分类创建视图,  
drop view vw_pokl    
create view vw_pokl  as    
select b.fitemid,    
b.fdcstockid,    
sum(case when datediff(d,a.fcheckdate,getdate()) <= 30 then b.fqty else 0 end) as 'f30day',    
sum(case when datediff(d,a.fcheckdate,getdate()) > 30 and datediff(d,a.fcheckdate,getdate()) <= 60 then b.fqty else 0 end) as 'f60day',    
sum(case when datediff(d,a.fcheckdate,getdate()) > 60 and datediff(d,a.fcheckdate,getdate()) <= 90 then b.fqty else 0 end) as 'f90day',    
sum(case when datediff(d,a.fcheckdate,getdate()) > 90 and datediff(d,a.fcheckdate,getdate()) <= 120 then b.fqty else 0 end)  as'f120day',    
sum(case when datediff(d,a.fcheckdate,getdate()) > 120 and datediff(d,a.fcheckdate,getdate()) <= 180 then b.fqty else 0 end)  as'f180day',    
sum(case when datediff(d,a.fcheckdate,getdate()) > 180  then b.fqty else 0 end)  as'up180day'    
from zpstockbill a,    
zpstockbillentry b    
where a.finterid = b.finterid    
and a.ftrantype = 6    
and b.fitemid = 30453    
group by b.fitemid,b.fdcstockid



第二步:

select --a.fitemid,  
--b.fstockid,    
c.fnumber as '物料编码',    
c.fname as '物料名称',    
c.fmodel as '规格型号',    
d.fnumber as '仓库代码',    
d.fname as '仓库名称',    
b.fqty as '库存数量',    
case when b.fqty-a.f30day >= 0  then a.f30day else  b.fqty  end as '30天以内',    
case when b.fqty-a.f30day-a.f60day >= 0 then a.f60day when b.fqty >= a.f30day then  b.fqty-a.f30day else 0 end as '30-60天',    
case when b.fqty-a.f30day-a.f60day-a.f90day >= 0 then a.f90day when  b.fqty-a.f30day-a.f60day >= 0 then b.fqty-a.f30day-a.f60day else 0 end as '60-90天',    
case when b.fqty-a.f30day-a.f60day-a.f90day-a.f120day >= 0 then a.f120day when b.fqty-a.f30day-a.f60day-a.f90day >= 0 then b.fqty-a.f30day-a.f60day-a.f90day else 0 end as '90-120天',    
case when b.fqty-a.f30day-a.f60day-a.f90day-a.f120day-a.f180day >= 0 then a.f180day when b.fqty-a.f30day-a.f60day-a.f90day-a.f120day >= 0 then b.fqty-a.f30day-a.f60day-a.f90day-a.f120day else 0 end as '120天-180天',    
case when b.fqty-a.f30day-a.f60day-a.f90day-a.f120day-a.f180day-up180day >= 0 then a.up180day when b.fqty-a.f30day-a.f60day-a.f90day-a.f120day-f180day >= 0 then b.fqty-a.f30day-a.f60day-a.f90day-a.f120day-a.f180day else 0 end as '180天以上'    
from vw_pokl a, --视图    
poinventory b,  --代管仓即时库存表    
t_icitem c,     --物料表    
t_stock d       --仓库表    
where a.fitemid = b.fitemid    
and a.fdcstockid = b.fstockid    
and c.fitemid = a.fitemid    
and d.fitemid = a.fdcstockid    
order by 4, 1



--校验数据  
select *    
from poinventory b ,    
vw_pokl a    
where a.fitemid = b.fitemid    
and fdcstockid = b.fstockid    
--order by fqty desc    

你可能感兴趣的:(sqlserver,库龄分析)