本文介绍了单据合法性校验的两种方法。一是校验收票单销售方名称与供应商名称是否一致;二是校验收票单与应付单的价税合计、不含税金额、税额是否一致,并根据发票类型(专票或普票)进行区分判断,确保单据所关联的收票信息中发票类型的一致性。
一、单据合法性校验—校验收票单销售方名称与供应商名称是否不一致
以应付单为例,进入BOS--打开应付单--批量编辑字段属性--操作列表--保存--校验规则--新增单据合法性校验
公式:
FRecInvInfo <> null and FRecInvInfo.Count > 0 and FRecInv <> null and len(filter(lambda x: x.FRecInv != null and x.FRecInv.FSALENAME <> FSUPPLIERID.FName , FRecInvInfo)) <= FRecInvInfo.Count AND len(filter(lambda x: x.FRecInv != null and x.FRecInv.FSALENAME <> FSUPPLIERID.FName , FRecInvInfo)) <> 0
公式说明:FSUPPLIERID.FName 指应付单上的供应商字段,取基础资料属性中的名称
二、单据合法性校验—收票单价税合计/不含税金额/税额与应付单价税合计/不含税金额/税额是否一致
公式:
FRecInvInfo <> null AND FRecInv <> null AND sum(map(lambda x:x.FRecInv.FSUMALLAMOUNT, FRecInvInfo )) <> 0 AND FALLAMOUNTFOR <> sum(map(lambda x:x.FRecInv.FSUMALLAMOUNT, FRecInvInfo ))
公式说明:FALLAMOUNTFOR指应付单单据头价税合计字段标识,FSUMALLAMOUNT指收票单单据头价税合计
扩展配置:
需求:根据发票类型区分判断,专票的时候,校验收票单不含税金额、税额与应付单的不含税、税额是否一致(要求单据所关联的收票信息中发票类型仅包含专票或者普通发票,不存在既有专票又有普通发票)
---------在上述价税合计的公式上再增加收票单发票类型条件
配置1:
FRecInvInfo <> null AND FRecInv <> null AND sum(map(lambda x:x.FRecInv.FNoTaxAmountFor, FRecInvInfo )) <> 0 AND len ( filter(lambda x: ( x.FRecInv.FINVOICETYPE='2' OR x.FRecInv.FINVOICETYPE='4' OR x.FRecInv.FINVOICETYPE='27' ) , FRecInvInfo) ) > 0 AND FSUMAMOUNT <> sum(map(lambda x:x.FRecInv.FNoTaxAmountFor, FRecInvInfo ))
公式说明:收票单不含税金额不等于0且发票类型含专用发票时,应付单不含税金额合计不等于收票单不含税金额合计
FNoTaxAmountFor指收票单单据头不含税金额 FSUMAMOUNT指应付单单据头不含税金额字段标识
配置2:
FRecInvInfo <> null AND FRecInv <> null AND sum(map(lambda x:x.FRecInv.FTaxAmountFor, FRecInvInfo )) <> 0 AND len ( filter(lambda x: ( x.FRecInv.FINVOICETYPE='2' OR x.FRecInv.FINVOICETYPE='4' OR x.FRecInv.FINVOICETYPE='27' ) , FRecInvInfo) ) > 0 AND FSUMTAXAMOUN<> sum(map(lambda x:x.FRecInv.FTaxAmountFor, FRecInvInfo ))
公式说明:收票单税额不等于0且发票类型含专用发票时,应付单税额合计不等于收票单税额合计
FTaxAmountFor指收票单单据头税额 FSUMTAXAMOUN指应付单单据头税额字段标识
注意:由于单据上的收票信息页签属于收票单基础资料的引用,故公式中的发票类型需要先在收票单基础资料字段中添加引用属性
如有其他相关校验,可以结合具体业务需求考虑套用上述遍历公式的基础上修改!