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 487c3737..58bc4d5a 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 @@ -980,116 +980,127 @@ public class GatheringEcit extends AbstractBillPlugIn implements BeforeF7SelectL orderplat(key, map.get(key)); } } - // 收款单 收款明细 - DynamicObjectCollection collection = this.getModel().getEntryEntity("yem_receiptdetail"); - if (!collection.isEmpty()) { - for (DynamicObject dynamicObject : collection) { - // 认领明细(子单据体) - DynamicObjectCollection subCollection = dynamicObject.getDynamicObjectCollection("yem_claimdetail"); - if (subCollection.isEmpty()) { - 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; - for (DynamicObject object : subCollection) { - if (object.getLong("yem_salcontractno.id") == k) { - salcontractamt = object.getBigDecimal("yem_salcontractamt"); - productsId = object.getLong("yem_productclassify.id"); - } - } - - // 查询配件客商额度申请单 - // 财务组织 - long orgId =(long) this.getModel().getValue("org.id"); - // 客户名称 - long customerId =(long) this.getModel().getValue("yem_comegoman.id"); - // 结算币别 - long currency = (long) this.getModel().getValue("yem_currency.id"); - // 业务组织 = 财务组织 - QFilter qFilters = new QFilter("org.id", QCP.equals, orgId); - // 客户名称 = 客户名称 - qFilters.and(new QFilter("yem_client.id", QCP.equals, customerId)); - // 产品分类 = 产品分类 - qFilters.and(new QFilter("yem_productcategorie", QCP.equals, productsId)); - // 单据状态 = 已审核 - qFilters.and(new QFilter("billstatus", QCP.equals, "C")); - // 合同上结算币别 = 额度申请上 额度币别 - qFilters.and(new QFilter("yem_currency.id", QCP.equals, currency)); - // 查询配件客商额度申请单 - 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); - } - } - } - // 将数据保存到分录 - SaveServiceHelper.save(new DynamicObject[]{partsmerchant}); - SalesOrderUtils.calcCreditAmount(partsmerchant.getLong("id")); - } - }); - } - } + undate_receipt(); } view.invokeOperation("save"); view.invokeOperation("refresh"); } + private void undate_receipt() { + // 收款单 收款明细 + DynamicObjectCollection collection = this.getModel().getEntryEntity("yem_receiptdetail"); + + if (!collection.isEmpty()) { + for (DynamicObject dynamicObject : collection) { + // 认领明细(子单据体) + DynamicObjectCollection subCollection = dynamicObject.getDynamicObjectCollection("yem_claimdetail"); + if (subCollection.isEmpty()) { + 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; + 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); + } + } + } + // 将数据保存到分录 + SaveServiceHelper.save(new DynamicObject[]{partsmerchant}); + SalesOrderUtils.calcCreditAmount(partsmerchant.getLong("id")); + } + }); + } + } + } + /** * 生成贷记单 *