|
@@ -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");
|