单据操作插件原创
金蝶云社区-阿牛哥哥
阿牛哥哥
3人赞赏了该文章 2,745次浏览 未经作者许可,禁止转载编辑于2021年04月02日 10:17:18
  1. 插件基类: public class PurOrderDemo02OpSavePlugIn extends AbstractOperationServicePlugIn

  2. 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