<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<plugin>
    <id>com.fr.plugin.function.finalAccounts</id>
    <name><![CDATA[决算报表函数插件]]></name>
    <active>yes</active>
    <version>1.5</version>
    <env-version>10.0</env-version>
    <jartime>2018-09-18</jartime>
    <vendor>郑威</vendor>
    <description><![CDATA[决算报表函数]]></description>
    <change-notes><![CDATA[
      [2020-12-31]决算快速查询公式 添加发生函数状态以及生成方式过滤<br/>
      [2020-12-27]增加决算快速查询公式<br/>
      [2020-12-08]增加对预算层级，政府经济科目支持，多增加10个辅助项支持<br/>
      [2019-09-26]优化期末函数速度，函数名改为QC,新加发生额函数<br/>
      [2019-09-26]优化期初函数速度，函数名改为QC,新加发生额函数<br/>
      [2019-09-20]期末函数<br/>
      [2019-09-19]期初函数<br/>
      [2019-09-18]初始化插件。<br/>
      [2019-12-07]新加条件求和函数 函数代码优化 新加发生额函数,期末函数借贷方向参数<br/>
      [2019-12-18]调整数前函数<br/>
      [2019-12-18]调整数后函数<br/>
      [2019-12-19]修复调整数金额为0bug<br/>
      [2019-01-07]插件缓存区分对应的借贷方向<br/>
      [2019-01-07]添加html反转义函数<br/>
      [2019-01-07]添加获取单位字段函数<br/>
    ]]></change-notes>
    <extra-core>
        <LocaleFinder class="com.fr.plugin.toolBar.PluginLocaleFinder"/>
<!--        <WebService class="com.fr.plugin.toolBar.service.CacheServer"/>-->
<!--        <FunctionDefineProvider class="com.fr.plugin.Initial" name="Initial"-->
<!--                                description="函数说明： 期初余额&#x000A;函数功能： 取指定科目和期间的期初余额&#x000A;函数格式： Initial('定义的数据库连接','会计科目编码','会计年度','会计期间','借贷方向','是否包含未记账凭证','辅助核算')&#x000A;示例:   Initial('yncs','[&quot;1001&quot;,&quot;1002&quot;]','2019','09','借方',false,'[&quot;部门&quot;:&quot;1&quot;,&quot;自定义辅助核算类型7&quot;:&quot;2&quot;]')"/>-->
<!--        <FunctionDefineProvider class="com.fr.plugin.Ending" name="Ending"-->
<!--                                description="函数说明： 期末余额&#x000A;函数功能： 取指定科目和期间的期末余额&#x000A;函数格式： Ending('定义的数据库连接','会计科目编码','会计年度','会计期间','借贷方向','是否包含未记账凭证','辅助核算')&#x000A;示例:   Ending('yncs','[&quot;1001&quot;,&quot;1002&quot;]','2019','09','借方',false,'[&quot;部门&quot;:&quot;1&quot;,&quot;自定义辅助核算类型7&quot;:&quot;2&quot;]')"/>-->
<!--        <FunctionDefineProvider class="com.fr.plugin.QC" name="QC"-->
<!--                                description="函数说明： 期初余额&#x000A;函数功能： 取指定科目和期间的期初余额&#x000A;函数格式： QC('定义的数据库连接','单位id','会计科目编码','会计年度','辅助核算')&#x000A;示例:   QC('yncs','5c1c107df48311e890e760da833f7173','[&quot;1001&quot;,&quot;1002&quot;]','2019','[&quot;部门&quot;:&quot;1&quot;,&quot;Ass01&quot;:&quot;2&quot;]')&#x000A; 注:辅助核算项目为自定义核算项目时key为自定义核算项目类型编码 "/>-->
<!--        <FunctionDefineProvider class="com.fr.plugin.Incurred" name="Incurred"-->
<!--                                description="函数说明： 发生额&#x000A;函数功能： 取指定科目和期间的发生额&#x000A;函数格式： Incurred('定义的数据库连接','单位id','会计科目编码','会计年度','会计期间','辅助核算','单据状态','借贷方向','生成方式')&#x000A;示例:   Initial('yncs','5c1c107df48311e890e760da833f7173','[&quot;1001&quot;,&quot;1002&quot;]','2019','09','[&quot;部门&quot;:&quot;1&quot;,&quot;Ass01&quot;:&quot;2&quot;]','1',1,'[&quot;1&quot;,&quot;2&quot;]')&#x000A; 注:辅助核算项目为自定义核算项目时key为自定义核算项目类型编码;&#x000A;单据状态 1-已创建，2-已制单，3-已审核，4-已记账&#x000A; 借贷方向1 借方 2贷方 生成方式 根据字典（字典类型 voucher_generate_type）" />-->
<!--        <FunctionDefineProvider class="com.fr.plugin.QM" name="QM"-->
<!--                                description="函数说明： 期末余额&#x000A;函数功能： 取指定科目和期间的期末余额&#x000A;函数格式： QM('定义的数据库连接','+单位id','会计科目编码','会计年度','会计期间','辅助核算','单据状态','借贷方向')&#x000A;示例:   QM('yncs','5c1c107df48311e890e760da833f7173','[&quot;1001&quot;,&quot;1002&quot;]','2019','09','[&quot;部门&quot;:&quot;1&quot;,&quot;Ass01&quot;:&quot;2&quot;]','1',1)&#x000A; 注:辅助核算项目为自定义核算项目时key为自定义核算项目类型编码;&#x000A;单据状态 1-已创建，2-已制单，3-已审核，4-已记账&#x000A; 借贷方向1 借方 2贷方"/>-->
        <FunctionDefineProvider class="com.fr.plugin.SumIf" name="SumIf" description="函数说明：条件判断求和 目前只支持字符串=和!= 函数功能: 列判断求和 SumIf(求和列,左判断参数(列或字符串),'=',右判断参数(列或字符串)) SumIf(['1','2','3'],['1','2','1'],'=','1') 结果为 4(1+3)"/>
        <FunctionDefineProvider class="com.fr.plugin.AdjustAfter" name="AdjustAfter" description="函数说明： 调整数前函数 函数功能: 获取项目调整前的金额 AdjustAfter('定义的数据库连接','+单位id','项目编码','会计年度','资金来源编码','功能科目编码','支出性质') &#x000A;示例:   AdjustAfter('yncs','5c1c107df48311e890e760da833f7173','10101','2019','10101','10101','1')"/>
        <FunctionDefineProvider class="com.fr.plugin.AdjustBefore" name="AdjustBefore" description="函数说明： 调整数后函数： 函数功能:获取项目调整后的金额  AdjustBefore('定义的数据库连接','+单位id','项目编码','会计年度','资金来源编码','功能科目编码','支出性质') &#x000A;示例:   AdjustBefore('yncs','5c1c107df48311e890e760da833f7173','10101','2019','10101','10101','1')"/>
        <FunctionDefineProvider class="com.fr.plugin.AccountSuit" name="AccountSuit" description="函数说明： +单位(单位)函数 ： 函数功能： 获取单位对应字段默认名称字段 AccountSuit('定义的数据库连接','+单位id','+单位字段') AccountSuit('yncs','5c1c107df48311e890e760da833f7173','name')"/>
        <FunctionDefineProvider class="com.fr.plugin.UnescapeHtml" name="UnescapeHtml" description="函数说明： Html反转义函数： 函数功能:Html反转义  UnescapeHtml(列或字符串) UnescapeHtml('&lt;我的') "/>
        <FunctionDefineProvider class="com.fr.plugin.JSQC" name="JSQC"
                                description="函数说明： 决算期初&#x000A;函数功能： 取指定科目和期间的发生额&#x000A;函数格式： JSQC('定义的数据库连接','+账套id','会计科目编码','辅助核算')&#x000A;示例:   JSIncurred('yncs','5c1c107df48311e890e760da833f7173','[&quot;1001&quot;,&quot;1002&quot;]','[&quot;部门&quot;:&quot;1&quot;,&quot;Ass01&quot;:&quot;2&quot;]')&#x000A; " />
        <FunctionDefineProvider class="com.fr.plugin.JSIncurred" name="JSIncurred"
                                description="函数说明： 决算发生额&#x000A;函数功能： 取指定科目和期间的发生额&#x000A;函数格式： JSIncurred('定义的数据库连接','+账套id','会计科目编码','辅助核算','单据状态','借贷方向','生成方式')&#x000A;示例:   JSIncurred('yncs','5c1c107df48311e890e760da833f7173','[&quot;1001&quot;,&quot;1002&quot;]','[&quot;部门&quot;:&quot;1&quot;,&quot;Ass01&quot;:&quot;2&quot;]','[&quot;3&quot;,&quot;4&quot;]',1,'[&quot;1&quot;,&quot;2&quot;]')&#x000A; 注:辅助核算项目为自定义核算项目时key为自定义核算项目类型编码;&#x000A;单据状态 1-已创建，2-已制单，3-已审核，4-已记账&#x000A; 借贷方向1 借方 2贷方 生成方式 根据字典（字典类型 voucher_generate_type）" />
        <FunctionDefineProvider class="com.fr.plugin.JSQM" name="JSQM"
                                description="函数说明： 决算期末&#x000A;函数功能： 取指定科目和期间的发生额&#x000A;函数格式： JSQM('定义的数据库连接','+账套id','会计科目编码','辅助核算','单据状态','借贷方向','生成方式')&#x000A;示例:   JSQM('yncs','5c1c107df48311e890e760da833f7173','[&quot;1001&quot;,&quot;1002&quot;]','[&quot;部门&quot;:&quot;1&quot;,&quot;Ass01&quot;:&quot;2&quot;]','[&quot;3&quot;,&quot;4&quot;]',1,'[&quot;1&quot;,&quot;2&quot;]')&#x000A; 注:辅助核算项目为自定义核算项目时key为自定义核算项目类型编码;&#x000A;单据状态 1-已创建，2-已制单，3-已审核，4-已记账&#x000A; 借贷方向1 借方 2贷方 生成方式 根据字典（字典类型 voucher_generate_type）" />
        <LocaleFinder class="com.fr.plugin.db.redis.RedisLocaleFinder"/>
    </extra-core>
    <extra-designer>
        <ToolbarItemProvider class="com.fr.plugin.toolBar.ui.ClearCacheToolbarUI"/>
        <ToolbarItemProvider class="com.fr.plugin.toolBar.ui.SaveToolbarUI"/>
        <TableDataDefineProvider class="com.fr.plugin.data.DemoTableDataBridge"/>
<!--        <ConnectionProvider class="com.fr.plugin.db.redis.RedisConnectionImpl"/>-->
<!--        <TableDataDefineProvider class="com.fr.plugin.db.redis.RedisTableDataDefine"/>-->
<!--        <ServerTableDataDefineProvider class="com.fr.plugin.db.redis.RedisTableDataDefine"/>-->
<!--        <TableDataDefineProvider class="com.fr.plugin.db.redis.RedisScriptTableDataDefine"/>-->
<!--        <ServerTableDataDefineProvider class="com.fr.plugin.db.redis.RedisScriptTableDataDefine"/>-->
<!--        <ServerTableDataDefineProvider class="com.fr.plugin.tabledata.demo.DemoServerTableDataBridge"/>-->
    </extra-designer>
    <extra-decision>
        <HttpHandlerProvider class="com.fr.plugin.toolBar.PluginHandlerProvider"/>
        <URLAliasProvider class="com.fr.plugin.toolBar.PluginURLAliasProvider"/>
        <HttpHandlerProvider class="com.fr.plugin.toolBar.SaveHandlerProvider"/>
        <URLAliasProvider class="com.fr.plugin.toolBar.SaveURLAliasProvider"/>
<!--        <UniversalConnectionProvider class="com.fr.plugin.db.redis.RedisUniversalConnectionImpl"/>-->
<!--        <UniversalServerTableDataProvider class="com.fr.plugin.db.redis.RedisUniversalTableDataImpl" />-->
<!--        <UniversalServerTableDataProvider class="com.fr.plugin.db.redis.RedisScriptUniversalTableDataImpl"/>-->
<!--        <HttpHandlerProvider class="com.fr.plugin.db.redis.RedisHttpHandlerProvider"/>-->
    </extra-decision>
    <extra-report>
        <JavaScriptFileHandler class="com.fr.plugin.toolBar.handler.CacheButtonHandler"/>
        <JavaScriptFileHandler class="com.fr.plugin.toolBar.handler.SaveButtonHandler"/>
    </extra-report>
<!--    <function-recorder class="com.fr.plugin.Initial"/>-->
<!--    <function-recorder class="com.fr.plugin.Ending"/>-->
<!--    <function-recorder class="com.fr.plugin.QC"/>-->
<!--    <function-recorder class="com.fr.plugin.Incurred"/>-->
<!--    <function-recorder class="com.fr.plugin.QM"/>-->
    <function-recorder class="com.fr.plugin.SumIf"/>
    <function-recorder class="com.fr.plugin.AdjustAfter"/>
    <function-recorder class="com.fr.plugin.AdjustBefore"/>
    <function-recorder class="com.fr.plugin.AccountSuit"/>
    <function-recorder class="com.fr.plugin.UnescapeHtml"/>
    <function-recorder class="com.fr.plugin.JSQC"/>
    <function-recorder class="com.fr.plugin.JSIncurred"/>
    <function-recorder class="com.fr.plugin.JSQM"/>
<!--    <function-recorder class="com.fr.plugin.db.redis.core.RedisTableData"/>-->
<!--    <function-recorder class="com.fr.plugin.db.redis.core.RedisScriptTableData"/>-->
</plugin>