EAS 分录中物料实现多选后自动填充到分录里面

本文介绍了一种在财务软件中实现分录物料多选功能的方法,通过修改单元格编辑器并使用KDBizPromptBox组件,使物料选择支持多选。同时,详细展示了如何在物料选择后更新分录表格的其他列,包括物料型号和基本单位。
	public void kdtEntrys_Changed(int rowIndex, int colIndex) throws Exception {
		
	    if ("BIMUDF0001".equalsIgnoreCase(kdtEntrys.getColumn(colIndex).getKey())) {
	    	// TODO Auto-generated method stub
	        //分录物料可以多选功能开发
	 	   //设置分录物料F7支持多选
	 		   final KDBizPromptBox kdtEntrys_BIMUDF0001_PromptBox = new KDBizPromptBox();
	 	        kdtEntrys_BIMUDF0001_PromptBox.setQueryInfo("com.kingdee.eas.basedata.master.material.app.F7MaterialBaseInfoQuery");
	 	        kdtEntrys_BIMUDF0001_PromptBox.setVisible(true);
	 	        kdtEntrys_BIMUDF0001_PromptBox.setEditable(true);
	 	        kdtEntrys_BIMUDF0001_PromptBox.setEnabledMultiSelection(true);
	 	        kdtEntrys_BIMUDF0001_PromptBox.setDisplayFormat("$number$");
	 	        kdtEntrys_BIMUDF0001_PromptBox.setEditFormat("$number$");
	 	        kdtEntrys_BIMUDF0001_PromptBox.setCommitFormat("$number$");
	 	        KDTDefaultCellEditor kdtEntrys_BIMUDF0001_CellEditor = new KDTDefaultCellEditor(kdtEntrys_BIMUDF0001_PromptBox);
	 	        this.kdtEntrys.getColumn("BIMUDF0001").setEditor(kdtEntrys_BIMUDF0001_CellEditor);
	 	    
	    Object c=this.kdtEntrys.getCell(rowIndex,"BIMUDF0001").getValue();
		if(c==null){
			return;
		}else{
		String f = c.toString();
		if(f.indexOf("Ljava.lang.Object")!=-1){
		Object[] F7cols = (Object[]) kdtEntrys.getCell(rowIndex,"BIMUDF0001").getValue();
		if(F7cols != null){
			int i = 0;
			int max = rowIndex+F7cols.length;
			while(rowIndex<max){
				MaterialInfo info = (MaterialInfo) F7cols[i];	
				this.kdtEntrys.getCell(rowIndex, "BIMUDF0001").setValue(info);
				String a = info.getModel();
				BOSUuid b ;
				MeasureUnitInfo  baseUnitInfo=null;
				if(null!=info.getBaseUnit()){
					b=info.getBaseUnit().getId();
					// 物料计量单位需要从另一个对象获取
					 baseUnitInfo = MeasureUnitFactory.getRemoteInstance().getMeasureUnitInfo(new ObjectUuidPK(info.getBaseUnit().getId()));
				}                                                                          
				this.kdtEntrys.getCell(rowIndex, "BIMUDF0002").setValue(a);
			    this.kdtEntrys.getCell(rowIndex, "BIMUDF0003").setValue(baseUnitInfo.getName());//
				rowIndex++;
				i++;	
				this.kdtEntrys.addRow();			
			}
		}else if(f==null||f.equals("")){
			return;
		}else{
			return;
		}
		}
		}
		this.kdtEntrys.removeRow(rowIndex) ;
	  }
		//====================================================================================================================================
		for (int i = 0; i < this.kdtEntrys.getRowCount(); i++) {
		if (null != this.kdtEntrys.getCell(i, "BIMUDF0001").getValue()) {
			MaterialInfo material = (MaterialInfo) this.kdtEntrys.getCell(i,
					"BIMUDF0001").getValue();
			BOSUuid materialId = material.getId();
			String sql = "  select sum(FBaseQty)  sumFBaseQty  from  T_IM_Inventory    inner join T_IM_STORESTATE on T_IM_STORESTATE.fid=T_IM_Inventory.FStoreStatusID  where FMaterialID='"
					+ materialId + "'  and FStoreStateType='1'   ";
			IRowSet qty = SQLExecutorFactory.getRemoteInstance(sql)
					.executeSQL();
			double sumQuty = 0.0;
			while (qty.next()) {
				sumQuty = Double.valueOf(qty.getDouble("sumFBaseQty"));
			}
//			MaterialInfo matrialvalue = (MaterialInfo) kdtEntrys.getCell(rowIndex,"BIMUDF0001").getValue()	;
//			MeasureUnitInfo baseUnit = matrialvalue.getBaseUnit();
//			if(null!=matrialvalue.getBaseUnit()){
//				kdtEntrys.getCell(rowIndex,"BIMUDF0003").setValue(com.kingdee.bos.ui.face.UIRuleUtil.getString(com.kingdee.bos.ui.face.UIRuleUtil.getProperty((com.kingdee.bos.dao.IObjectValue)kdtEntrys.getCell(rowIndex,"BIMUDF0001").getValue(),"baseUnit.name")));
//			}
			this.kdtEntrys.getCell(i, "existingInventory").setValue(sumQuty);
		}
	}
	 // super.kdtEntrys_Changed(rowIndex, colIndex);
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值