|  | @@ -26,55 +26,6 @@ public class TravelTotalPlugin extends AbstractFormPlugin {
 | 
	
		
			
				|  |  |      private static String entryentity="nckd_entryentity";//差旅汇总标识
 | 
	
		
			
				|  |  |      private static String invoiceandexpense="nckd_invoiceandexpense";//条线产品分摊明细分
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -//    @Override
 | 
	
		
			
				|  |  | -//    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
 | 
	
		
			
				|  |  | -//        super.beforeDoOperation(args);
 | 
	
		
			
				|  |  | -//        AbstractOperate op = (AbstractOperate)args.getSource();
 | 
	
		
			
				|  |  | -//        String operateKey = op.getOperateKey();
 | 
	
		
			
				|  |  | -//        //获取当前单据
 | 
	
		
			
				|  |  | -//        DynamicObject dynamicObject=this.getModel().getDataEntity(true);
 | 
	
		
			
				|  |  | -//        //差旅汇总分录
 | 
	
		
			
				|  |  | -//        DynamicObjectCollection nckd_entryentity=dynamicObject.getDynamicObjectCollection(entryentity);
 | 
	
		
			
				|  |  | -//        //汇总map
 | 
	
		
			
				|  |  | -//        Map<DynamicObject,BigDecimal> allMap=new HashMap<>();
 | 
	
		
			
				|  |  | -//        if (bar_save.equals(operateKey)) {
 | 
	
		
			
				|  |  | -//            //获取行程信息
 | 
	
		
			
				|  |  | -//            DynamicObjectCollection dynamicObjectCollection=dynamicObject.getDynamicObjectCollection("tripentry");
 | 
	
		
			
				|  |  | -//            //子卡片分录信息
 | 
	
		
			
				|  |  | -//            for (DynamicObject item:dynamicObjectCollection) {
 | 
	
		
			
				|  |  | -//                for (DynamicObject entry:item.getDynamicObjectCollection("entryentity")) {
 | 
	
		
			
				|  |  | -//                    //差旅项目获取
 | 
	
		
			
				|  |  | -//                    DynamicObject expenseitem=entry.getDynamicObject("expenseitem");
 | 
	
		
			
				|  |  | -//                    //报销金额获取
 | 
	
		
			
				|  |  | -//                    BigDecimal orientryamount=entry.getBigDecimal("orientryamount");
 | 
	
		
			
				|  |  | -//                    //差旅项目不存在则加进map
 | 
	
		
			
				|  |  | -//                    if (!allMap.containsKey(expenseitem)) {
 | 
	
		
			
				|  |  | -//                        allMap.put(expenseitem,orientryamount);
 | 
	
		
			
				|  |  | -//                    }else {
 | 
	
		
			
				|  |  | -//                        //存在则对该项目进行累加
 | 
	
		
			
				|  |  | -//                        BigDecimal account = allMap.get(expenseitem);
 | 
	
		
			
				|  |  | -//                        account=account.add(orientryamount);
 | 
	
		
			
				|  |  | -//                        allMap.put(expenseitem,account);
 | 
	
		
			
				|  |  | -//                    }
 | 
	
		
			
				|  |  | -//                }
 | 
	
		
			
				|  |  | -//            }
 | 
	
		
			
				|  |  | -//            Iterator<Map.Entry<DynamicObject, BigDecimal>> iter = allMap.entrySet().iterator();
 | 
	
		
			
				|  |  | -//            //清空分录
 | 
	
		
			
				|  |  | -//            this.getModel().deleteEntryData(entryentity);
 | 
	
		
			
				|  |  | -//            //遍历汇总map
 | 
	
		
			
				|  |  | -//            while (iter.hasNext()) {
 | 
	
		
			
				|  |  | -//                Map.Entry<DynamicObject, BigDecimal> entry = iter.next();
 | 
	
		
			
				|  |  | -//                //新增动态单据分录行
 | 
	
		
			
				|  |  | -//                int rowIndex = this.getModel().createNewEntryRow(entryentity);
 | 
	
		
			
				|  |  | -//                this.getModel().setValue("nckd_travelitem",entry.getKey(),rowIndex);
 | 
	
		
			
				|  |  | -//                this.getModel().setValue("nckd_oriamount",entry.getValue(),rowIndex);
 | 
	
		
			
				|  |  | -//                this.getModel().setValue("nckd_triamount",entry.getValue(),rowIndex);
 | 
	
		
			
				|  |  | -//            }
 | 
	
		
			
				|  |  | -//            //刷新分录
 | 
	
		
			
				|  |  | -//            this.getView().updateView("nckd_entryentity");
 | 
	
		
			
				|  |  | -//        }
 | 
	
		
			
				|  |  | -//    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      public void propertyChanged(PropertyChangedArgs e) {
 | 
	
		
			
				|  |  |          String fieldKey = e.getProperty().getName();
 | 
	
		
			
				|  |  |          //获取当前单据
 | 
	
	
		
			
				|  | @@ -83,6 +34,8 @@ public class TravelTotalPlugin extends AbstractFormPlugin {
 | 
	
		
			
				|  |  |          DynamicObjectCollection nckd_entryentity=dynamicObject.getDynamicObjectCollection(entryentity);
 | 
	
		
			
				|  |  |          //汇总map
 | 
	
		
			
				|  |  |          Map<DynamicObject,BigDecimal> allMap=new HashMap<>();
 | 
	
		
			
				|  |  | +        //核定map
 | 
	
		
			
				|  |  | +        Map<DynamicObject,BigDecimal> oriMap=new HashMap<>();
 | 
	
		
			
				|  |  |          //付现金额的值发生改变,则重新计算汇总金额
 | 
	
		
			
				|  |  |          if (fieldKey.equals("nckd_amountfield4")) {
 | 
	
		
			
				|  |  |              //获取行程信息
 | 
	
	
		
			
				|  | @@ -91,17 +44,24 @@ public class TravelTotalPlugin extends AbstractFormPlugin {
 | 
	
		
			
				|  |  |              for (DynamicObject item:dynamicObjectCollection) {
 | 
	
		
			
				|  |  |                  for (DynamicObject entry:item.getDynamicObjectCollection("entryentity")) {
 | 
	
		
			
				|  |  |                      //差旅项目获取
 | 
	
		
			
				|  |  | -                    DynamicObject expenseitem=entry.getDynamicObject("expenseitem");
 | 
	
		
			
				|  |  | +                    DynamicObject expenseitem  =entry.getDynamicObject("expenseitem");
 | 
	
		
			
				|  |  |                      //报销金额获取
 | 
	
		
			
				|  |  |                      BigDecimal orientryamount=entry.getBigDecimal("orientryamount");
 | 
	
		
			
				|  |  | +                    //核定金额获取
 | 
	
		
			
				|  |  | +                    BigDecimal orientryappamount=entry.getBigDecimal("orientryappamount");
 | 
	
		
			
				|  |  |                      //差旅项目不存在则加进map
 | 
	
		
			
				|  |  |                      if (!allMap.containsKey(expenseitem)) {
 | 
	
		
			
				|  |  |                          allMap.put(expenseitem,orientryamount);
 | 
	
		
			
				|  |  | +                        oriMap.put(expenseitem,orientryappamount);
 | 
	
		
			
				|  |  |                      }else {
 | 
	
		
			
				|  |  |                          //存在则对该项目进行累加
 | 
	
		
			
				|  |  |                          BigDecimal account = allMap.get(expenseitem);
 | 
	
		
			
				|  |  |                          account=account.add(orientryamount);
 | 
	
		
			
				|  |  |                          allMap.put(expenseitem,account);
 | 
	
		
			
				|  |  | +                        //核定金额累加
 | 
	
		
			
				|  |  | +                        BigDecimal oriaccount = oriMap.get(expenseitem);
 | 
	
		
			
				|  |  | +                        oriaccount=oriaccount.add(orientryappamount);
 | 
	
		
			
				|  |  | +                        oriMap.put(expenseitem,oriaccount);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -115,7 +75,21 @@ public class TravelTotalPlugin extends AbstractFormPlugin {
 | 
	
		
			
				|  |  |                  int rowIndex = this.getModel().createNewEntryRow(entryentity);
 | 
	
		
			
				|  |  |                  this.getModel().setValue("nckd_travelitem",entry.getKey(),rowIndex);
 | 
	
		
			
				|  |  |                  this.getModel().setValue("nckd_oriamount",entry.getValue(),rowIndex);
 | 
	
		
			
				|  |  | -                this.getModel().setValue("nckd_triamount",entry.getValue(),rowIndex);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //遍历汇总分录
 | 
	
		
			
				|  |  | +            DynamicObjectCollection dynamicObjects=dynamicObject.getDynamicObjectCollection(entryentity);
 | 
	
		
			
				|  |  | +            for (int i=0;i<dynamicObjects.size();i++)
 | 
	
		
			
				|  |  | +            {
 | 
	
		
			
				|  |  | +                DynamicObject item=dynamicObjects.get(i);
 | 
	
		
			
				|  |  | +                DynamicObject nckd_travelitem=item.getDynamicObject("nckd_travelitem");
 | 
	
		
			
				|  |  | +                Iterator<Map.Entry<DynamicObject, BigDecimal>> it = oriMap.entrySet().iterator();
 | 
	
		
			
				|  |  | +                while (it.hasNext()) {
 | 
	
		
			
				|  |  | +                    Map.Entry<DynamicObject, BigDecimal> entry = it.next();
 | 
	
		
			
				|  |  | +                    //遍历map,费用项目相等则赋值核定金额
 | 
	
		
			
				|  |  | +                    if (entry.getKey().equals(nckd_travelitem)) {
 | 
	
		
			
				|  |  | +                        this.getModel().setValue("nckd_triamount",entry.getValue(),i);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              //刷新分录
 | 
	
		
			
				|  |  |              this.getView().updateView("nckd_entryentity");
 |