diff --git a/src/main/java/com/yem/wm/fm/gathering/from/GatheringEcit.java b/src/main/java/com/yem/wm/fm/gathering/from/GatheringEcit.java index 58bc4d5a..6f0803aa 100644 --- a/src/main/java/com/yem/wm/fm/gathering/from/GatheringEcit.java +++ b/src/main/java/com/yem/wm/fm/gathering/from/GatheringEcit.java @@ -698,7 +698,8 @@ public class GatheringEcit extends AbstractBillPlugIn implements BeforeF7SelectL boolean dataChanged = model.getDataChanged(); String pageId = dataEntity.getDynamicObjectType().getName(); - String[] noCheck = new String[]{"save", "delete", "refresh", "close", "modify", "new", "newentrya1", "copyentryrowa", "insertentrya", "deleteentrya1", "batchfillentrya", "newentryb", "insertentryb", "copyentryrowb", "deleteentryb", "batchfillentryb"}; + String[] noCheck = new String[]{"save", "delete", "refresh", "close", "modify", "new", "newentrya1", "copyentryrowa" + , "insertentrya", "deleteentrya1", "batchfillentrya", "newentryb", "insertentryb", "copyentryrowb", "deleteentryb", "batchfillentryb"}; if (dataChanged && !Arrays.asList(noCheck).contains(operateKey) && ("yem_gathering".equals(pageId) || "yem_gathering_cw".equals(pageId))) { // throw new KDBizException("检测到单据内容更新,请保存后再进行操作!"); @@ -998,108 +999,122 @@ public class GatheringEcit extends AbstractBillPlugIn implements BeforeF7SelectL continue; } - // 合同号 - 认领金额, 认领金额本位币 - Map> longMapLinkedHashMap = new LinkedHashMap<>(); - - // 获取子单据体中 合同号对应的认领金额总和 - for (DynamicObject object : subCollection) { - // 合同号 - long contractno = object.getLong("yem_salcontractno.id"); - if (longMapLinkedHashMap.containsKey(contractno)) { - // 认领金额 - BigDecimal claimamt = longMapLinkedHashMap.get(contractno).get("claimamt"); - claimamt = claimamt.add(object.getBigDecimal("yem_claimamt")); - // 认领金额本位币 - BigDecimal claimamtbase = longMapLinkedHashMap.get(contractno).get("claimamtbase"); - claimamtbase = claimamtbase.add(object.getBigDecimal("yem_claimamtbase")); - Map vVewMap = new HashMap<>(); - // 认领金额 - vVewMap.put("claimamt", claimamt); - // 认领金额本位币 - vVewMap.put("claimamtbase", claimamtbase); - // 合同金额 - vVewMap.put("salcontractamt", object.getBigDecimal("yem_salcontractamt")); - longMapLinkedHashMap.put(contractno, vVewMap); - } else { - Map vVewMap = new HashMap<>(); - vVewMap.put("claimamt", object.getBigDecimal("yem_claimamt")); - vVewMap.put("claimamtbase", object.getBigDecimal("yem_claimamtbase")); - vVewMap.put("salcontractamt", object.getBigDecimal("yem_salcontractamt")); - longMapLinkedHashMap.put(contractno, vVewMap); - } - } - longMapLinkedHashMap.forEach((k, v) -> - { - BigDecimal salcontractamt = BigDecimal.ZERO; - // 产品分类 - long productsId = 0; + // 合同号 - 认领金额, 认领金额本位币 + Map> longMapLinkedHashMap = new LinkedHashMap<>(); + BigDecimal yem_claimamt_a = BigDecimal.ZERO; + BigDecimal yem_claimamtbase_a = BigDecimal.ZERO; + // 获取子单据体中 合同号对应的认领金额总和 for (DynamicObject object : subCollection) { - if (object.getLong("yem_salcontractno.id") == k) { - salcontractamt = object.getBigDecimal("yem_salcontractamt"); - productsId = object.getLong("yem_productclassify.id"); - } - } - - // 查询配件客商额度申请单 - // 财务组织 - DynamicObject orgId =(DynamicObject) this.getModel().getValue("org"); - // 客户名称 - DynamicObject customerId =(DynamicObject) this.getModel().getValue("yem_comegoman"); - // 结算币别 - DynamicObject currency = (DynamicObject) this.getModel().getValue("yem_currency"); - // 单据状态 = 已审核 - QFilter qFilters = new QFilter("billstatus", QCP.equals, "C"); - // 业务组织 = 财务组织 - if (orgId !=null ){ - qFilters.and(new QFilter("org.id", QCP.equals, orgId.getLong("id"))); - } - // 客户名称 = 客户名称 - if (customerId !=null ){ - qFilters.and(new QFilter("yem_client.id", QCP.equals, customerId.getLong("id"))); - } - // 产品分类 = 产品分类 - if (currency !=null ){ - qFilters.and(new QFilter("yem_currency.id", QCP.equals, currency.getLong("id"))); - } - // 合同上结算币别 = 额度申请上 额度币别 - qFilters.and(new QFilter("yem_productcategorie", QCP.equals, productsId)); - // 查询配件客商额度申请单 - DynamicObject partsmerchant = BusinessDataServiceHelper.loadSingle("yem_im_partsmerchant", qFilters.toArray()); - if (partsmerchant != null) { - // 配件客商额度申请单明细 - DynamicObjectCollection partsmerchantCollection = partsmerchant.getDynamicObjectCollection("yem_im_entryentity_m"); - for (DynamicObject object : partsmerchantCollection) { - if (object.getLong("yem_cn.id") == k) { - - BigDecimal writenamt = object.getBigDecimal("yem_claimamt"); - BigDecimal locwrittenamt = object.getBigDecimal("yem_claimamtbase"); - // 合同金额 - object.set("yem_salcontractamt", v.get("salcontractamt")); - // 认领金额 - object.set("yem_claimamt", writenamt.add(v.get("claimamt"))); - // 认领金额本位币 - object.set("yem_claimamtbase", locwrittenamt.add(v.get("claimamtbase"))); - - // 合同金额 = 认领金额 - if (salcontractamt.compareTo(object.getBigDecimal("yem_claimamt")) <= 0) { - object.set("yem_writtenamt", object.get("yem_sum")); - object.set("yem_locwrittenamt", object.get("yem_localsum")); - object.set("yem_pennsylvania", new Date()); - } else { - object.set("yem_writtenamt", null); - object.set("yem_locwrittenamt", null); - object.set("yem_pennsylvania", null); + DynamicObject[] yemGathering = BusinessDataServiceHelper.load("yem_gathering" + , "yem_receiptdetail,yem_receiptdetail.yem_claimdetail,yem_claimdetail.yem_salcontractno,yem_receiptdetail.yem_claimamt_a,yem_receiptdetail.yem_claimamtbase_a" + , new QFilter[]{new QFilter("yem_receiptdetail.yem_claimdetail.yem_salcontractno.billno", QCP.equals, object.getString("yem_salcontractno.billno"))}); + if (yemGathering.length > 0) { + for (DynamicObject dynamicObject1 : yemGathering) { + DynamicObjectCollection dynamicObjectCollection = dynamicObject1.getDynamicObjectCollection("yem_receiptdetail"); + for (DynamicObject dynamicObject2 : dynamicObjectCollection) { + yem_claimamt_a = yem_claimamt_a.add(dynamicObject2.getBigDecimal("yem_claimamt_a")); + yem_claimamtbase_a = yem_claimamtbase_a.add(dynamicObject2.getBigDecimal("yem_claimamtbase_a")); } } } - // 将数据保存到分录 - SaveServiceHelper.save(new DynamicObject[]{partsmerchant}); - SalesOrderUtils.calcCreditAmount(partsmerchant.getLong("id")); + // 合同号 + long contractno = object.getLong("yem_salcontractno.id"); + if (longMapLinkedHashMap.containsKey(contractno)) { + // 认领金额 + BigDecimal claimamt = longMapLinkedHashMap.get(contractno).get("claimamt"); + claimamt = claimamt.add(object.getBigDecimal("yem_claimamt")); + // 认领金额本位币 + BigDecimal claimamtbase = longMapLinkedHashMap.get(contractno).get("claimamtbase"); + claimamtbase = claimamtbase.add(object.getBigDecimal("yem_claimamtbase")); + Map vVewMap = new HashMap<>(); + // 认领金额 + vVewMap.put("claimamt", claimamt); + // 认领金额本位币 + vVewMap.put("claimamtbase", claimamtbase); + // 合同金额 + vVewMap.put("salcontractamt", object.getBigDecimal("yem_salcontractamt")); + longMapLinkedHashMap.put(contractno, vVewMap); + } else { + Map vVewMap = new HashMap<>(); + vVewMap.put("claimamt", object.getBigDecimal("yem_claimamt")); + vVewMap.put("claimamtbase", object.getBigDecimal("yem_claimamtbase")); + vVewMap.put("salcontractamt", object.getBigDecimal("yem_salcontractamt")); + longMapLinkedHashMap.put(contractno, vVewMap); + } } - }); + BigDecimal finalYem_claimamt_a = yem_claimamt_a; + BigDecimal finalYem_claimamtbase_a = yem_claimamtbase_a; + longMapLinkedHashMap.forEach((k, v) -> + { + BigDecimal salcontractamt = BigDecimal.ZERO; + // 产品分类 + long productsId = 0; + for (DynamicObject object : subCollection) { + if (object.getLong("yem_salcontractno.id") == k) { + salcontractamt = object.getBigDecimal("yem_salcontractamt"); + productsId = object.getLong("yem_productclassify.id"); + } + } + + // 查询配件客商额度申请单 + // 财务组织 + DynamicObject orgId = (DynamicObject) this.getModel().getValue("org"); + // 客户名称 + DynamicObject customerId = (DynamicObject) this.getModel().getValue("yem_comegoman"); + // 结算币别 + DynamicObject currency = (DynamicObject) this.getModel().getValue("yem_currency"); + // 单据状态 = 已审核 + QFilter qFilters = new QFilter("billstatus", QCP.equals, "C"); + // 业务组织 = 财务组织 + if (orgId != null) { + qFilters.and(new QFilter("org.id", QCP.equals, orgId.getLong("id"))); + } + // 客户名称 = 客户名称 + if (customerId != null) { + qFilters.and(new QFilter("yem_client.id", QCP.equals, customerId.getLong("id"))); + } + // 产品分类 = 产品分类 + if (currency != null) { + qFilters.and(new QFilter("yem_currency.id", QCP.equals, currency.getLong("id"))); + } + // 合同上结算币别 = 额度申请上 额度币别 + qFilters.and(new QFilter("yem_productcategorie", QCP.equals, productsId)); + // 查询配件客商额度申请单 + DynamicObject partsmerchant = BusinessDataServiceHelper.loadSingle("yem_im_partsmerchant", qFilters.toArray()); + if (partsmerchant != null) { + // 配件客商额度申请单明细 + DynamicObjectCollection partsmerchantCollection = partsmerchant.getDynamicObjectCollection("yem_im_entryentity_m"); + for (DynamicObject object : partsmerchantCollection) { + if (object.getLong("yem_cn.id") == k) { + + BigDecimal locwrittenamt = object.getBigDecimal("yem_claimamtbase"); + // 合同金额 + object.set("yem_salcontractamt", v.get("salcontractamt")); + // 认领金额 + object.set("yem_claimamt", finalYem_claimamt_a); + // 认领金额本位币 + object.set("yem_claimamtbase", finalYem_claimamtbase_a); + + // 合同金额 = 认领金额 + if (salcontractamt.compareTo(object.getBigDecimal("yem_claimamt")) <= 0) { + object.set("yem_writtenamt", object.get("yem_sum")); + object.set("yem_locwrittenamt", object.get("yem_localsum")); + object.set("yem_pennsylvania", new Date()); + } else { + object.set("yem_writtenamt", null); + object.set("yem_locwrittenamt", null); + object.set("yem_pennsylvania", null); + } + } + } + // 将数据保存到分录 + SaveServiceHelper.save(new DynamicObject[]{partsmerchant}); + SalesOrderUtils.calcCreditAmount(partsmerchant.getLong("id")); + } + }); + } } } - } /** * 生成贷记单