自定义字段
功能说明
该功能用于,当前场景中的返回字段无法满足配置,例如从A系统抓取了一个金额,是含税金额,写入B系统时需要将该字段做一个处理,那么此时可以用自定义字段实现。
对于已经场景化的产品,直接点击此处的自定义字段,进入配置页 面后配置即可
点击自定义字段,给自定义字段一个名称,选择自定义字段的类型,此处以数字保留两位小数为例。

在左侧选择类型,选择完成后在公式编辑区选择右侧的字段,将需要的字段选上可以进行简单的加减乘除等运算,计算完成后点击保存,此时在场景中字段选择时最下面会有一个额外的金额字段可以使用。

实践场景
场景1:数字取负
我们在对接一些客户的需求,例如万里牛系统的盘点单的盘点数量,当接口传递的是正数,代表的是盘盈,传递负数,代表的是盘亏,ERP中是将两个单子分开的,数量都是正但是单据类型不同,那么此时我们传递盘亏单时就需要对数量做取负处理,可以用自定义字段进行如下设置

将该数量使用0减一下就能使他取反,同样的,一些客户需要传递一些下标,在计算机中下标是从0开始的,我们希望传递的数据使用户能看懂,那么可以给下标加一;
场景2:计算含税金额
即我们前文说的需求场景,客户的A系统中金额是不含税的,我们需要将金额和税额相加得到含税金额,或者利用公式金额*(1+税率)得到含税金额,若在目的系统中含税金额有小数位,可以设置保留小数位

同样的,若有其他需要计算的也可以这样设置。
场景3:字段拼接
客户A需要凭证生成的摘要格式如下

其中报销人后边的名字取OA审批的申请人,报销类型取OA审批中填写的类别,中间用;隔开,用手动输入无法灵活获取OA审批单中的值,会导致每次申请的摘要都一样,无法满足需求,用规则映射,选择两个字段会导致名字和报销类型连在一起,且没有“报销人”、“报销类别”这几个说明文字,那么此时我们可以用自定义字段拼接一个客户需要的新字段,然后再配置在摘要中

同样的,客户需要做一些自定义的字段拼接都可以在此处设置。
场景4:字段映射
最低阶的字段映射处理是可以对字段做映射,和场景中直接打开映射的功能一样
场景4.1:字段映射-数据分类
高阶一点的使用方式是可以给数据做分类,例如我们遇到一个客户,他的ERP部门比较大,部门就分为管理部,生产部,销售部这三个类型,但是在OA中部门是很细的,各个地区都有不同名称的管理部生产部和销售部,但是客户这边按照ERP的比较大的部门和OA费用类型可以确定凭证的科目取值规则,如果在对照表直接弄规则,需要设置很长很长的规则,而且工作量巨大,一不小心还会导致浏览器奔溃,那么基于这种需求我们建议客户先做部门分类,在做分类和费用类型的映射


场景4.2:字段映射-数据空处理
还有一种需求,根据某个值是否为空判断他的取值,比如发起的报销申请,他的报销金额可能含冲销金额和报销金额,当一个申请的冲销金额是有数据的时候,那么要求凭证生成两个借方一个贷方,借方1取冲销金额科目取500101,借方2取报销金额,科目根据报销类别做映射,贷方取总金额,如果按照这个需求走,配置一借一贷,会存在金额到底如何取得问题,那么此时我们可以判断下冲销金额是不是空,如果是空的话,借方得报销金额其实就是总金额,那么生凭证得时候取报销金额就可以并且凭证其实是一借一贷,不要冲销金额得分录

这个处理的含义是,如果冲销金额是空,那么我给这个金额赋值0,如果不是空,那么我取他本身的值

在凭证的处理中,我们可以将金额取冲销金额,若金额是0,写凭证的动作已经将金额0的分录丢弃掉,这样的话可以达到冲销金额是空,一借一贷,冲销金额存在,两借一贷。
还可以扩展一种需求,值是空的话我要取另一个字段,值不是空,取他本身,那么为空这块取动态值选择要取得字段即可。

场景5:字段截取
截取是可以设置从字符串A的位置N开始取N个子字符。
例如之前遇到的需求,客户的OA表单关联了另一个OA表单,另一个OA表单的title是由报销人+表单名称+费用名称+报销金额项目编码组成,例如XXX的日常报销申请差旅费350元65821,客户的项目编码固定的是5位,要求将此处的5位编码传递到ERP付款单的项目字段中,那么我们可以截取该数据。

这么设置代表的含义就是从倒数第一个截取5个,这块的截取下标是从0开始的
还有一种需求是换下字段的开始编码,例如之前收到多账套协同客户的需求

那么这种的就是一个综合的运用,先截取,再拼接

先丢掉前两个字符串

再加上需要的编码前缀
那么从这里你一定能看出来,自定义字段是支持“套娃”的,这样的话可以多次对一个数据处理再处理,但是建议一定要自己先捋清楚逻辑,以免给自己后续项目维护排查造成很大的工作量。
场景6:日期格式化
这种需求往往用于两边传递时间要求的格式不一样导致的接口报错,还有一种,单据日期和单据中某个字段的业务日期有业务上的逻辑,单据日期传递的数据是含时分秒的,业务日期是一个截至到日的日期,要求业务日期不能早于单据日期,那么此时我们可以用这个日期处理给他将单据日期上的时间去掉,然后用处理后的时间作为单据日期,这样单据日期和业务日期是同一天也能同步到ERP中。
