领料出库单审核时校验成本对象财务组织是否正确
场景:领料出库单上成本对象财务组织与单据的财务组织不一致时,会导致成本计算问题
问题:单据都是很久以前做好的,等到成本计算时一般都是期末,才能发现问题,不好定位成本对象错误是如何产生的。
解决方案:在领料出库单审核时,进行成本对象校验。这样在做单据的时候就可以发现问题,更方便的去定位成本对象错误的产生原因。
校验逻辑
领料出库单审核时,检验每行分录上的成本对象财务组织与分录上财务组织是否一致,如果不一致,则抛出异常提示。校验会校验所有行数据,如果存在多行错误,会提示每一行的问题
dep源码
var imp = JavaImporter(); imp.importPackage(Packages.com.kingdee.bos.metadata.entity); imp.importPackage(Packages.com.kingdee.eas.scm.im.inv); imp.importPackage(Packages.java.lang); with(imp) { //获取上下文,参数-单据pk var ctx = pluginCtx.getContext(); var billPk = methodCtx.getParamValue(0); if (billPk != null) { // 重新查询单据信息 var selector = new SelectorItemCollection(); // 查询分录财务组织,分录成本对象,以及成本对象的财务组织 selector.add("entry.seq"); selector.add("entry.companyOrgUnit"); selector.add("entry.costObject.company"); var billInfo = MaterialReqBillFactory.getLocalInstance(ctx).getMaterialReqBillInfo(billPk, selector); if (billInfo != null && billInfo.getEntry() != null && billInfo.getEntry().size() > 0) { var entryColl = billInfo.getEntry(); var entryInfo = null; var msg = new StringBuffer(); var company = null; for (var i = 0, size = entryColl.size(); i < size; i++) { entryInfo = entryColl.get(i); if (i == 0 && entryInfo != null) { company = entryInfo.getCompanyOrgUnit(); if (company == null) { throw new InvBizException(InvBizException.COMMON, ["财务组织为空!"]); } } // 如果分录上的成本对象上的财务组织与分录上的财务组织不同时,则拼接分录序号,供提示使用 if (entryInfo != null && company != null && entryInfo.getCostObject() != null && !company.getId().toString().equals(entryInfo.getCostObject().getCompany().getId().toString())) { msg.append(Integer.toString(entryInfo.getSeq())).append(","); } } // 如果存在需要提示的分录,则进行提示 if (msg.length() > 0) { throw new InvBizException(InvBizException.COMMON, ["第 " + msg.substring(0, msg.length() - 1) + " 行成本对象财务组织与单据的财务组织不一致"]); } } } }
部署位置
领料出库单审核时校验成本对象财务组织是否正确
场景:领料出库单上成本对象财务组织与单据的财务组织不一致时,会导致成本计算问题 问题:单据都是很久以前做好的,等到成本计算...
点击下载文档
本文2024-09-16 22:20:55发表“eas cloud知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-eas-47562.html
您需要登录后才可以发表评论, 登录登录 或者 注册
最新文档
热门文章