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