精华内容
下载资源
问答
  • 如何制作考勤表

    千次阅读 2018-11-01 09:14:50
    数据一般都具有天然的时间属性,在很多业务中,...下面,我们将通过一个常见的考勤报表的制作,说明如何制作这些日历形式的报表。先看一下报表应有的展示效果: 该报表以日历形式清晰、直观地展示了 3 月份的人员...

    数据一般都具有天然的时间属性,在很多业务中,以自然月为周期进行数据统计、分析和展示非常普遍。例如,在人事系统中查看某个月的考勤信息、销售人员查看自己或者部门的日程安排等。这些情况下,将报表以日历形式进行展示,往往具有更加直观的展示效果。

    下面,我们将通过一个常见的考勤报表的制作,说明如何制作这些日历形式的报表。先看一下报表应有的展示效果:

    1jpg

    该报表以日历形式清晰、直观地展示了 3 月份的人员出勤情况。下面介绍下该报表的制作方法。

    在润乾报表中,制作日历类报表主要的操作是通过 to 函数实现一个交叉报表扩展出对应的行列,然后在想办法找到该月第一天是周几,这样后边的日期就能依次获取,至于日历最终用于考勤还是其他业务,只需要将实际业务中的日期字段和日历中的日期对应即可,下面看下详细的操作步骤。

    一、日历格式制作

    实际应用中需要动态传入月份,从而实现动态日历的设置,因此先在报表中增加一个参数 rq,值表达式默认为 2018-03

    2jpg

    在一个自然月中,日期最多会跨六周,因此只需在单元格 A2 输入 =to(0,5),B1 单元格输入 =to(1,7),并且将 B1 单元格的扩展方向设置成横向扩展,然后将 A 列隐藏。

    3jpg

    这样报表展现时就会纵向扩展出 6 行,横向扩展出 7 列。

    在 B2 单元格表达式中写入 =A2*7+B1, 此时报表预览结果如下:

    4jpg

    大家知道,每个月的第一天有可能是一周中的任何一天,以 2018-03-01 为例,该日为周四,所以日历展示时,1 号要展示在周四处,也就是上图红框中的“5”的位置(国际日历中,第一列为周日),简单来看就是将上图中的日期 -4 即可,接下来看下这个 4 是怎么动态获取的。

    润乾函数中有个时间日期函数 day,通过该函数可以获取某个日期在该月中是几号,使用时可以增加 w 参数,即 day@w,可以获取某个日期是一个星期中的第几天,先用 rq+”-01”字符串拼接成一个日期格式字符串,再用 date 函数对其进行日期格式转换 date(rq+“-01”),这样 day@w(date(rq+“-01”)) 就能够获取该月 1 号是一个星期中的第几天,因为是国际日历,如果是周日则返回 1,周一则返回 2,所以如果是周四的话,day@w(date(rq+“-01”)) 返回的值是 5,要取得想要的 4 则在该值的基础上减 1 即可。

    还有一种可能,如果 1 号恰好是周日的话,之前纵向扩展时是 0 到 5 扩展出了 6 行,日历中通常 1 号为周日的话是放在日历的第二行,所以要进行 1 号是否是周日的判断,如果是则在第二行显示(值 -7),最终 B2 单元格表达式为:

    =A2*7+B1-if(day@w(date(rq+“-01”))==1,7,day@w(date(rq+“-01”))-1)

    也就是在原有生成连续日期的基础上减去当月第一天处于该周中第几天,预览结果如下:

    5jpg

    可以看到 1 号目前显示在了周四的位置。

    ps:day@w 函数返回日期所在该周的第几天,周日返回 1.

    做为日历,第一行展示时要显示成中文,并且是从周日开始显示,在 B1 单元格显示值表达式写入:map(to(1,7),list(“星期日”,“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”))

    另外,由于交叉区域扩展出来 6*7(42)个单元格,而一个月为 30 天左右,所以会有负数(上个月)以及大于当前月最大值的数。这些值在展示时是不需要的,可以通过表达式将不需要数据隐藏掉,在 B2 单元格显示值表达式中写入:if(value()<1||value()>days((date(rq+“-01”))),"",value())

    A2 中扩展出 6 行数据,实际中该月可能会横跨四周到 5 周,所以同样要将不需要数据给隐藏掉,判断规则:

    如果在第五行第一天的日期超过了该月天数,那么其他几天肯定也超过最大天数了,这行数据就需要隐藏,或者如果日期在扩展的第一行中,并且该行最后那天日期 <1 的话,那么该行也需要隐藏,所以在 B2 单元格隐藏行表达式中写入:if(A2>=4 and B1==1 and value()>days((date(rq+“-01”))),true,if(A2==0 and B1==7 and value()<1,true,false))

    这样报表就展示成如下日历格式:

    6jpg

    二、考勤数据如何结合日历报表

    接下来看一下考勤数据如何放到日历中显示。

    考勤数据通常会有两个字段,一个为考勤日期,另一个为出勤情况,如下述数据集:

    7jpg

    数据集中有两列数据,rq 为考核日期,sfcq:是否出勤,1:出勤,0:缺勤

    在上述制作好的报表基础上将 A2 和 A3 单元格合并,在 B3 单元格中输入表达式:=ds1.select(sfcq,day(rq)==B2)

    B2 单元格为日历的天,day(rq) 含义取 rq 字段的日,这样将这个做为过滤条件就能从 ds1 数据集中取出该天的出勤情况。

    展示时要展示成中文,在 B3 单元格显示值表达式中写入:if(value()==“1”,“出勤”,if(B1==1 or B1==7,"",“缺勤”)),当数据库中字段的值为 1 时代表出勤,并且当 B1 等于 1 或者 7 时,表示周末,不参与考勤评定,其余日期为空的同样算缺勤。

    再调整边框样式,主要 B2、B3 单元格展示时,要将日期和出勤情况展示成一个单元格内,所以 B2 和 B3 单元格中间的边框设成不显示。

    8jpg

    报表展现时,为了更加醒目的显示哪些日期没有出勤,可以设置成如果缺勤则字体变成橙色展示,在 B3 单元格的前景色表达式中写入:if(value()!=“1”,-32768,-16777216),通常情况下,周末的日期以红色展示,所以在 B2 单元格前景色表达式中写入:if(B1==1 or B1==7,-65536,-16777216)。

    在之前 B2 单元格隐藏行表达式中动态控制哪些行隐藏,因为报表增加了 B3 单元格,所以要在 B3 中要做同样控制,在 B3 单元格隐藏行表达式中写入:

    if(A2>=4 and B1==1 and B2>days((date(rq+“-01”))),true,if(A2==0 and B1==7 and B2<1,true,false))。

    报表中可增加一行用于展示当前月份信息,在报表上方插入行,将 A1、B1 合并,单元格中写入表达式:=string(date(rq+“-01”),“yyyy 年 MM”)+“月份出勤统计”

    剩余进行样式调整,根据实际需要设置报表前景色、背景色、边框样式等,这样考勤报表就制作完成了。

    最终报表展现结果如下:

    9jpg

    总结:本例中通过单元格扩展以及日期函数的使用,实现了报表的灵活定制,使之以日历形式展示,并且能够在日历中显示考勤等信息。实际应用中同样可显示其他信息,只需要将日期字段和日历中的日期做关联即可,并且该报表还可和其他报表或业务系统联动,比如日历中可显示技术部门每天处理的任务数,结合报表的超链接功能,点击任务数就能够跳转到任务列表中查看具体的任务信息,等等。



    作者:gxy
    链接:http://c.raqsoft.com.cn/article/1540824028843
    来源:乾学院
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • 通过该课程设计,使我对课本所学的知识得以巩固,将Power Designer、SQL Server开发技术相结合开发药品销售系统,这次设计使我们将理论知识和实践有机的相结合,达到了学以致用的真正目的。 3.1.2 设计意义
  • 教程名称:案例分享:陌陌赶集网等如何建立IT系统课程目录:【】唯品会-中国电子商务零售商开创在线折扣销售新模式【】成功案例-中游网络如何打造安全高效的游戏设计、制作与服务平台【】成功案例-乐蜂网利用戴尔可...
  • 以下是一个Delphi界面程序的源码,适用于基于Delphi开发的销售管理系统,界面中包括了窗体菜单、界面背景等,明日科技Delphi教程里的一个实例源码,向Delphi初学者展示如何制作实现一个传统且美观的系统软件界面。...
  • 销售日报手工输出耗时长、出错概率大,本文章介绍如何从K3后台数据库抽取相关数据自动生成国际销售日报表,释放报表维护人员工作。报表制作人员每天只需要点击刷新数据库按钮即可实现日报的自动更新。 实现逻辑: ...

    销售日报手工输出耗时长、出错概率大,本文章介绍如何从K3后台数据库抽取相关数据自动生成国际销售日报表,释放报表维护人员工作。报表制作人员每天只需要点击刷新数据库按钮即可实现日报的自动更新。

    实现逻辑:

    1、使用IMS系统做到款确认

    2、使用K3系统销售模块单据作为销售报表主数据来源;K3客户资料为客户销售区域、国家数据来源;

    3、国际销售日报体现3部分的销售数据:本月全部出库/退库数据+本月部分出库数据中未出库部分+历史未出库数据

     

    代码实现:

    
     
    1. CREATE view [dbo].[outorder]

    2. as

    3. select

    4. t.fbillno 订单号,--订单号

    5. t.FHeadSelfS0155 客户订单号,--客户订单号

    6. --t5.fname 销售区域,--销售区域

    7. t66.fname 国家,--国家

    8. t2.fname 客户名称,--客户名称

    9. t4.fname 业务员,--业务员

    10. case when t.fcurrencyid=1 then 'CNY' when t.fcurrencyid=1000 then 'USD' when t.fcurrencyid=1001 then 'EUR' else '' end 币种,--币别

    11. case when t2.FNumber like '5.%' then t.fdate else t7.FG13l181129246 end 到款日期,--到款日期

    12. case when t2.FNumber like '5.%' then t1.fauxqty*t1.ftaxprice when t7.FG13l181129246 is null then null else t1.fauxqty*t1.ftaxprice end 到款金额原币,--到款金额原币

    13. case when t2.FNumber like '5.%' then null when t7.FG13l181129246 is null then t1.fauxqty*t1.ftaxprice else null end 未到款金额原币,--未到款金额原币

    14. t.fdate 下单日期,--下单日期

    15. T1.FDate 需求日期,--需求日期

    16. null 发货日期,--发货日期

    17. --t8.fmodel 产品型号,--产品型号

    18. t1.fauxqty 下单数量,--下单台数,没有出库时,取订单数

    19. t1.ftaxprice 销售单价,--销售单价

    20. t1.fauxqty*t1.ftaxprice 行业务金额原币,--行业务金额

    21. case when t.fcurrencyid=1 then t1.fauxqty*t1.ftaxprice/1.17 else t1.fauxqty*t1.ftaxprice end 行业务不含税原币,--行业务金额原币不含税

    22. case when t.fcurrencyid=1 then t1.fauxqty*t1.ftaxprice/1.17 else t1.fauxqty*t1.ftaxprice*t11.FExchangeRate end 行业务不含税CNY,--行业务不含税CNY,

    23. case when t.fcurrencyid=1 then t1.fauxqty*t1.ftaxprice/1.17/t12.FExchangeRate else t1.fauxqty*t1.ftaxprice*t11.FExchangeRate/t12.FExchangeRate end 行业务不含税USD,--行业务不含税USD,

    24. null 已做销售不含税原币,--已做销售不含税原币

    25. null 已做销售CNY,--已做销售CNY,

    26. null 已做销售USD,--已做销售USD,

    27. null 发货台数,--发货台数

    28. t8.fnumber 物料编码,--物料编码

    29. t8.fname 物料名称--物料名称

    30. from [K3].[dbo].seorder t--销售订单

    31. inner join [K3].[dbo].SEOrderEntry T1 ON T1.FinterID=T.finterid and t1.fauxprice>0 and t1.fmrpautoclosed=1 and t1.fstockqty=0--订单行数据

    32. inner join [K3].[dbo].t_organization T2 ON T2.FitemID=T.fcustid --购货单位

    33. inner join [K3].[dbo].t_department T3 ON T3.FitemID=T.fdeptid and T3.FitemID=140 --销售部门

    34. inner join [K3].[dbo].t_Base_Emp T4 ON T4.FitemID=T.fempid--业务员

    35. inner join [K3].[dbo].t_SubMessage T5 ON T5.FinterID=T2.fregionid--购货单位调用销售区域

    36. inner join [K3].[dbo].t_SubMessage T6 ON T6.FinterID=T2.ftypeid--购货单位调用客户类型

    37. 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)--财务到款系统

    38. inner join [K3].[dbo].t_icitem T8 ON T8.FitemID=T1.fitemid--物料表

    39. left join [K3].[dbo].icstockbillentry T9 ON T9.ForderinterID=T1.finterid and t9.forderentryid=t1.fentryid and t9.FSEOutinterid>0 and t9.fqty is null--销售出库表体

    40. left join [K3].[dbo].icstockbill T10 ON T9.FinterID=T10.finterid --and t10.fcheckerid is not null--销售出库表头

    41. inner join [K3].[dbo].t_SubMessage T66 ON T66.FInterID=T.FHeadSelfS0156--购货单位调用国家

    42. left join [K3].[dbo].t_ExchangeRateEntry t11 on t11.FCyTo=T.FCurrencyID and t.FExchangeRateType=1 and CONVERT(varchar(6),t11.FBegDate,112)=CONVERT(varchar(6),GETDATE(),112)

    43. left join [K3].[dbo].t_ExchangeRateEntry t12 on t12.FCyTo=1000 and t12.FExchangeRateType=1 and CONVERT(varchar(6),t12.FBegDate,112)=CONVERT(varchar(6),GETDATE(),112)

    44. where t.fcancellation=0 and t.fchangemark=0 and fheadselfs0150<>51249

    45. --以上数据为全部未出库数据

    46.  
    47. union all

    48.  
    49. select

    50. t.fbillno 订单号,--订单号

    51. t.FHeadSelfS0155 客户订单号,--客户订单号

    52. --t5.FName 销售区域,--销售区域

    53. t66.fname 国家,--国家

    54. t2.fname 客户名称,--客户名称

    55. t4.fname 业务员,--业务员

    56. case when t.fcurrencyid=1 then 'CNY' when t.fcurrencyid=1000 then 'USD' when t.fcurrencyid=1001 then 'EUR' else '' end 币种,--币别

    57. case when t2.FNumber like '5.%' then t.fdate else t7.FG13l181129246 end 到款日期,--到款日期

    58. case when t2.FNumber like '5.%' then (t1.fauxqty-t1.FStockQty)*t1.ftaxprice when t7.FG13l181129246 is null then null else (t1.fauxqty-t1.FStockQty)*t1.ftaxprice end 到款金额原币,--到款金额

    59. case when T2.FNumber like '5.%' then null when t7.FG13l181129246 is null then (t1.fauxqty-t1.FStockQty)*t1.ftaxprice else null end 未到款金额原币,--未到款金额

    60. t.fdate 下单日期,--下单日期

    61. T1.FDate 需求日期,--需求日期

    62. null 发货日期,--发货日期

    63. --t8.fmodel 产品型号,--产品型号

    64. t1.fauxqty-t1.FStockQty 下单台数,--下单台数,取订单数-已出库数量

    65. t1.ftaxprice 销售单价,--销售单价

    66. (t1.fauxqty-t1.FStockQty)*t1.ftaxprice 行业务金额原币,--行业务金额

    67. case when t.fcurrencyid=1 then (t1.fauxqty-t1.FStockQty)*t1.ftaxprice/1.17 else (t1.fauxqty-t1.FStockQty)*t1.ftaxprice end 行业务不含税原币,--行业务金额原币不含税

    68. case when t.fcurrencyid=1 then (t1.fauxqty-t1.FStockQty)*t1.ftaxprice/1.17 else (t1.fauxqty-t1.FStockQty)*t1.ftaxprice*t11.FExchangeRate end 行业务不含税CNY,--行业务不含税CNY,

    69. case when t.fcurrencyid=1 then (t1.fauxqty-t1.FStockQty)*t1.ftaxprice/1.17/t12.FExchangeRate else (t1.fauxqty-t1.FStockQty)*t1.ftaxprice*t11.FExchangeRate/t12.FExchangeRate end 行业务不含税USD,--行业务不含税USD,

    70. null 已做销售不含税原币,--已做销售不含税原币

    71. null 已做销售CNY,--已做销售CNY,

    72. null 已做销售USD,--已做销售USD,

    73. null 发货台数,--发货台数

    74. t8.fnumber 物料编码,--物料编码

    75. t8.fname 物料名称--物料名称

    76. from [K3].[dbo].seorder t--销售订单

    77. inner join [K3].[dbo].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 --订单行数据

    78. inner join [K3].[dbo].t_organization T2 ON T2.FitemID=T.fcustid --购货单位

    79. inner join [K3].[dbo].t_department T3 ON T3.FitemID=T.fdeptid and T3.FitemID=140--销售部门

    80. inner join [K3].[dbo].t_Base_Emp T4 ON T4.FitemID=T.fempid--业务员

    81. inner join [K3].[dbo].t_SubMessage T5 ON T5.FinterID=T2.fregionid--购货单位调用销售区域

    82. inner join [K3].[dbo].t_SubMessage T6 ON T6.FinterID=T2.ftypeid--购货单位调用客户类型

    83. 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)--财务到款系统

    84. inner join [K3].[dbo].t_icitem T8 ON T8.FitemID=T1.fitemid--物料表

    85. inner join [K3].[dbo].t_SubMessage T66 ON T66.FInterID=T.FHeadSelfS0156--购货单位调用国家

    86. left join [K3].[dbo].t_ExchangeRateEntry t11 on t11.FCyTo=T.FCurrencyID and t.FExchangeRateType=1 and CONVERT(varchar(6),t11.FBegDate,112)=CONVERT(varchar(6),GETDATE(),112)

    87. left join [K3].[dbo].t_ExchangeRateEntry t12 on t12.FCyTo=1000 and t12.FExchangeRateType=1 and CONVERT(varchar(6),t12.FBegDate,112)=CONVERT(varchar(6),GETDATE(),112)

    88. where t.fcancellation=0 and t.fchangemark=0 and fheadselfs0150<>51249

    89. --以上语句为部分出库数据中未出库部分

    90.  
    91. union all

    92.  
    93. select

    94. t.forderbillno 订单号,--订单号

    95. t10.FHeadSelfS0155 客户订单号,--客户订单号

    96. --t5.fname 大区,--销售区域

    97. t66.fname 国家,--国家

    98. t2.fname 客户名称,--客户名称

    99. t4.fname 业务员,--业务员

    100. case when t10.fcurrencyid=1 then 'CNY' when t10.fcurrencyid=1000 then 'USD' when t10.fcurrencyid=1001 then 'EUR' else '' end 币种,--币别

    101. case when t7.FG13l181129246 is null then t1.fdate else t7.FG13l181129246 end 到款日期,--到款日期

    102. t.fqty*t9.ftaxprice 到款金额原币,--到款金额

    103. null 未到款金额原币,--未到款金额

    104. t10.fdate 下单日期,--下单日期

    105. T9.FDate 需求日期,--需求日期

    106. t1.fdate 发货日期,--发货日期

    107. --t8.fmodel 产品型号,--产品型号

    108. t.fqty 下单数量,--下单台数,有出库时,取出库数,没有出库时,取订单数

    109. t9.ftaxprice 销售单价,--销售单价原币

    110. t.fqty*t9.ftaxprice 行业务金额原币,--行业务金额原币

    111. case when t10.fcurrencyid=1 then t.fqty*t9.ftaxprice/1.17 else t.fqty*t9.ftaxprice end 行业务不含税原币,--行业务金额原币不含税

    112. case when t10.fcurrencyid=1 then t.fqty*t9.ftaxprice/1.17 else t.fqty*t9.ftaxprice*t11.FExchangeRate end 行业务不含税CNY,--行业务不含税CNY,

    113. case when t10.fcurrencyid=1 then t.fqty*t9.ftaxprice/1.17/t12.FExchangeRate else t.fqty*t9.ftaxprice*t11.FExchangeRate/t12.FExchangeRate end 行业务不含税USD,--行业务不含税USD,

    114. case when t10.fcurrencyid=1 then t.fqty*t9.ftaxprice/1.17 else t.fqty*t9.ftaxprice end 已做销售不含税原币,--已做销售不含税原币

    115. case when t10.fcurrencyid=1 then t.fqty*t9.ftaxprice/1.17 else t.fqty*t9.ftaxprice*t11.FExchangeRate end 已做销售CNY,--已做销售CNY,

    116. case when t10.fcurrencyid=1 then t.fqty*t9.ftaxprice/1.17/t12.FExchangeRate else t.fqty*t9.ftaxprice*t11.FExchangeRate/t12.FExchangeRate end 已做销售USD,--已做销售USD,

    117. t.fqty 发货数量,--发货台数

    118. t8.fnumber 物料编码,--物料编码

    119. t8.fname 物料名称--物料名称

    120. from [K3].[dbo].icstockbillentry t--销售出库明细

    121. inner join [K3].[dbo].icstockbill T1 ON T1.FinterID=t.finterid --销售出库

    122. inner join [K3].[dbo].t_organization T2 ON T2.FitemID=T1.fsupplyid --购货单位

    123. inner join [K3].[dbo].t_department T3 ON T3.FitemID=T1.fdeptid and T3.FitemID=140 --销售部门

    124. inner join [K3].[dbo].t_Base_Emp T4 ON T4.FitemID=T1.fempid--业务员

    125. inner join [K3].[dbo].t_SubMessage T5 ON T5.FinterID=T2.fregionid--购货单位调用销售区域

    126. inner join [K3].[dbo].t_SubMessage T6 ON T6.FInterID=T2.ftypeid--购货单位调用客户类型

    127. 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)--财务到款系统

    128. inner join [K3].[dbo].t_icitem T8 ON T8.FitemID=T.fitemid--物料表

    129. inner join [K3].[dbo].seorderentry T9 ON T.ForderinterID=T9.finterid and t.forderentryid=t9.fentryid and t9.fauxprice>0--销售出库表体

    130. inner join [K3].[dbo].seorder T10 ON T10.FinterID=T.forderinterid and t10.fdate>'2012-12-31' and t10.fcancellation=0 and t10.fchangemark=0 --销售出库表头

    131. inner join [K3].[dbo].t_SubMessage T66 ON T66.FInterID=T10.FHeadSelfS0156--购货单位调用国家

    132. left join [K3].[dbo].t_ExchangeRateEntry t11 on t11.FCyTo=T10.FCurrencyID and t11.FExchangeRateType=1 and CONVERT(varchar(6),t11.FBegDate,112)=CONVERT(varchar(6),t1.fdate,112)

    133. left join [K3].[dbo].t_ExchangeRateEntry t12 on t12.FCyTo=1000 and t12.FExchangeRateType=1 and CONVERT(varchar(6),t12.FBegDate,112)=CONVERT(varchar(6),t1.fdate,112)

    134. where t.FSEOutinterid>0 and CONVERT(varchar(6),t1.FDate,112)=CONVERT(varchar(6),GETDATE(),112) and t1.fcheckdate is not null

    135. --以上语句为全部出货订单数据,含退库数据,销售出库未审核不计入


    Excel调用如上视图即可。不再赘述!可以在Excel里边对明细数据进行汇总等操作。 

    展开全文
  • 销售日报手工输出耗时长、出错概率大,本文章介绍如何从K3后台数据库抽取相关数据自动生成国内销售日报表,释放报表维护人员工作。报表制作人员每天只需要点击刷新数据库按钮即可实现日报的自动更新。 实现逻辑: ...

    销售日报手工输出耗时长、出错概率大,本文章介绍如何从K3后台数据库抽取相关数据自动生成国内销售日报表,释放报表维护人员工作。报表制作人员每天只需要点击刷新数据库按钮即可实现日报的自动更新。

    实现逻辑:

    1、使用IMS系统做到款确认

    2、使用K3系统销售模块单据作为销售报表主数据来源;K3客户资料为客户相关区域、分公司、客户类型数据来源;

    3、国内销售日报体现3部分的销售数据:本月全部出库/退库数据+本月部分出库数据中未出库部分+历史未出库数据

     

    代码实现:

     

    
     
    1. ALTER view [dbo].[cnorder]

    2. AS

    3. select

    4. t5.fname 大区,--销售区域

    5. T3.Fname 分公司,--销售分公司

    6. t2.fname 客户名称,--客户名称

    7. t6.fname 客户类型,--客户类型

    8. t4.fname 业务员,--业务员

    9. t.forderbillno 合同号,--订单号

    10. case when t7.FG13l181129246 is null then CONVERT(DATETIME,t1.fdate,120) else CONVERT(DATETIME,t7.FG13l181129246,120) end 到款日期,--到款日期

    11. t.fqty*t9.ftaxprice 到款金额,--到款金额

    12. null 未到款金额,--未到款金额

    13. CONVERT(DATETIME,t10.fdate,120) 下单日期,--下单日期

    14. CONVERT(DATETIME,t1.fdate,120) 发货日期,--发货日期

    15. t8.fmodel 产品型号,--产品型号

    16. t.fqty 下单台数,--下单台数,有出库时,取出库数,没有出库时,取订单数

    17. t9.ftaxprice 销售单价,--销售单价

    18. t.fqty*t9.ftaxprice 行业务金额,--行业务金额

    19. t.fqty*t9.ftaxprice 已做销售额,--已做销售额金额

    20. t.fqty*t9.ftaxprice/1.17 已做销售额不含税,--已做销售额不含税金额

    21. t.fqty 发货台数,--发货台数

    22. t8.fnumber 物料编码,--物料编码

    23. t8.fname 物料名称,--物料名称

    24. CONVERT(DATETIME,t9.fdate,120) 需求日期--需求日期

    25. from icstockbillentry t--销售出库明细

    26. inner join icstockbill T1 ON T1.FinterID=t.finterid --销售出库

    27. inner join t_organization T2 ON T2.FitemID=T1.fsupplyid --购货单位

    28. inner join t_department T3 ON T3.FitemID=T1.fdeptid and t3.fnumber like '103.01%'--销售部门

    29. inner join t_Base_Emp T4 ON T4.FitemID=T1.fempid--业务员

    30. inner join t_SubMessage T5 ON T5.FinterID=T2.fregionid--购货单位调用销售区域

    31. inner join t_SubMessage T6 ON T6.FinterID=T2.ftypeid--购货单位调用客户类型

    32. 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)--财务到款系统

    33. inner join t_icitem T8 ON T8.FitemID=T.fitemid--物料表

    34. inner join seorderentry T9 ON T.ForderinterID=T9.finterid and t.forderentryid=t9.fentryid and t9.fauxprice>0--销售出库表体

    35. inner join seorder T10 ON T10.FinterID=T.forderinterid and t10.fdate>'2012-12-31' and t10.fcancellation=0 and t10.fchangemark=0 --销售出库表头

    36. where t.FSEOutinterid>0 and CONVERT(varchar(6),t1.fdate,112)=CONVERT(varchar(6),getdate(),112) and t1.fcheckdate is not null

    37. --以上数据为全部出库/退库数据,销售出库未审核不计入

    38.  
    39. union all

    40.  
    41. select

    42. t5.fname,--销售区域

    43. T3.Fname,--销售分公司

    44. t2.fname,--客户名称

    45. t6.fname,--客户类型

    46. t4.fname,--业务员

    47. t.fbillno,--订单号

    48. t7.FG13l181129246,--到款日期

    49. case when t7.FG13l181129246 is null then null else t1.fauxqty*t1.ftaxprice end,--到款金额

    50. case when t7.FG13l181129246 is null then t1.fauxqty*t1.ftaxprice else null end,--未到款金额

    51. t.fdate,--下单日期

    52. null,--发货日期

    53. t8.fmodel,--产品型号

    54. t1.fauxqty,--下单台数,没有出库时,取订单数

    55. t1.ftaxprice,--销售单价

    56. t1.fauxqty*t1.ftaxprice,--行业务金额

    57. null,--已做销售额金额

    58. null,--已做销售额不含税金额

    59. null,--发货台数

    60. t8.fnumber,--物料编码

    61. t8.fname,--物料名称

    62. CONVERT(DATETIME,t1.fdate,120)--需求日期

    63. from seorder t--销售订单

    64. inner join SEOrderEntry T1 ON T1.FinterID=T.finterid and t1.fauxprice>0 and t1.fmrpautoclosed=1 and t1.fstockqty=0--订单行数据

    65. inner join t_organization T2 ON T2.FitemID=T.fcustid --购货单位

    66. inner join t_department T3 ON T3.FitemID=T.fdeptid and t3.fnumber like '103.01%'--销售部门

    67. inner join t_Base_Emp T4 ON T4.FitemID=T.fempid--业务员

    68. inner join t_SubMessage T5 ON T5.FinterID=T2.fregionid--购货单位调用销售区域

    69. inner join t_SubMessage T6 ON T6.FinterID=T2.ftypeid--购货单位调用客户类型

    70. 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)--财务到款系统

    71. inner join t_icitem T8 ON T8.FitemID=T1.fitemid--物料表

    72. left join icstockbillentry T9 ON T9.ForderinterID=T1.finterid and t9.forderentryid=t1.fentryid and t9.FSEOutinterid>0 and t9.fqty is null--销售出库表体

    73. left join icstockbill T10 ON T9.FinterID=T10.finterid --and t10.fcheckerid is not null--销售出库表头

    74. where t.fcancellation=0 and t.fchangemark=0

    75. --以上数据为全部未出库数据

    76.  
    77. union all

    78.  
    79. select

    80. t5.fname,--销售区域

    81. T3.Fname,--销售分公司

    82. t2.fname,--客户名称

    83. t6.fname,--客户类型

    84. t4.fname,--业务员

    85. t.fbillno,--订单号

    86. t7.FG13l181129246,--到款日期

    87. case when t7.FG13l181129246 is null then null else (t1.fauxqty-t1.FStockQty)*t1.ftaxprice end,--到款金额

    88. case when t7.FG13l181129246 is null then (t1.fauxqty-t1.FStockQty)*t1.ftaxprice else null end,--未到款金额

    89. t.fdate,--下单日期

    90. null,--发货日期

    91. t8.fmodel,--产品型号

    92. t1.fauxqty-t1.FStockQty,--下单台数,取订单数-已出库数量

    93. t1.ftaxprice,--销售单价

    94. (t1.fauxqty-t1.FStockQty)*t1.ftaxprice,--行业务金额

    95. null,--已做销售额金额

    96. null,--已做销售额不含税金额

    97. null,--发货台数

    98. t8.fnumber,--物料编码

    99. t8.fname,--物料名称

    100. CONVERT(DATETIME,t1.fdate,120)--需求日期

    101. from seorder t--销售订单

    102. 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 --订单行数据

    103. inner join t_organization T2 ON T2.FitemID=T.fcustid --购货单位

    104. inner join t_department T3 ON T3.FitemID=T.fdeptid and t3.fnumber like '103.01%'--销售部门

    105. inner join t_Base_Emp T4 ON T4.FitemID=T.fempid--业务员

    106. inner join t_SubMessage T5 ON T5.FinterID=T2.fregionid--购货单位调用销售区域

    107. inner join t_SubMessage T6 ON T6.FinterID=T2.ftypeid--购货单位调用客户类型

    108. 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)--财务到款系统

    109. inner join t_icitem T8 ON T8.FitemID=T1.fitemid--物料表

    110. where t.fcancellation=0 and t.fchangemark=0

    111. --以上语句为部分出库数据中未出库部分


    Excel调用如上视图即可。不再赘述!报表明细效果见下图:

     

    可以在Excel里边对明细数据进行汇总等操作。

    展开全文
  • 这是一个使用ReactJS制作的Web应用程序。 这个程序模拟了现金返还系统。 要求 如何运行项目 克隆项目 git clone https://github.com/mesaquen/cashback-challenge.git 安装依赖项 // no diretório cashback-...
  • 日历类报表的制作

    2018-11-04 17:01:00
    数据一般都具有天然的时间属性,在很多业务中,以自然月为周期进行数据统计、分析和展示非常普遍。例如,在人事系统中查看某个月的考勤信息、销售人员...下面,我们将通过一个常见的考勤报表的制作,说明如何制作...

    数据一般都具有天然的时间属性,在很多业务中,以自然月为周期进行数据统计、分析和展示非常普遍。例如,在人事系统中查看某个月的考勤信息、销售人员查看自己或者部门的日程安排等。这些情况下,将报表以日历形式进行展示,往往具有更加直观的展示效果。

    下面,我们将通过一个常见的考勤报表的制作,说明如何制作这些日历形式的报表。先看一下报表应有的展示效果:

    1jpg

    该报表以日历形式清晰、直观地展示了 3 月份的人员出勤情况。下面介绍下该报表的制作方法。

    在润乾报表中,制作日历类报表主要的操作是通过 to 函数实现一个交叉报表扩展出对应的行列,然后在想办法找到该月第一天是周几,这样后边的日期就能依次获取,至于日历最终用于考勤还是其他业务,只需要将实际业务中的日期字段和日历中的日期对应即可,下面看下详细的操作步骤。

    一、日历格式制作

    实际应用中需要动态传入月份,从而实现动态日历的设置,因此先在报表中增加一个参数 rq,值表达式默认为 2018-03

    2jpg

    在一个自然月中,日期最多会跨六周,因此只需在单元格 A2 输入 =to(0,5),B1 单元格输入 =to(1,7),并且将 B1 单元格的扩展方向设置成横向扩展,然后将 A 列隐藏。

    3jpg

    这样报表展现时就会纵向扩展出 6 行,横向扩展出 7 列。

    在 B2 单元格表达式中写入 =A2*7+B1, 此时报表预览结果如下:

    4jpg

    大家知道,每个月的第一天有可能是一周中的任何一天,以 2018-03-01 为例,该日为周四,所以日历展示时,1 号要展示在周四处,也就是上图红框中的“5”的位置(国际日历中,第一列为周日),简单来看就是将上图中的日期 -4 即可,接下来看下这个 4 是怎么动态获取的。

    润乾函数中有个时间日期函数 day,通过该函数可以获取某个日期在该月中是几号,使用时可以增加 w 参数,即 day@w,可以获取某个日期是一个星期中的第几天,先用 rq+”-01”字符串拼接成一个日期格式字符串,再用 date 函数对其进行日期格式转换 date(rq+“-01”),这样 day@w(date(rq+“-01”)) 就能够获取该月 1 号是一个星期中的第几天,因为是国际日历,如果是周日则返回 1,周一则返回 2,所以如果是周四的话,day@w(date(rq+“-01”)) 返回的值是 5,要取得想要的 4 则在该值的基础上减 1 即可。

    还有一种可能,如果 1 号恰好是周日的话,之前纵向扩展时是 0 到 5 扩展出了 6 行,日历中通常 1 号为周日的话是放在日历的第二行,所以要进行 1 号是否是周日的判断,如果是则在第二行显示(值 -7),最终 B2 单元格表达式为:

    =A2*7+B1-if(day@w(date(rq+“-01”))==1,7,day@w(date(rq+“-01”))-1)

    也就是在原有生成连续日期的基础上减去当月第一天处于该周中第几天,预览结果如下:

    5jpg

    可以看到 1 号目前显示在了周四的位置。

    ps:day@w 函数返回日期所在该周的第几天,周日返回 1.

    做为日历,第一行展示时要显示成中文,并且是从周日开始显示,在 B1 单元格显示值表达式写入:map(to(1,7),list(“星期日”,“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”))

    另外,由于交叉区域扩展出来 6*7(42)个单元格,而一个月为 30 天左右,所以会有负数(上个月)以及大于当前月最大值的数。这些值在展示时是不需要的,可以通过表达式将不需要数据隐藏掉,在 B2 单元格显示值表达式中写入:if(value()<1||value()>days((date(rq+“-01”))),"",value())

    A2 中扩展出 6 行数据,实际中该月可能会横跨四周到 5 周,所以同样要将不需要数据给隐藏掉,判断规则:

    如果在第五行第一天的日期超过了该月天数,那么其他几天肯定也超过最大天数了,这行数据就需要隐藏,或者如果日期在扩展的第一行中,并且该行最后那天日期 <1 的话,那么该行也需要隐藏,所以在 B2 单元格隐藏行表达式中写入:if(A2>=4 and B1==1 and value()>days((date(rq+“-01”))),true,if(A2==0 and B1==7 and value()<1,true,false))

    这样报表就展示成如下日历格式:

    6jpg

    二、考勤数据如何结合日历报表

    接下来看一下考勤数据如何放到日历中显示。

    考勤数据通常会有两个字段,一个为考勤日期,另一个为出勤情况,如下述数据集:

    7jpg

    数据集中有两列数据,rq 为考核日期,sfcq:是否出勤,1:出勤,0:缺勤

    在上述制作好的报表基础上将 A2 和 A3 单元格合并,在 B3 单元格中输入表达式:=ds1.select(sfcq,day(rq)==B2)

    B2 单元格为日历的天,day(rq) 含义取 rq 字段的日,这样将这个做为过滤条件就能从 ds1 数据集中取出该天的出勤情况。

    展示时要展示成中文,在 B3 单元格显示值表达式中写入:if(value()==“1”,“出勤”,if(B1==1 or B1==7,"",“缺勤”)),当数据库中字段的值为 1 时代表出勤,并且当 B1 等于 1 或者 7 时,表示周末,不参与考勤评定,其余日期为空的同样算缺勤。

    再调整边框样式,主要 B2、B3 单元格展示时,要将日期和出勤情况展示成一个单元格内,所以 B2 和 B3 单元格中间的边框设成不显示。

    8jpg

    报表展现时,为了更加醒目的显示哪些日期没有出勤,可以设置成如果缺勤则字体变成橙色展示,在 B3 单元格的前景色表达式中写入:if(value()!=“1”,-32768,-16777216),通常情况下,周末的日期以红色展示,所以在 B2 单元格前景色表达式中写入:if(B1==1 or B1==7,-65536,-16777216)。

    在之前 B2 单元格隐藏行表达式中动态控制哪些行隐藏,因为报表增加了 B3 单元格,所以要在 B3 中要做同样控制,在 B3 单元格隐藏行表达式中写入:

    if(A2>=4 and B1==1 and B2>days((date(rq+“-01”))),true,if(A2==0 and B1==7 and B2<1,true,false))。

    报表中可增加一行用于展示当前月份信息,在报表上方插入行,将 A1、B1 合并,单元格中写入表达式:=string(date(rq+“-01”),“yyyy 年 MM”)+“月份出勤统计”

    剩余进行样式调整,根据实际需要设置报表前景色、背景色、边框样式等,这样考勤报表就制作完成了。

    最终报表展现结果如下:

    9jpg

    总结:本例中通过单元格扩展以及日期函数的使用,实现了报表的灵活定制,使之以日历形式展示,并且能够在日历中显示考勤等信息。实际应用中同样可显示其他信息,只需要将日期字段和日历中的日期做关联即可,并且该报表还可和其他报表或业务系统联动,比如日历中可显示技术部门每天处理的任务数,结合报表的超链接功能,点击任务数就能够跳转到任务列表中查看具体的任务信息,等等。

     

    转载于:https://my.oschina.net/u/3980313/blog/2649977

    展开全文
  • 如何开发主从报表

    2019-12-28 20:30:05
    销售系统中的客户订单表样式如下: 报表上半部分显示订单基本信息,下半部分显示订单明细信息,每个订单呈独立的卡片式显示。 润乾报表开发步骤如下: 1、连接数据源 使用润乾报表设计器,连接自带数据源 DE.....
  • 进出库管理系统

    2019-09-18 09:54:23
    如何使用进销管理系统做进出库操作呢?进销存管理有三个重要模块组成:进货管理,出库管理,销售管理。现在还好多企业都是用笔记账。管理起来繁杂而混乱,手工管理进出库账单方式,累还慢。现在网络时代企业进销存...
  • 如何进行网站分析?

    2020-10-15 11:12:58
    目标是用来发给客户展示公司形象,或者提升网站的PV来卖更多的广告,还是使用户去购买(增加销售)提高转化。这三种不同的需求,决定网站制作经营的方向不同。阿里云建站系统里集成了友盟网站流量分析工具可以实时监控...
  • 鱼骨图(又名因果图、石川图),指的是一种发现问题...市场份额少,是每一个销售乃至公司老总都需要去思考的问题,如何提高自己公司的市场占额比呢?让自己有更好的销售业绩呢?理所当然的它成为了鱼骨分析法鱼骨头的鱼
  • 网域服装网店网站模板下载服装网站源码服装网站管理系统,免费版服装网上销售网店系统,服装网站模板下载,服装网店网页模板下载,服装网上购物系统asp生成HTML版,服装网站PHP版,服装专卖店网上商店开店系统asp版免费版...
  • 再比如,区域销售情况统计,各区域销售经理也只能看到所在区域的数据等等。 实际应用环境中,解决此类问题一般是通过直接在 SQL 中筛选出数据绘制报表模板,然后按照登录对象访问指定的模板就可以了。但是,如果...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 205
精华内容 82
关键字:

如何制作销售系统