销售日报手工输出耗时长、出错概率大,本文章介绍如何从K3后台数据库抽取相关数据自动生成国内销售日报表,释放报表维护人员工作。报表制作人员每天只需要点击刷新数据库按钮即可实现日报的自动更新。
实现逻辑:
1、使用IMS系统做到款确认
2、使用K3系统销售模块单据作为销售报表主数据来源;K3客户资料为客户相关区域、分公司、客户类型数据来源;
3、国内销售日报体现3部分的销售数据:本月全部出库/退库数据+本月部分出库数据中未出库部分+历史未出库数据
代码实现:
-
ALTER view [dbo].[cnorder]
-
AS
-
select
-
t5.fname 大区,--销售区域
-
T3.Fname 分公司,--销售分公司
-
t2.fname 客户名称,--客户名称
-
t6.fname 客户类型,--客户类型
-
t4.fname 业务员,--业务员
-
t.forderbillno 合同号,--订单号
-
case when t7.FG13l181129246 is null then CONVERT(DATETIME,t1.fdate,120) else CONVERT(DATETIME,t7.FG13l181129246,120) end 到款日期,--到款日期
-
t.fqty*t9.ftaxprice 到款金额,--到款金额
-
null 未到款金额,--未到款金额
-
CONVERT(DATETIME,t10.fdate,120) 下单日期,--下单日期
-
CONVERT(DATETIME,t1.fdate,120) 发货日期,--发货日期
-
t8.fmodel 产品型号,--产品型号
-
t.fqty 下单台数,--下单台数,有出库时,取出库数,没有出库时,取订单数
-
t9.ftaxprice 销售单价,--销售单价
-
t.fqty*t9.ftaxprice 行业务金额,--行业务金额
-
t.fqty*t9.ftaxprice 已做销售额,--已做销售额金额
-
t.fqty*t9.ftaxprice/1.17 已做销售额不含税,--已做销售额不含税金额
-
t.fqty 发货台数,--发货台数
-
t8.fnumber 物料编码,--物料编码
-
t8.fname 物料名称,--物料名称
-
CONVERT(DATETIME,t9.fdate,120) 需求日期--需求日期
-
from icstockbillentry t--销售出库明细
-
inner join icstockbill T1 ON T1.FinterID=t.finterid --销售出库
-
inner join t_organization T2 ON T2.FitemID=T1.fsupplyid --购货单位
-
inner join t_department T3 ON T3.FitemID=T1.fdeptid and t3.fnumber like '103.01%'--销售部门
-
inner join t_Base_Emp T4 ON T4.FitemID=T1.fempid--业务员
-
inner join t_SubMessage T5 ON T5.FinterID=T2.fregionid--购货单位调用销售区域
-
inner join t_SubMessage T6 ON T6.FinterID=T2.ftypeid--购货单位调用客户类型
-
left join [IMS.[Portal].[dbo].T13T181861x2257 t7 on t7.id=(select top 1 id from [IMS].[Portal].[dbo].T13T181861x2257 as qq where qq.Fs122318127T46=t.forderbillno)--财务到款系统
-
inner join t_icitem T8 ON T8.FitemID=T.fitemid--物料表
-
inner join seorderentry T9 ON T.ForderinterID=T9.finterid and t.forderentryid=t9.fentryid and t9.fauxprice>0--销售出库表体
-
inner join seorder T10 ON T10.FinterID=T.forderinterid and t10.fdate>'2012-12-31' and t10.fcancellation=0 and t10.fchangemark=0 --销售出库表头
-
where t.FSEOutinterid>0 and CONVERT(varchar(6),t1.fdate,112)=CONVERT(varchar(6),getdate(),112) and t1.fcheckdate is not null
-
--以上数据为全部出库/退库数据,销售出库未审核不计入
-
union all
-
select
-
t5.fname,--销售区域
-
T3.Fname,--销售分公司
-
t2.fname,--客户名称
-
t6.fname,--客户类型
-
t4.fname,--业务员
-
t.fbillno,--订单号
-
t7.FG13l181129246,--到款日期
-
case when t7.FG13l181129246 is null then null else t1.fauxqty*t1.ftaxprice end,--到款金额
-
case when t7.FG13l181129246 is null then t1.fauxqty*t1.ftaxprice else null end,--未到款金额
-
t.fdate,--下单日期
-
null,--发货日期
-
t8.fmodel,--产品型号
-
t1.fauxqty,--下单台数,没有出库时,取订单数
-
t1.ftaxprice,--销售单价
-
t1.fauxqty*t1.ftaxprice,--行业务金额
-
null,--已做销售额金额
-
null,--已做销售额不含税金额
-
null,--发货台数
-
t8.fnumber,--物料编码
-
t8.fname,--物料名称
-
CONVERT(DATETIME,t1.fdate,120)--需求日期
-
from seorder t--销售订单
-
inner join SEOrderEntry T1 ON T1.FinterID=T.finterid and t1.fauxprice>0 and t1.fmrpautoclosed=1 and t1.fstockqty=0--订单行数据
-
inner join t_organization T2 ON T2.FitemID=T.fcustid --购货单位
-
inner join t_department T3 ON T3.FitemID=T.fdeptid and t3.fnumber like '103.01%'--销售部门
-
inner join t_Base_Emp T4 ON T4.FitemID=T.fempid--业务员
-
inner join t_SubMessage T5 ON T5.FinterID=T2.fregionid--购货单位调用销售区域
-
inner join t_SubMessage T6 ON T6.FinterID=T2.ftypeid--购货单位调用客户类型
-
left join [IMS].[Portal].[dbo].T13T181861x2257 t7 on t7.id=(select top 1 id from [IMS.[Portal].[dbo].T13T181861x2257 as qq where qq.Fs122318127T46=t.fbillno)--财务到款系统
-
inner join t_icitem T8 ON T8.FitemID=T1.fitemid--物料表
-
left join icstockbillentry T9 ON T9.ForderinterID=T1.finterid and t9.forderentryid=t1.fentryid and t9.FSEOutinterid>0 and t9.fqty is null--销售出库表体
-
left join icstockbill T10 ON T9.FinterID=T10.finterid --and t10.fcheckerid is not null--销售出库表头
-
where t.fcancellation=0 and t.fchangemark=0
-
--以上数据为全部未出库数据
-
union all
-
select
-
t5.fname,--销售区域
-
T3.Fname,--销售分公司
-
t2.fname,--客户名称
-
t6.fname,--客户类型
-
t4.fname,--业务员
-
t.fbillno,--订单号
-
t7.FG13l181129246,--到款日期
-
case when t7.FG13l181129246 is null then null else (t1.fauxqty-t1.FStockQty)*t1.ftaxprice end,--到款金额
-
case when t7.FG13l181129246 is null then (t1.fauxqty-t1.FStockQty)*t1.ftaxprice else null end,--未到款金额
-
t.fdate,--下单日期
-
null,--发货日期
-
t8.fmodel,--产品型号
-
t1.fauxqty-t1.FStockQty,--下单台数,取订单数-已出库数量
-
t1.ftaxprice,--销售单价
-
(t1.fauxqty-t1.FStockQty)*t1.ftaxprice,--行业务金额
-
null,--已做销售额金额
-
null,--已做销售额不含税金额
-
null,--发货台数
-
t8.fnumber,--物料编码
-
t8.fname,--物料名称
-
CONVERT(DATETIME,t1.fdate,120)--需求日期
-
from seorder t--销售订单
-
inner join SEOrderEntry T1 ON T1.FinterID=T.finterid and t1.fauxprice>0 AND t1.fmrpautoclosed=1 and t1.fauxqty-t1.FStockQty>0 and t1.fstockqty>0 --订单行数据
-
inner join t_organization T2 ON T2.FitemID=T.fcustid --购货单位
-
inner join t_department T3 ON T3.FitemID=T.fdeptid and t3.fnumber like '103.01%'--销售部门
-
inner join t_Base_Emp T4 ON T4.FitemID=T.fempid--业务员
-
inner join t_SubMessage T5 ON T5.FinterID=T2.fregionid--购货单位调用销售区域
-
inner join t_SubMessage T6 ON T6.FinterID=T2.ftypeid--购货单位调用客户类型
-
left join [IMS].[Portal].[dbo].T13T181861x2257 t7 on t7.id=(select top 1 id from [IMS].[Portal].[dbo].T13T181861x2257 as qq where qq.Fs122318127T46=t.fbillno)--财务到款系统
-
inner join t_icitem T8 ON T8.FitemID=T1.fitemid--物料表
-
where t.fcancellation=0 and t.fchangemark=0
-
--以上语句为部分出库数据中未出库部分
Excel调用如上视图即可。不再赘述!报表明细效果见下图:
可以在Excel里边对明细数据进行汇总等操作。