使用场景:当生成凭证的时候需要判断唯一生成凭证,但是业务逻辑特别复杂无法直接由允许同账簿生成凭证参数控制的时候可以尝试开启自定义唯一标识。这个标识的作用是可以在生成凭证的时候做数据库级别的唯一校验,保证对应的标识不会出现第二张重复的凭证。
使用前提: 4.012版本之后可以启用
5.004之后增加强控
示例场景:1、客户需要每个付款人在每个付款期间各生成一张凭证(同一模板),常规配置下如果只是开启同账簿多次生成凭证凭证+忽略模板校验的情况下,就会出现每点一次重复生成一张凭证的情况,虽然客户可以严格控制每期每个人只点一次,但是存在例如智能方案执行或者误点的情况比比皆是,交由源头控制过于理想化。类似此类情况可以尝试开启自定义唯一标识,标识可以配置付款人以及付款期间,这样在生成凭证之后就会严格按照单据类型+单据ID+账簿类型+付款人+付款期间做数据库级别唯一性控制,重复生成的凭证就无法正常生成。
配置流程:
在元数据DAP配置 ai_dapconfig中配置自定义唯一标识,根据业务真实情况配置。(不会打开的直接取开发平台搜索ai_dapconfig即可,然后点击列表预览,如果不是新二开单据,正常都会在列表里面找到这张单据的配置信息,点进去配置即可)
配置示例:
如果是单据属性字段,直接取属性字段值,如果是生成凭证的属性标识,直接取$+对应的属性标识,多个字段间使用&&连接。比如我需要配置付款人和凭证上的期间属性,我就直接在自定义属性标识上配置payer&&$period。
配置方式:
1、 需要配置单据信息字段:直接获取单据上字段的标识进行配置;
示例:我需要配置财务卡片上的资产类别:配置为:assetcat。
2、 需要配置凭证信息字段:需要配置$+凭证字段标识
示例:我需要配置凭证上的期间:配置为:$period
3、 5.005版本之后增加可以跳过校验的配置:$uuid(配置这个不在执行这个校验,如果需要地方如参数配置不够严谨存在重复生成凭证的风险。)
4、 组合配置:可能有些场景即需要获取单据也需要获取单据字段,或者需要获取多次字段组合,可以直接把字段根据&&拼接即可。
示例1:我需要配置财务卡片上的资产类别和凭证上的期间:配置为:assetcat&&$period
示例2:我需要配置财务卡片行的资产类别和发生期间:配置为:assetcat&&bizperiod
示例3:我需要配置凭证上的期间和凭证类型:配置为:$period&&$vouchertype
4.012-5.004需要增加如下操作才可以执行校验:
需要对数据表按下面要求增加唯一索引:
数据表:t_ai_daptracker
组合唯一索引字段:fbilltype + fsourcebillid + fbooktypeid + fcustomkey
注:如果是4.016以后的版本,需要加上freoper
索引名称:index_ai_daptracker_customkey(必须这个标识)
示例: CREATE UNIQUE INDEX index_ai_daptracker_customkey ON t_ai_daptracker (fbilltype, fsourcebillid, fbooktypeid, fcustomkey, freoper);
注:如果唯一索引加不上去,大概率是历史数据有重复的情况,这个时候需要增加执行以下SQL:
UPDATE T_AI_DAPTRACKER SET FCUSTOMKEY = FID WHERE FCUSTOMKEY = ‘’;