单据界面插件原创
金蝶云社区-阿牛哥哥
阿牛哥哥
4人赞赏了该文章 2,154次浏览 未经作者许可,禁止转载编辑于2021年04月02日 10:02:54
  1. 插件基类 :public class PurReqDemo02BillPlugIn extends AbstractBillPlugIn implements IBillPlugin 

  2. 工具条按钮点击事件   执行前  弹框 取消操作

@Override
public void beforeItemClick(BeforeItemClickEvent evt) {
// TODO Auto-generated method stub
super.beforeItemClick(evt);
//this.getView().showForm(arg0);
//保存时,弹出确认框 提示是否确认操作功能。 、
//1.设置取消,弹出消息,
//2.confirmCallBack 中判断确认,继续操作的功能,否则不处理即操作取消
if(KEY_SAVE.equals(evt.getItemKey()))
{
evt.setCancel(true);
//作废操作前让用户选择是否继续作废操作,在用户点击确认框上的按钮后,系统会调用confirmCallBack方法
            ConfirmCallBackListener confirmCallBackListener = new ConfirmCallBackListener(KEY_SAVE, this);
            //设置页面确认框,参数为:标题,选项框类型,回调监听
            this.getView().showConfirm("您确认保存此单据吗?", MessageBoxOptions.YesNoCancel, confirmCallBackListener);
}
System.out.println("beforeitemclick");
}


@Override
public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
// TODO Auto-generated method stub
super.confirmCallBack(messageBoxClosedEvent);
//弹框回调的id
if (KEY_SAVE.equals(messageBoxClosedEvent.getCallBackId())) 
{
//判断点击的按钮
if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) 
{
this.getView().invokeOperation("save");
}else
{
this.getView().showTipNotification("数据未保存");
}
}
System.out.println("confirmCallBack");
}


3. 值改变事件,获取单据头,单据体改变的值,整个单据体值

@Override
public void propertyChanged(PropertyChangedArgs e) {
// TODO Auto-generated method stub
super.propertyChanged(e);
//单据头字段变化
String pname = e.getProperty().getName();
DynamicObject cghtbhF7 ;
if("cght".equals(pname))
{
//this.getView().showMessage(this.getModel().getValue("cght").toString());
this.getView().showSuccessNotification(this.getModel().getValue("cght").toString());
//采购合同编号F7
cghtbhF7 = (DynamicObject) this.getModel().getValue("cght");

//采购合同编号
String cghtbh = cghtbhF7.get("billno").toString();
String id =  cghtbhF7.get("id").toString();
//根据合同编号取 采购合同对象
QFilter f1 = new QFilter("billno",QCP.equals,cghtbh);
DynamicObject cghtObj = QueryUtil.loadSingle("nyn1_cght003", new QFilter[] {f1});
//id 采购合同对象
QFilter f2 = new QFilter("id",QCP.equals,id);
DynamicObject cghtObj2 = QueryUtil.loadSingle("nyn1_cght003", new QFilter[] {f2});
System.out.println("--");
}
//单据体行变化时先获取单据体变化的行 然后获取变化行对应的值
ChangeData[] changeData = e.getChangeSet();
if(changeData!=null) 
{
int index = changeData[0].getRowIndex();
//基础资料
//Object matieril = (Object) this.getModel().getValue("materiel", index);
//DynamicObject mat = (DynamicObject) this.getModel().getValue("materiel", index);
//String matt = (String) mat.get("number");
//BigDecimal applyqty = (BigDecimal) this.getModel().getValue("qty",index);
//this.getView().showMessage(matieril);
//this.getView().showSuccessNotification(matieril.toString());
//System.out.println(matieril);
}
//单据体行金额变化时,遍历单据体自动计算单据头总金额
if("amount".equals(pname))
{
DynamicObjectCollection entrys = this.getModel().getEntryEntity("entryentity");
BigDecimal allAmount = new BigDecimal(0);
for(DynamicObject entry : entrys)
{
BigDecimal amount = entry.getBigDecimal("amount");
allAmount = allAmount.add(amount);
 }
this.getModel().setValue("totalamount",allAmount);
}
}


4.获取单据体选中行行

//获取单据体数据

DynamicObjectCollection entrys = this.getModel().getEntryEntity("billentry");

//获取单据体选中的行号

int[] selectRows = ((EntryGrid)this.getControl("billentry")).getSelectRows();


赞 4