使用JavaScript脚本插件实现自定义校验器原创
金蝶云社区-Johnny
Johnny
0人赞赏了该文章 399次浏览 未经作者许可,禁止转载编辑于2024年03月28日 11:32:53

需要提交时对财务应付单的发票分录进行校验,如果分录没有数据,或者发票号值为空,给出提示。

使用合法性校验智能检查发票号有没有值,不能检查有没有分录行,需要写插件实现校验。


直接上实际脚本代码,略过扩展单据、修改提交操作、注册脚本插件的过程。

如下脚本代码,演示了如何使用JavaScript脚本插件实现校验器:

/**
* @author Johnny Ting
* @date 2024-03-28
*/
require("kd.bos.entity.validate.KDValidator");
 
var plugin = new OperationPlugin({
         onPreparePropertys : function(e){
                   e.getFieldKeys().add("i_invoiceno");
         },
   
         onAddValidators : function(e){
                   e.addValidator(new Validator({
                            validate: function(){
                var objs = this.getDataEntities();
                for(var i=0; i<objs.length; i++) {
                    var obj = objs[i].getDataEntity();
                    var rows = obj.get("inventry");
                    if (rows.size() == 0) {
                             this.addFatalErrorMessage(objs[i], "发票分录,未采集发票,不能提交");       
                    }
                         else {
                        for(var j = 0; j < rows.size(); j++) {
                            var row = rows.get(j);
                            var invno = row.get("i_invoiceno");
                            if (invno == null || invno == "" || invno == " " ) {
                                this.addFatalErrorMessage(objs[i], "发票分录,第" + (j+1) + "行,未采集发票,不能提交。");       
                            }
                        }
                    }
                }                
            }  
             }));
         }
});


赞 0