资源描述
河北地税BI项目前端应用定制说明
河北地税BI前端应用
第1章 报表定制
1.1 普通级报表
这里的普通级报表是指以单个报表为单位的一类报表应用,它体现的是报表的展现功能。
1.1.1 灵活分析
1.1.1.1 财务数据采集统计
n 展现要点
1) 结合年度、季度以及年报或季报显示利润信息或资产负债信息。
2) 未确定“财务季度”值时,无法浏览“季报”的数据,应给出相关提示。
n 应用效果演示
Ø 设置参数“财务年度”、“财务季度”、“财务报表类型”、“财务报表种类”取值后,效果如下图所示:
Ø 不设置参数“财务季度”取值,参数“财务报表类型”取值为“季报表”时,效果如下图所示:
从上图发现,没有确定“财务季度”取值时,无法查询出“季报表”数据。
n 查询说明
1) 查询表:DW_CW_SJCJTJ
该查询表的部分数据如下:
上图中各字段的相关说明如下表:
字段
说明
ND
表示年度信息。
JD
表示季度信息:1指第一季度、2指第二季度、3指第三季度、4指第四季度、5指全年(即所有季度)。
SJBZ
表示数据标志:1指全部(即利润表和资产负债表所有数据)、2指利润表数据、3指资产负债表数据。
BQYC
表示本期应采集户数。
TQYC
表示同期应采集户数。
BQAC
表示本期已采集户数。
TQAC
表示同期已采集户数。
BQDC
表示本期多采集户数。
TQDC
表示同期多采集户数。
BQWC
表示本期应采集而未采集户数。
TQWC
表示同期应采集而未采集户数。
2) 基于上图的字段及数据分析,定义SQL查询如下:
上图中的红框标识部分,主要用于输出财务报表类型中“年报”和“全部”的信息,而“季报”信息以蓝框标识部分为准。
n 实现步骤
该报表实现的详细步骤说明如下:
1) 定义参数。
2) 定制数据集,SQL语句如上图所示。
3) 检测输出字段。在SQL查询定制界面右侧的“查询输出 > 输出字段”的右键菜单中选择 检测输出字段类型。
4) 定义多重表头。在工具栏中单击 定义多重表头 按钮,进行如下设置:
5) 参数排版。在工具栏中单击 参数布局 按钮,进行如下设置:
6) 保存SQL查询。
7) 基于该查询定义灵活分析并保存,在浏览端浏览效果。
1.1.1.2 零申报状况
n 展现要点
1) 按照不同的年度和月份,查询相关数据。要求:都为下拉框选择,年度格式为“YYYY”,月份格式为“M月”。
2) 按照不同的机关,查询相关数据。要求:下拉树选择,且当所选机关为“省”级时,显示该省下所有市级数据;当所选机关为市级时,显示该市下所有县(区)数据;当所选机关为县(区)时,显示该县(区)数据。
3) 显示合计信息。
n 应用效果演示
该报表效果如下:
n 查询说明
1) 查询表:DW_SBZS_LSBZK
该表中机关信息是分别存储在两个字段“swjg_shi_dm”和“swjg_xian_dm”,其中“swjg_shi_dm”存储的是市级机关代码,“swjg_xian_dm”存储的是县(区)级机关代码。如下图所示:
2) 查询SQL如下:
由于该查询表中是在两个字段“swjg_shi”和“swjg_xian”中存储机关数据的,因此上图中蓝框和红框标识部分分别是对输出字段和条件进行判断后,确定进行匹配的字段是“swjg_shi”或“swjg_xian”。
n 实现步骤
该报表实现的详细步骤说明如下:
1) 定义参数。
2) 定制数据集,SQL语句如上图所示。
3) 检测输出字段。在SQL查询定制界面右侧的“查询输出 > 输出字段”的右键菜单中选择 检测输出字段类型。
4) 定义输出字段的别名,如下图所示:
5) 定义多重表头。在工具栏中单击 定义多重表头 按钮,进行如下设置:
6) 基于以上查询定制灵活分析并保存。
7) 打开灵活分析,单击工具栏 分类汇总 按钮,进行“合计”设置,如下图所示:
8) 合计设置后保存即可。
1.1.2 复杂报表
通常比较复杂的表样通过复杂报表来实现。
下面,我们总结河北地税项目中在表样或实现上比较特殊的一些报表的实现过程详细说明。
1.1.2.1 纳税服务情况报告表
n 展现要点
1) 按照不同的年度,查询相关数据。要求:下拉框选择,格式为“YYYY”。
2) 按照不同的机关,查询相关数据。要求:下拉树选择,且当所选机关为“省”级时,显示该省下所有县(区)汇总数据;当所选机关为“市”级时,显示该市下所有县(区)汇总数据;当所选机关为“县(区)”时,显示该县(区)数据。
3) 要求部分单元格允许前端录入:办税服务厅的上期末数量、纳税宣传咨询辅导的上期末数量。且有如下两点要求:
Ø 录入数据保存到业务库,报表显示录入后的数据。
Ø 由于非叶子节点机关的数据是通过汇总求和而来,因此只允许叶子节点机关的录入数据保存到业务库。
n 表样分析
表样参见 需求文档 > 报表需求 > 征管需求 > 纳税服务情况报告表。结合数据库查询主表(DW_XQ213)及表样获取如下信息:
1) 数据库主查询表只存储该表样的数据信息。
2) 表样数据区中各单元格的数据分别对应主查询表中的各字段,如:“邮寄申报(户)的上期末数量”的数据在主查询表(DW_XQ213)的字段“SBFS_SBHS_YJ_SQ”存储。
3) 数据库主查询表中对于表样中的各数据按照机构(SWJG_DM)和时间(TJND)划分。
4) 业务库中没有表存储该表样中行头和列头的内容。
综合以上情况认为应通过复杂报表来实现,具体的实现要点如下:
1) 表样固死,由于业务库中没有行头和列头内容,因此需要在表样设计时把行头和列头的内容写好。
2) 表样中的计算区域通过复杂报表自身的计算规则设置以获取相应的数据结果。
n 查询说明
该报表的定义主要涉及两个查询:主体查询和条件查询。
1) 查询表:DW_XQ213、DW_ZD_SWJG
2) 主体查询,主要是用于查询出报表的所有数据信息,如上期值等。其SQL如下:
上图中红框标识的部分对税务机关进行了处理:
n 当在报表前端选择“税务机关”参数值属于省级时,获得该省级下所有县级数据。
n 当在报表前端选择“税务机关”参数值属于市级时,获得将该市级下所有县级数据。
n 当在报表前端选择“税务机关”参数值属于县级时,获得该县级数据。
3) 条件查询,主要是用于查询出报表的附属信息,如编报机关等。其SQL如下:
以上查询中,根据参数“税务机关”值与表DW_ZD_SWJG中的swjg_dm匹配后,取出税务机关名称(即swjg_mc)做为输出字段“swjg_mc”的数据内容,将参数“查询年度”返回的结果做为字段“nd ”的数据内容。效果如下:
说明:这两个查询中的参数必须是相同的参数。
n 实现步骤
该表样详细的实现步骤说明如下:
9) 定制数据集,SQL语句如上图两个查询所示。
10) 检测输出字段。在SQL查询定制界面右侧的“查询输出 > 输出字段”的右键菜单中选择 检测输出字段类型。
11) 保存SQL查询。
12) 进入到报表设计器。
13) 设计好该报表的表样。如下图所示:
该表样按照统一规范设计,主要包含:底色、边框、对齐方式、合并单元格。
14) 将以上定义好的主体查询中的各字段拖拽到报表相应的各单元格中(如:字段“FWT_ZS_SQ”拖拽到单元格F6),实现SQL查询中各字段与区域“F6:F8、F10:F14、F16:F17、F19:F23、F25:F29、F31:F35、H6:H8、H10:H14、H16:H17、H19:H23、H25:H29、H31:H35”中的各单元格绑定。
15) 通过shift键分别选定这些区域,设置其扩展属性为:不扩展 > 汇总 > 求和。如下图所示:
16) 双击目标单元格弹出“公式窗口”,按照业务要求设置计算公式:
Ø 比重计算公式:单元格F9、F15、H9、H15的公式分别为“F13/F10”、“F19/F10”、“H13/H10”、“H19/H10”。
Ø 合计计算公式:单元格F18、F24、H18、H24的公式分别为
“sum(F11:F12)+sum(F15:F18)+sum(F21:F22)”、
“sum(H11:H13)+sum(H15:H19)+sum(H21:H22)”、“sum(F21:F25)”、
“sum(H24:H28)”。
Ø 差值计算公式:G列各单元格值为H列值减去F列值,如:单元格G6的公式为“H6-F6”
以上公式设置效果如下图红框标识的部分:
17) 设计表头的“编报机关”和“统计属期”内容。将条件查询的两个输出字段“swjg_mc”和“nd”分别拖拽到单元格J2和J3,在单元格B2设置公式为“CONCATENATE("编报机关:",J3)”,在单元格G2设置公式为“CONCATENATE("统计属期:",J2,"年")”。
18) 隐藏J列,设置J列的列宽为0即可,如下图所示:
19) 数据样式转换。
Ø 万元转换。分别选定单元格“F10、F13、F19、G10、G13、G19、H10、H13、H19”,在其右键菜单中选择 样式,设置其万元显示样式如下图:
Ø 百分比转换。分别选定单元格“F14、F20、G14、G20、H14、H20”,在其右键菜单中选择 样式,设置其万元显示样式如下图:
20) 设置单元格填报属性。实现在前端录入或修改区域“F6:F9”、“F30:F40”中单元格的数据。设置如下图所示:
21) 设置回写规则。实现在前端录入或修改的数据允许保存到指定物理表中。回写规则设置如下图所示:
回写表即是主体查询中的表DW_XQ213。
22) 参数排版。选择菜单栏 报表 > 参数排版,在“参数面板排版”中将参数的布局设置为横向并列,显示方式为“嵌入式”,如下图所示:
23) 保存该报表。
24) 进入 定制 > 宏管理,在“根目录”下找到该报表,进入到宏编辑界面,定义“数据回写”的报表宏,实现:只有税务机关是县级时,才允许把前端录入或修改的数据保存到回写表(DW_XQ213)。
效果展现
该报表效果展现如下:
上图中,只有“税务机关”选择县级机关时,工具栏才会显示“回写”按钮,允许用户录入或修改数据进行相关保存(表格区域中红框标识部分为允许前端录入数据的单元格)。
相关内容说明
1) “检测输出字段”操作的必要性说明:该操作能保证各字段的数据类型与数据库中对应的数据类型匹配,否则所有字段默认为“字符串”类型,将导致报表前端对报表数据进行计算出错。且由于oracle数据库数据类型中只有number而没有int和float类型,因此当系统自动检测出的字段无法与实际匹配时,需要用户手工在属性面板中进行数据类型的更改。
2) 在定义表头的“编报机关”时,税务机关名称对象是通过条件查询中查询表“DW_ZD_SWJG”中的字段“swjg_mc”取得,且该字段值通过参数“税务机关”返回。不能直接通过主体查询是的“税务机关”参数获得,因为通过该参数返回的只能只税务机关ID而非名称。
3) 由于业务库中的表中只能存储明细数据,而上级机关(如市级或省级)的数据是通过对下级数据汇总而得,因此需要通过宏去控制回写的权限:只允许县级机关的数据保存到业务库。
1.1.2.2 个体、私营经济及集贸市场税收征管情况报告表
n 展现要点
1) 以半年为期限,查询相关数据。要求:下拉框选择,格式为“YYYY上/下半年度”。
2) 按照不同的机关,查询相关数据。要求:下拉树选择,且当所选机关为“省”级时,显示该省下所有县(区)汇总数据;当所选机关为“市”级时,显示该市下所有县(区)汇总数据;当所选机关为“县(区)”时,显示该县(区)数据。
n 表样分析
表样参见 需求文档 > 报表需求 > 征管需求 > 个体、私营经济及集贸市场税收征管情况报告表。结合数据库查询主表(DW_XQ217)及表样获取如下信息:
1) 数据库主查询表只存储该表样的数据信息。
2) 表样数据区中各最内层列数据分别对应主查询表中的各字段,如:“年初户数”的数据在主查询表(DW_XQ217)字段“NMHS”存储。
3) 数据库主查询表中对于表样中的各数据按照机构(SWJG_DM)和时间“半年度”(BND)划分。
4) 业务库中没有表存储该表样中行头和列头的内容。
综合以上情况认为应通过复杂报表来实现,具体的实现要点如下:
1) 表样中列头写死。
2) 业务库中没有“项目”内容,可以通过在查询中以常量的方式把各项目ID定义好,再通过复杂报表中的函数实现以项目名称显示。
3) 表样中的计算区域通过复杂报表自身的计算规则设置以获取相应的数据结果。
n 查询说明
该报表的定义主要涉及两个查询:主体查询和条件查询。
1) 查询表:DW_XQ213、DW_ZD_SWJG
2) 主体查询,主要是用于查询出报表的所有数据信息,如年初户数等。其SQL如下:
上图中红框标识的部分对税务机关进行了处理:
n 当在报表前端选择“税务机关”参数值属于省级时,获得该省级下所有县级数据。
n 当在报表前端选择“税务机关”参数值属于市级时,获得将该市级下所有县级数据。
n 当在报表前端选择“税务机关”参数值属于县级时,获得该县级数据。
上图中蓝框标识的部分是自定义项目ID的SQL。
3) 条件查询,主要是用于查询出报表的附属信息,如编报机关等。其SQL如下:
以上查询以参数“税务机关”和“查询年度”返回的结果做为输出字段“swjg_mc”和“nd ”的数据内容。且该查询中的输出字段“swjg_mc”使用了转换规则,用以实现用税务机关名称显示,如下图所示:
该查询效果如下:
注意:这两个查询中的参数必须是相同的参数。
n 实现步骤
该表样详细的实现步骤说明如下:
1) 定制数据集,SQL语句如上图两个查询所示。
2) 检测输出字段。在SQL查询定制界面右侧的“查询输出 > 输出字段”的右键菜单中选择 检测输出字段类型。
3) 保存SQL查询。
4) 进入到报表设计器。
5) 设计好该报表的表样。如下图所示:
该表样按照统一规范设计,主要包含:底色、边框、对齐方式、合并单元格。
6) 将以上定义好的主体查询中的字段f1拖拽到单元格C10,其它各字段拖拽到区域“G10:K10、N10、P10:U10”中的各单元格。
7) 双击目标单元格弹出“公式窗口”,按照业务要求设置计算公式:
Ø 序号公式:单元格B10的公式为“&C10+1”,同时自定义B10单元格的父格为C10,这样才能实现业务要求的序号值。
Ø 项目内容公式:单元格D10的公式为“IF(C10=="1","私营经济","个体经济")”,该公式表示根据C10单元格的值显示相应的项目内容。
Ø 合计公式:区域“E9:K9、M9:U9”各单元格的合计值是通过对当前列的合计(如:单元格E9的合计公式为“sum(E10)”);单元格E10的公式为“SUM(M10,U10)”;单元格F10的公式为“SUM(H10,O10,T10)”;单元格M10的公式为“SUM(I10,K10)”;单元格O10的公式为“SUM(P10:S10)”。
Ø 比值公式:单元格L9、L10的公式分别为“K9/I9”、“K10/I10”。
8) 隐藏C列。将C列的列宽设置为0,如下图所示:
9) 设计表头的“编报机关”和“考核属期”内容。将条件查询的两个输出字段“bnd”和“swjg_mc”分别拖拽到单元格D12和E12,在单元格B2设置公式为“CONCATENATE("编报机关:",E12)”,在单元格S2设置公式为“CONCATENATE("考核属期:",LEFT(D12,4),IF(RIGHT(D12,2)=="01","上半年度","下半年度")))”。
10) 隐藏第12行。将12行的行高设置为0,如下图所示:
11) 数据样式转换。
Ø 万元转换。分别选定单元格“E9:E10、I9:I10、K9:K10、M9:M10、U9:U10”,在其右键菜单中选择 样式,设置其万元显示样式如下图:
Ø 百分比转换。分别选定单元格“L9、L10”,在其右键菜单中选择 样式,设置其百分比显示样式如下图所示:
12) 参数排版。选择菜单栏 报表 > 参数排版,在“参数面板排版”中将参数的布局设置为横向并列,显示方式为“嵌入式”,如下图所示:
13) 保存该报表,在浏览端浏览效果。
效果展现
该报表效果展现如下:
上图中,只有
相关内容说明
1) “检测输出字段”操作的必要性说明:该操作能保证各字段的数据类型与数据库中对应的数据类型匹配,否则所有字段默认为“字符串”类型,将导致报表前端对报表数据进行计算出错。且由于oracle数据库数据类型中只有number而没有int和float类型,因此当系统自动检测出的字段无法与实际匹配时,需要用户手工在属性面板中进行数据类型的更改。
2) 在定义表头的“编报机关”时,税务机关名称对象是通过条件查询中“税务机关”参数返回值赋给字段“swjg_mc”后,通过转换规则才能获取到。不能直接通过主体查询是的“税务机关”参数获得,因为通过该参数返回的只能只税务机关ID而非名称。
1.1.2.3 集贸市场税收征管情况报告表1
n 展现要点
1) 以半年为期限,查询相关数据。要求:下拉框选择,格式为“YYYY上/下半年度”。
2) 按照不同的机关,查询相关数据。要求:下拉树选择,且当所选机关为“省”级时,显示该省下所有县(区)汇总数据;当所选机关为“市”级时,显示该市下所有县(区)汇总数据;当所选机关为“县(区)”时,显示该县(区)数据。
3) 要求数据首次打开报表时,表中“年纳税额”的数据通过手工录入获取保存到业务库后,才从业务库中读取。且有如下两点要求:
Ø 录入数据保存到业务库,报表显示录入后的数据。
Ø 由于非叶子节点机关的数据是通过汇总求和而来,因此只允许叶子节点机关的录入数据保存到业务库。
n 表样分析
表样参见 需求文档 > 报表需求 > 征管需求 > 集贸市场税收征管情况报告表1。结合数据库查询主表(DW_XQ218)及表样获取如下信息:
1) 数据库主查询表只存储该表样的数据信息。
2) 表样数据区中最外层各列数据分别对应主查询表中的各字段,如:“市场数量”的数据在主查询表(DW_XQ218)的字段“SCS”存储。
3) 数据库主查询表中对于表样中的各数据按照机构(SWJG_DM)和时间“半年度”(BND)划分。
4) 业务库中没有表存储该表样中行头和列头的内容。
综合以上情况认为应通过复杂报表来实现,具体的实现要点如下:
1) 表样固死,由于业务库中没有行头和列头内容,因此需要在表样设计时即把行头和列头内容写好。
2) 通过SQL语句将项目ID以常量定义好,如:定义“年纳税额10万元以下”这一项的ID为“01”。
3) 表样中的计算区域通过复杂报表自身的计算规则设置以获取相应的数据结果。
n 查询说明
1) 查询表:DW_XQ218
2) 查询SQL如下:
上图中查询b1是根据用户所选的半年度属期而查询出的前一个半年度的数据,对应到表样中各列的“年初数”;查询b2是根据所选的半年度属期而查询出该半年度的数据,对应到表样中各列的“年末数”及其它列数据。
其中,红框标识的部分对税务机关进行了处理:
n 当在报表前端选择“税务机关”参数值属于省级时,获得该省级下所有县级数据。
n 当在报表前端选择“税务机关”参数值属于市级时,获得将该市级下所有县级数据。
n 当在报表前端选择“税务机关”参数值属于县级时,获得该县级数据。
蓝框标识的部分是自定义各项目ID的SQL。
n 实现步骤
该表样详细的实现步骤说明如下:
1) 定制数据集,SQL语句如上图所示。
2) 检测输出字段。在SQL查询定制界面右侧的“查询输出 > 输出字段”的右键菜单中选择 检测输出字段类型。
3) 保存SQL查询。
4) 进入到报表设计器。
5) 设计好该报表的表样。如下图所示:
该表样按照统一规范设计,主要包含:底色、边框、对齐方式、合并单元格。
6) 将以上定义好的查询中的各字段拖拽到报表相应的各单元格中(如:字段“f1”拖拽到单元格E8),实现SQL查询中各字段与区域“F8:I8、K8:P8”中的各单元格绑定。
7) 选定单元格E8,设置其扩展属性如下图所示:
8) 设置区域“F8:I8、K8:P8”中各单元格的扩展属性为:不扩展 > 汇总。
9) 自定义区域“F8:I8、K8:P8”中各单元格的父格为E8。
10) 设置合计公式:区域“F7:I7、K7:P7”中各单元格的值为当前列所有单元格的合计值,因此直接通过sum函数将该列所有单元格进行合计即可,如:单元格F7的合计公式为“SUM(F8:F14)”;单元格J7的公式为“Sum(K7:N7)”;单元格J8的公式为“Sum(K8:N8)”。
11) 隐藏E列,设置该列的列宽为0。
12) 设置单元格填报属性。实现在前端录入或修改区域“F8:I14”、“K8:P14”中单元格的数据。设置如下图所示:
13) 设置回写规则。实现在前端录入或修改的数据允许保存到指定物理表中。回写规则设置如下图所示:
回写表即是主体查询中的表DW_XQ218。
25) 设计表头的“编报机关”和“考核属期”内容。查询的两个输出字段“tjsq”和“swjg_mc”分别拖拽到单元格Q2和Q3,在单元格B2设置公式为“CONCATENATE("编报机关:",Q3)”,在单元格N2设置公式为“IF(RIGHT(Q2,2)=="01",CONCATENATE("考核属期:",LEFT(Q2,4),"年上半年"),CONCATENATE("考核属期:",LEFT(Q2,4),"年下半年"))”。
26) 万元转换。分别选定单元格“J7:P8”,在其右键菜单中选择 样式,设置其万元显示样式如下图所示:
14) 参数排版。选择菜单栏 报表 > 参数排版,在“参数面板排版”中将参数的布局设置为横向并列,显示方式为“嵌入式”,如下图所示:
15) 保存该报表,在浏览端浏览效果。
16) 进入 定制 > 宏管理,在“根目录”下找到该报表,进入到宏编辑界面,定义“数据回写”的报表宏,实现:只有税务机关是县级时,才允许把前端录入或修改的数据保存到回写表(DW_XQ218)。
效果展现
该报表效果展现如下:
上图中,只有“税务机关”选择县级机关时,工具栏才会显示“回写”按钮,允许用户录入或修改数据进行相关保存,且只有在首次打开时才需要手工录入,之后都是直接到业务库中读取数据。
相关内容说明
1) “检测输出字段”操作的必要性说明:该操作能保证各字段的数据类型与数据库中对应的数据类型匹配,否则所有字段默认为“字符串”类型,将导致报表前端对报表数据进行计算出错。且由于oracle数据库数据类型中只有number而没有int和float类型,因此当系统自动检测出的字段无法与实际匹配时,需要用户手工在属性面板中进行数据类型的更改。
2) 由于表样行头已经固定设计了,因此单元格E8中的扩展属性必须是“覆盖单元格”的方式,才能依次以覆盖的方式填充数据;且区域“F8:I8、K8:P8”中各单元格必须以单元格E8为左父格,才能以覆盖的方式正确填充数据。
3) 由于业务库中的表中只能存储明细数据,而上级机关(如市级或省级)的数据是通过对下级数据汇总而得,因此需要通过宏去控制回写的权限:只允许县级机关的数据保存到业务库。
1.1.2.4 营业税分税目收入情况季报表
n 展现要点
1) 以年和季度为期限,根据选定的年及该年的季度查询相关数据。要求:年和季度选择皆为下拉框选择,年格式为“YYYY”,季度格式为“第Q季度”。
2) 按照不同的机关,查询相关数据。要求:下拉树选择,且当所选机关为“省”级时,显示该省下所有县(区)汇总数据;当所选机关为“市”级时,显示该市下所有县(区)汇总数据;当所选机关为“县(区)”时,显示该县(区)数据。
n 表样分析
表样参见 需求文档 > 报表需求 > 一处需求 > 营业税分科目收入情况季报表。结合数据库查询主表(DW_XQ2211)及表样获取如下信息:
1) 数据库主查询表只存储该表样的数据信息。
2) 表样数据区中各最内层列数据分别对应主查询表中的各字段,如:“本季完成”的数据在主查询表(DW_XQ2211)字段“bjwc”存储。
3) 数据库主查询表中对于表样中的各数据按照机构(SWJG_DM)、时间“年度、季度”(ND、JD)、征收品目代码(ZSPM_DM)划分。
4) 行头的内容以代码的方式存储在主查询表(DW_XQ2211),对应的字段信息为“征收品目代码(ZSPM_DM)”。
5) 业务库中没有表存储该表样中列头的内容。
6) 表样中“滞纳金”所在行不属于任何一个征收品目。
综合以上情况认为应通过复杂报表来实现,具体的实现要点如下:
1) 通过两个SQL查询,获取表样所有数据:一个查询获取征收品目的数据,一个查询获取“滞纳金”的数据。
2) 表样中行头和列头写死。
3) 表样中的计算区域通过复杂报表自身的计算规则设置以获取相应的数据结果。
n 查询说明
该报表的定义主要涉及两个查询:征收品目查询和滞纳金查询。
1) 查询表:DW_XQ2211、DW_ZD_SM
2) 征收品目查询,主要是用于查询出报表征收品目的所有数据信息,如交通运输业等。其SQL如下:
上图显示的是union查询中的一个查询成员,对该段查询的说明如下:
Ø 查询通过“substr(zspm_dm,1,2)=’01’”表达式过滤出“交通运输业”的相关数据。
Ø 不同税目的查询过滤条件说明如下:
税目
过滤条件
一、交通运输业
substr(zspm_dm, 1, 2) ='01'
二、建筑业
substr(zspm_dm, 1, 2) ='02'
三、金融保险业
substr(zspm_dm, 1, 2) ='03'
其中:金融
zspm_dm in ('0301','0305','0306','0308')
保险
zspm_dm in('0311','0302','0303','0304')
四、邮电通信业
substr(zspm_dm, 1, 2) ='04'
其中:邮政
zspm_dm='0401' and zsxm_dm='02'
电信
zspm_dm='0402' and zsxm_dm='02'
移动通信
zspm_dm='0403' and zsxm_dm='02'
五、文化体育业
substr(zspm_dm, 1, 2) ='05'
六、娱乐业
substr(zspm_dm, 1, 2) ='06'
七、服务业
substr(zspm_dm, 1, 2) ='07'
其中:饮食
zspm_dm='0703' and zsxm_dm='02'
旅店
zspm_dm='0702' and zsxm_dm='02'
广告
zspm_dm='0707' and zsxm_dm='02'
旅游
zspm_dm='0704' and zsxm_dm='02'
租赁
zspm_dm='0708' and zsxm_dm='02'
八、转让无形资产
substr(zspm_dm, 1, 2) ='08'
九、销售不动产
substr(zspm_dm, 1, 2) ='09'
根据以上列表分别定义好各税目的SQL,并通过union后,各税目只返回一条记录。
Ø 通过case语句来对税务机关返回值进行一个判定:当税务机关返回省级节点ID时,对所有县(区)数据统计求和后显示;当税务机关返回市级节点ID时,对该下所有县(区)数据统计求和后显示;当税务机关返回县(区)级节点ID时,显示该县(区)数据。
3) 滞纳金查询,主要是用于查询出报表中滞纳金所在行的数据信息。其SQL如下:
n 实现步骤
该表样详细的实现步骤说明如下:
1) 定制数据集,SQL语句如上图两个查询所示。
2) 检测输出字段。在SQL查询定制界面右侧的“查询输出 > 输出字段”的右键菜单中选择 检测输出字段类型。
3) 保存SQL查询。
4) 进入到报表设计器。
5) 设计好该报表的表样。如下图所示:
该表样按照统一规范设计,主要包含:底色、边框、对齐方式、合并单元格。
6) 将以上定义好的征收品目查询中的字段分别拖拽到单元格“D5、E5、H5、I5”。
7) 将以上定义好的滞纳金查询中的字段分别拖拽到单元格“D24、E24、H24、I24”。
8) 双击目标单元格弹出“公式窗口”,按照业务要求设置计算公式:
Ø 合计公式:区域“D25:F25、H25:J25”各单元格的合计值是通过对当前列的合计(如:单元格D25的合计公式为“SUM(D5:D24)”)。
Ø 差值公式:单元格F5、F24、J5、J24的公式分别为“D5-E5”、“D24-E24”、“H5-I5”、“H24-I24”。
Ø 比值公式:单元格G5、G24、G25、K5、K24、K25的公式分别为“F5/E5”、“F24/E24”、“F25/E25”、“J5/I5”、“J24/I24”、“J25/I25”。
9) 设计表头的“税务机关”和“日期”内容。将征收品目查询的参数“税务机关”拖拽到单元格B2;将参数“查询年度”拖拽到单元格B27;将参数“查询季度”拖拽到单元格B28,在单元格E2设置公式为“CONCATENATE(B27,"年",B28,"季度")”。
10) 隐藏第27和28行。将这两行行的行高设置为0,如下图所示:
11) 数据样式转换。
Ø 万元转换。分别选定单元格“B5:F25、H5:J25”,在其右键菜单中选择 样式,设置其万元显示样式如下图:
Ø 百分比转换。分别选定单元格“G5:G25、K5:K25”,在其右键菜单中选择 样式,设置其百分比显示样式如下图所示:
12) 参数排版。选择菜单栏 报表 > 参数排版,在“参数面板排版”中将参数的布局设置为横向并列,显示方式为“嵌入式”,如下图所示:
13) 保存该报表,在浏览端浏览效果。
效果展现
该报表效果展现如下:
相关内容说明
1) “检测输出字段”操作的必要性说明:该操作能保证各字段的数据类型与数据库中对应的数据类型匹配,否则所有字段默认为“字符串”类型,将导致报表前端对报表数据进行计算出错。且由于oracle数据库数据类型中只有number而没有int和float类型,因此当系统自动检测出的字段无法与实际匹配时,需要用户手工在属性面板中进行数据类型的更改。
2) 直接将参数拖拽到表头,在前端显示的效果是“参数名称:参数值”。如该示例中的“税务机关”参数。若不想显示参数名称或显示其它名称,则可以考虑通过拖拽字段来实现。
1.1.2.5 营业税税源汇总表
n 展现要点
1) 按照不同的年度,查询相关数据。要求:下拉框选择,格式为“YYYY”。
2) 按照不同的机关,查询相关数据。要求:下拉树选择,且当所选机关为“省”级时,显示该省下所有县(区)汇总数据;当所选机关为“市”级时,显示该市下所有县(区)汇总数据;当所选机关为“县(区)”时,显示该县(区)数据。
n 表样分析
表样参见 需求文档 > 报表需求 > 一处需求 > 营业税税源汇总表。结合数据库查询主表(dw_xq2213)及表样获取如下信息:
1) 数据库主查询表只存储了营业税的信息。
2) 数据库主查询表中分别将表样列头中各列数据存储在一个字段中。
3) 数据库主查询表中对于表样中的各营业税税种是通过税目代码(zspm_dm)来区分的。
4) 表样为交叉式的报表。
综合以上情况认为应通过复杂报表来实现,具体的实现要点如下:
1) 每一行记录对应一个SQL,共三十个SQL,通过union的方式集结成一个整体SQL。
2) 表样中的计算区域通过复杂报表自身的计算规则设置以获取相应的数据结果。
n 查询说明
1) 查询表:dw_xq2213、ods_zd_sm
2) 查询SQL如下:
上图显示的是union查询中的一个查询成员,对该段查询的说明如下:
Ø 查询a从表dw_xq2213通过过滤条件“substr(zspm_dm,1,2)=’01’”查询出税目“交通运输”在国有企业、集体企业等的营业税数据;查询b从表ods_zd_sm通过过滤条件“zsxm_dm=’02’”查询出“交通运输业”的税率。
Ø 不同税目的查询过滤条件说明如下:
税目
过滤条件
一、交通运输业
substr(zspm_dm, 1, 2) ='01'
1、公路运输
zspm_dm='0105'
2、管道运输
zspm_dm='0104'
3、水上运输
zspm_dm='0102'
4、装卸搬运
zspm_dm='0106'
二、建筑业
substr(zspm_dm, 1, 2) ='02'
三、金融保险业
substr(zspm_dm, 1, 2) ='03'
(一)金融业
zspm_dm in ('0301','0305','0306','0308')
其中:银行
zspm_dm='0305'
信用社
zspm_dm='0306'
证券
zspm_dm='0307'
(二)保险业
zspm_dm in('0311','0302','0303','0304')
其中:财产保险
zspm_dm in ('0311','0302')
人寿保险
zspm_dm = '0303'
四、邮电通信业
substr(zspm_dm, 1, 2) ='04'
其中:邮政
zspm_dm='0401'
电信
zspm_dm='0402'
移动通信
zspm_dm='0403'
五、文化体育业
substr(zspm_dm, 1, 2) ='05'
六、娱乐业
substr(zspm_dm, 1, 2) ='06'
七、服务业
substr(zspm_dm, 1, 2) ='07'
其中:饮食
zspm_dm='0703'
旅店
zspm_dm='0702'
广告
zspm_dm='0707'
旅游
zspm_dm='0704'
八、转让无形资产
substr(zspm_dm, 1, 2) ='08'
九、销售不动产
substr(zspm_dm, 1, 2) ='09'
其中:房地产业
zspm_dm in ('0901','0902')
十、滞纳金、罚款
Zfzl in ('1', '2')
根据以上列表分别定义好各税目的SQL,并通过union后,各税目只返回一条记录。
Ø 通过case语句来对税务机关返回值进行一个判定:当税务机关返回省级节点ID时,对所有县(区)数据统计求和后显示;当税务机关返回市级节点ID时,对该下所有县(区)数据统计求和后显示;当税务机关返回县(区)级节点ID时,显示该县(区)数据。
Ø 对税率信息,有可能存在税率不同的情况(如:当机关参数选择省时,各市级的税率不一样),此时进行统一处理:取税率中的最大值(即max(sl))。
说明:数
展开阅读全文