问题:今天碰到个报表多达37个,要使用一个cpt进行处理的棘手问题,因为之前设计增值税的时候在系统使用了单据类别来解决区分各个城市公司在cpt模板上取数不同的问题,同时把cpt作为模板与单据分类关联绑定,再把单据分类给对应的企业机构使用,就能够通过配置的方式解决报表模板标准和差异化的问题,这种方式有个缺陷就是必须预置好单据类别下有多少单据,需要管理员处理,可是今天碰到所得税多达37个表,那么用单据类别+单据的方式来管理就不适合了,会出现37个表组合的方式过多,会导致单据分类太多的问题,并且无法做到用户自行勾选使用所得税37张表里面哪些表的灵活配置。
解决方案:37个表仍然使用一个cpt进行处理,同时单据分类和单据的关系不改变,在单据下再增加一个属性表,当单据分类指定模板以后,再把单据分类给到指定企业机构,同时把单据分类下的单据默认生成模板单据机构属性表,那么用户再使用报表的时候,可以对属性表进行操作,因为企业机构分配的单据分类和模板是固定的,通过属性表控制哪些单据是不需要显示和使用的。整体关系图如下:
修改点:
1、增加单据属性表,在将单据分类分配给机构时,将分类下的单据自动与机构形成单据属性控制表
2、提供功能供用户进行机构自身默认的单据进行属性控制是否需要对应的单据,如不需要则隐藏cpt中对应的sheet
3、cpt中要处理一段web属性,取到打开cpt报表的机构对应的单据属性,通过js控制对应的cpt中的sheet是否隐藏