单据操作插件原创
3人赞赏了该文章
2,745次浏览
编辑于2021年04月02日 10:17:18
插件基类: public class PurOrderDemo02OpSavePlugIn extends AbstractOperationServicePlugIn
beforeExecuteOperationTransaction 点击按钮,执行之前,校验,取消操作
@Override public void beforeExecuteOperationTransaction(BeforeOperationArgs e) { // TODO Auto-generated method stub super.beforeExecuteOperationTransaction(e); BigDecimal amount = new BigDecimal(0); //获取当前对象 DynamicObject[] ojbs = e.getDataEntities(); //当前总金额 BigDecimal currentamount = (BigDecimal) ojbs[0].get("totalamount"); //对象id //BigDecimal id = (BigDecimal) ojbs[0].get("id"); QFilter fid = new QFilter("id",QCP.equals,ojbs[0].get("id").toString()); DynamicObject order = QueryUtil.loadSingle("nyn1_purorder_demo02", new QFilter[] {fid}); if(order==null) { }else { BigDecimal oldamount = order.getBigDecimal("totalamount"); amount = oldamount.multiply(new BigDecimal(-1)); } if(rg!=null && rg.equals("3")) { // e.setCancel(true); e.setCancelMessage("采购订单累计金额不允许超过采购合同金额"); } } } }
3. beginOperationTransaction 事务开启,同步更新自定义表表单数据
//事务已开启 @Override public void beginOperationTransaction(BeginOperationTransactionArgs e) { // TODO Auto-generated method stub super.beginOperationTransaction(e); BigDecimal amount = new BigDecimal(0); //获取当前对象 DynamicObject[] ojbs = e.getDataEntities(); //当前总金额 BigDecimal currentamount = (BigDecimal) ojbs[0].get("totalamount"); //对象id //BigDecimal id = (BigDecimal) ojbs[0].get("id"); QFilter fid = new QFilter("id",QCP.equals,ojbs[0].get("id").toString()); DynamicObject order = QueryUtil.loadSingle("nyn1_purorder_demo02", new QFilter[] {fid}); if(order==null) { }else { BigDecimal oldamount = order.getBigDecimal("totalamount"); amount = oldamount.multiply(new BigDecimal(-1)); } //计算变化的金额 amount = amount.add(currentamount); //采购合同 DynamicObject contract = (DynamicObject) ojbs[0].get("contract"); //获取采购合同信息 QFilter fht = new QFilter("id",QCP.equals,contract.get("id").toString()); DynamicObject oldObj = QueryUtil.loadSingle("nyn1_purcontract", new QFilter[] {fht}); if(oldObj==null) { }else { //合同已占用金额 BigDecimal occupied = oldObj.getBigDecimal("occupied"); occupied = occupied.add(amount); oldObj.set("occupied", occupied); Object[] oRet = SaveServiceHelper.save((new DynamicObject[] {oldObj})); } }
赞 3
3人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *
10金币20金币30金币40金币50金币60金币
可用金币: 0