[本文主要是自己做的备忘]

需求与难点:

1.要在自定义报表中实现;

2.要有现价、近价、前3年各年均价、核价、去年同期、前十二月平均单价、去年最后一次进价放在一张表进行对比分析,并做出简单的分析判断;

3.因为第二点,要用到动态SQL和存储过程,而易飞自定义报表不支持动态SQL,所以间接采用了用 视图作为中转。

做过的东西老是忘记,所以记录了下面是步骤备记:

一.create proc,目的是用动态SQL生成以上数据(这里抓取了全部的数据,如果数据量太大,只需抓取几年的数据,则启用@num参数即可,在下面的存储过程中我有备注了@num,启用时,只要去掉前面的'--'即可,同时的后面的where条件也要去掉'--'):

if exists(select *from sysobjects where name='jfpurprice')
drop proc jfpurprice
go
create proc jfpurprice --@num numeric
as begin
---采购各类价格汇总表
declare @tab table(wid varchar(100),今年价 varchar(100),今年量 varchar(100),去年价 varchar(100),去年量 varchar(100)
,前年价 varchar(100),前年量 varchar(100),前年价L varchar(100),前年量L varchar(100),前年价LL varchar(100),前年量LL varchar(100))
declare @sql as Nvarchar(4000)
set @sql='select TD004'
select @sql=@sql + ',avg(case substring(TC003,1,4) when '''+item+'''then TD010 end) As ['+item+'],'+ ' isnull(cast(cast(sum(case substring(TC003,1,4) when '''+item+'''then TD008 end) as numeric(16,2))
as varchar(17)),'+'''--'''+') as ['+item+'采购量'+']'
from (select  distinct top 10 substring(TC003,1,4)as item  from PURTD left join PURTC on TD001=TC001 and TD002=TC002
where substring(TC003,1,6)>=substring(convert(varchar(20),dateadd(year,-4,getdate()),112),1,6)and substring(TC003,1,6)<=substring(convert(varchar(20),dateadd(year,-0,getdate()),112),1,6)
order by substring(TC003,1,4) desc ) as A
select @sql=@sql+'from PURTD left join PURTC on TD001=TC001 and TD002=TC002 where TC014='+'''Y'''+'
group by TD004'
--print @sql
insert into @tab Exec (@sql)
--开始取数据
select 采购数据.*,MB050*(1+税率) 最近进价,case when isnull(MB064,0)=0 then 0 else cast(MB065/MB064*(1+税率) as numeric(16,2)) end 库存价,
isnull(cast(cast(去年同期价 as numeric(16,2)) as varchar(17)),'--') 去年同期价,isnull(cast(cast(去年同期量 as numeric(16,2)) as varchar(17)),'--') 去年同期量,
isnull(cast(cast(去年末次价 as numeric(16,2)) as varchar(17)),'--') 去年末次价,isnull(cast(cast (去年末次采购量 as numeric(16,2)) as varchar(17)),'--') 去年末次采购量,
isnull(cast(cast(核价.MB011 as numeric(16,2)) as varchar(17)),'--') 核价,核价.MB013 核价含税,
isnull(cast(cast(前十二月均价 as numeric(16,2)) as varchar(17)),'--') 前十二月均价,isnull(cast(cast(前十二月采购量 as numeric(16,2)) as varchar(17)),'--') 前十二月采购量,
isnull(cast(cast(今年价 as numeric(16,2)) as varchar(17)),'--') 今年价,今年量,
isnull(cast(cast(去年价 as numeric(16,2)) as varchar(17)),'--') 去年价,去年量,
isnull(cast(cast(前年价 as numeric(16,2)) as varchar(17)),'--') 前年价,前年量,
isnull(cast(cast(前年价L as numeric(16,2)) as varchar(17)),'--') 前年价L,前年量L,
isnull(cast(cast(前年价LL as numeric(16,2)) as varchar(17)),'--') 前年价LL,前年量LL,
case when isnull(核价.MB011,0)=0 then '未核价'else '' end +','+ case when 单价-isnull((case when 核价.MB013='N' then 核价.MB011*(1+税率) else 核价.MB011 end),0)<>0 then '核价不符'else '' end +','+
case(case when isnull(MB064,0)=0 then cast(单价 as numeric(16,2)) else (cast(单价 as numeric(16,2))-cast(MB065/MB064*(1+税率) as numeric(16,2))) end) when 0 then '' when  cast(单价 as numeric(16,2)) then '' else '库存价不符'end +','+
case(case when isnull(MB050,0)=0 then cast(单价 as numeric(16,2)) else (cast(单价 as numeric(16,2))-cast(MB050*(1+税率) as numeric(16,2))) end) when 0 then '' when  cast(单价 as numeric(16,2)) then '' else '最近进价不符'end+','+
case(case when isnull(cast(去年同期价 as numeric(16,2)),0)=0 then cast(单价 as numeric(16,2)) else (cast(单价 as numeric(16,2))-cast(去年同期价 as numeric(16,2))) end) when 0 then '' when  cast(单价 as numeric(16,2)) then '' else '去年同期价不符'end+','+
case(case when isnull(cast(去年末次价 as numeric(16,2)),0)=0 then cast(单价 as numeric(16,2)) else (cast(单价 as numeric(16,2))-cast(去年末次价 as numeric(16,2))) end) when 0 then '' when  cast(单价 as numeric(16,2)) then '' else '去年末次价不符'end+','+
case(case when isnull(cast(前十二月均价 as numeric(16,2)),0)=0 then cast(单价 as numeric(16,2)) else (cast(单价 as numeric(16,2))-cast(前十二月均价 as numeric(16,2))) end) when 0 then '' when  cast(单价 as numeric(16,2)) then '' else '前十二月均价不符'end as 参考信息提示,
case when(
case(case when isnull(cast(今年价 as numeric(16,2)),0)=0 then cast(单价 as numeric(16,2)) else (cast(单价 as numeric(16,2))-cast(今年价 as numeric(16,2))) end) when 0 then '' when  cast(单价 as numeric(16,2)) then '' else '今年价波动'end  ='' or
case(case when isnull(cast(去年价 as numeric(16,2)),0)=0 then cast(单价 as numeric(16,2)) else (cast(单价 as numeric(16,2))-cast(去年价 as numeric(16,2))) end) when 0 then '' when  cast(单价 as numeric(16,2)) then '' else '去年价波动'end  ='' or
case(case when isnull(cast(前年价 as numeric(16,2)),0)=0 then cast(单价 as numeric(16,2)) else (cast(单价 as numeric(16,2))-cast(前年价 as numeric(16,2))) end) when 0 then '' when  cast(单价 as numeric(16,2)) then '' else '前年价波动'end  ='' or
case(case when isnull(cast(前年价L as numeric(16,2)),0)=0 then cast(单价 as numeric(16,2)) else (cast(单价 as numeric(16,2))-cast(前年价L as numeric(16,2))) end) when 0 then '' when  cast(单价 as numeric(16,2)) then '' else '前年价L波动'end  ='' or
case(case when isnull(cast(前年价LL as numeric(16,2)),0)=0 then cast(单价 as numeric(16,2)) else (cast(单价 as numeric(16,2))-cast(前年价LL as numeric(16,2))) end) when 0 then '' when  cast(单价 as numeric(16,2)) then '' else '前年价LL波动'end  ='')
then '' else '历年价有波动' end  历年价参考
from(SELECT substring(TC003,1,6) 采购年月,TC004 厂商,TC003 采购日期,TD001 单别,TD002 单号,TD003 序号,TD004 品号,TD005 品名,
TD006 规格,TD010 单价,TD008 数量,TD015 已交,TD016 结束,TD033 税率 from PURTD left join PURTC on TD001=TC001 and TD002=TC002
--where substring(TC003,1,6)>=substring(convert(varchar(20),dateadd(year,@num,getdate()),112),1,6)
) as 采购数据
left join @tab on 采购数据.品号=wid
left join INVMB on 采购数据.品号=MB001
left join (---去年同期select TD004,avg(TD010) 去年同期价,sum(TD008) 去年同期量from PURTD left join PURTC on TD001=TC001 and TD002=TC002where substring(TC003,1,6)=substring(convert(varchar(20),dateadd(year,-1,getdate()),112),1,6) and TC014='Y'group by TD004) as 去年同期 on 采购数据.品号=去年同期.TD004
left join (--去年末次价格select TD004,TD010 去年末次价,TD008 去年末次采购量 from(select ROW_NUMBER() over(partition by TD004 order by TC003 desc) pid,TD004,TD010,TD008,TC003from PURTD left join PURTC on TD001=TC001 and TD002=TC002where substring(TC003,1,4)=substring(convert(varchar(20),dateadd(year,-1,getdate()),112),1,4) and TC014='Y') as awhere pid=1) as 去年末次 on 采购数据.品号=去年末次.TD004
left join  (--前十二月平均select TD004,avg(TD010) 前十二月均价,sum(TD008)前十二月采购量from PURTD left join PURTC on TD001=TC001 and TD002=TC002where TC003 between dateadd(mm,-12,convert(varchar(10),getdate(),120)) and convert(varchar(10),getdate(),120)group by TD004)as 前十二 on 采购数据.品号=前十二.TD004
left join (--------核价(如有重复,则依孰低原则取值)select *from(select row_number()over(partition by MB001,MB002 order by MB001,MB002 asc) vid,MB001,MB002,min(MB011) over(partition by MB001,MB002,MB014)MB011,MB013 from PURMB where (MB015 = '' or MB015 > CONVERT(varchar(100), GETDATE(),112))and (MB014 <= CONVERT(varchar(100), GETDATE(),112))) as v where vid=1) as 核价 on 采购数据.品号=核价.MB001 and 采购数据.厂商=核价.MB002order by 采购日期,单别,单号
end

二.create view,目的是在易飞中能够引用这个视图进行自定义报表(这个视图很关键,我是直接用可视化视图建立的,下面附上语句):

CREATE  VIEW  PURJFPRICE
AS
SELECT   采购年月, 厂商, 采购日期, 单别, 单号, 序号, 品号, 品名, 规格, 单价, 数量, 已交, 结束, 税率, 最近进价, 库存价, 去年同期价, 去年同期量, 去年末次价, 去年末次采购量, 核价, 核价含税, 前十二月均价, 前十二月采购量, 今年价, 今年量, 去年价, 去年量, 前年价, 前年量, 前年价L, 前年量L, 前年价LL, 前年量LL, 参考信息提示, 历年价参考
FROM      OPENROWSET('SQLOLEDB', 'SERVER=192.168.0.xx;uid=sa;pwd=**********;Database=**********', 'SET FMTONLY OFF;SET NOCOUNT ON exec jfpurprice') AS a

三.最后就是使用易飞的自定义报表功能,引用上面的视图PURJFPRICE即可,除了自定一些查询的条件,不用做什么特别的设置。

易飞ERP--自定义报表之采购价格分析功能表相关推荐

  1. 易飞ERP单据自动审核程序

    易飞ERP自动审核程序功能 一. 使用场景 1. OA系统集成 与第三方OA系统软件集成,在OA软件审核完成后,直接将ERP中的单据审核. 2. MES系统集成 MES系统生成单据写入到易飞ERP中, ...

  2. 利用先进先出原则统计易飞ERP呆滞库存

    易飞ERP如果在没有启用批号的情况下,库龄是根据最后一次的出入库日期来计算了,这就会导致呆滞计算是不准确的.比如: 某个物料1000数量,3年没用了,为了消耗库存,突然最近某一天想领一个验证下好坏.这 ...

  3. 易飞ERP软件用户组及权限设定-易飞ERP免费教程 转载

    易飞ERP软件用户组及权限设定-易飞ERP免费教程 易飞ERP支持用户.角色.权限复制.权限合并.限定基础数据.程序权限等多重权限迭加管理,安全.慎密且操作灵活,能有效满足中型企业对权限上要求. 1. ...

  4. 金蝶erp与易飞erp区别_结论:敏捷与ERP,第5部分

    金蝶erp与易飞erp区别 到目前为止的故事... 敏捷和ERP? 关于敏捷和ERP的好消息 ERP文化诉敏捷文化 关于敏捷和ERP的坏消息 这在哪里离开我们? 对于现代软件开发人员而言,了解敏捷并且 ...

  5. [易飞]易飞ERP系统中,最低补量、补货位量、最小用量、领用倍量、批量之间分别代表什么意思,其中的公式计算逻辑是什么?

    易飞ERP系统中,最低补量.补货位量.最小用量.领用倍量.批量之间分别代表什么意思,其中的公式计算逻辑是什么? 最低补量:采购时所谓补货的最低数量–即最小订单量(MOQ). 补货倍量:所补货的数量是该 ...

  6. 金蝶erp与易飞erp区别_文化问题:敏捷和ERP第三部分

    金蝶erp与易飞erp区别 我在关于敏捷和ERP的第二篇文章中提出了在ERP环境中进行软件开发时遇到的一些文化问题,这次我想更仔细地研究两种文化之间的差异. 许多文化问题都围绕着这样一个事实,即ERP ...

  7. 金蝶erp与易飞erp区别_我们知道ERP的终结吗?

    金蝶erp与易飞erp区别 我在Facebook上的一个朋友引起了我的注意,这篇博客文章是Tien Tzuo在Forbes.com上发表的" End of ERP" . 在某种程度 ...

  8. 易飞ERP和钉钉办公集成——ERP移动审批解决方案

    易飞ERP有个非常不好的地方,就是单据审批非常不好用,进入移动互联网时代,手机不能审批怎么办? 博主提供一种解决思路,请看视频: 易飞和钉钉移动审批集成

  9. 抓取服务器作业文档不存在,易飞ERP问题解答.doc

    文档介绍: 易飞ERP问题解答[问题]关账年月和账务冻结年月的含义[解答]账务冻结年月:只会管控"审核和撤销审核影响库存的单据",如果操作动作(保存.修改)不会影响库存,那么则不会 ...

  10. 抓取服务器作业文档不存在,易飞ERP客户问题集.doc

    文档介绍: 易飞ERP客户问题集20130715袀[问题]给了某用户录入入库单中的输出权限,但是无法打印蚇[解答]还应该赋予该用户打印转移单的权限.膆[问题]关账年月和账务冻结年月的含义蚃[解答]账务 ...

最新文章

  1. 【Android 安装包优化】WebP 应用 ( Android 中使用 libwebp.so 库解码 WebP 图片 )
  2. RAC起单实例make
  3. 2015年第六届蓝桥杯C/C++ A组国赛 —— 第三题:显示二叉树
  4. 北京一公交车发生爆炸 疑为乘客携带药品起反应
  5. Linux传递位置参数,Linux-scripts-位置参数等特殊变量
  6. 支持向量机在风控竞赛数据集上的应用
  7. Angular Compile Error NG6002
  8. B区考研学校排名计算机,b区(b区考研学校排名)
  9. [转载]自己亲身经历,房屋买卖二手房,和中介打官司,唉,烦心!
  10. 23种设计模式:(一)创建者模型
  11. 麦子学院Linux教程:环境搭建
  12. 大数据工具和数据库区别和关联
  13. 图片内存太大?微信这个隐藏功能轻松压缩PNG、JPG图片!
  14. c++语言表白超炫图形_数学公式的超酷表白我爱你
  15. 手机号码归属地查询(php+redis)
  16. java 确认邮箱地址的可达性
  17. Gson详解--入门篇
  18. 赠书 | 十年运维经验总结出的智能运维系统落地方案,不得不赞
  19. echarts实现西安地铁图
  20. 博途调试g120_G120 如何在博图 调试向导 配置?-工业支持中心-西门子中国

热门文章

  1. 微博官方自助服务一键批量取消微博全部关注方法
  2. java日期 国际化_java中国际化的时间处理
  3. C语言可变参数问题(va_list,va_start,va_arg,va_end用法及定义)
  4. 2020N1叉车司机证考试及N1叉车司机考试软件
  5. 发个贴,舒缓下自己焦虑的心情
  6. 在mac上使用PDF Expert中常见问题解答
  7. 人体关节正常活动范围
  8. 《成都》钢琴谱,带指法和歌词
  9. Unity 按钮反馈 果冻弹跳
  10. 30天自制操作系统——综合设计