diff --git a/src/main/java/com/yem/wm/es/declaredocx/op/DeclaredocxComparisonOp.java b/src/main/java/com/yem/wm/es/declaredocx/op/DeclaredocxComparisonOp.java index 279fb2fc..f08cb713 100644 --- a/src/main/java/com/yem/wm/es/declaredocx/op/DeclaredocxComparisonOp.java +++ b/src/main/java/com/yem/wm/es/declaredocx/op/DeclaredocxComparisonOp.java @@ -1,5 +1,6 @@ package com.yem.wm.es.declaredocx.op; +import com.yem.wm.utils.BigDecimalUtils; import com.yem.wm.utils.DynamicObjectUtil; import com.yem.wm.utils.YEM; import kd.bos.coderule.api.CodeRuleInfo; @@ -175,12 +176,24 @@ public class DeclaredocxComparisonOp extends AbstractOperationServicePlugIn { declaredocx.set("yem_customsnumber", yemEntryid); declaredocx.set("yem_exportdate", yemFiedatets); declaredocx.set("yem_customsdocumentid", id); + declaredocx.set("yem_reightamt", user.getBigDecimal("yem_feerate")); + declaredocx.set("yem_premiumamt", user.getBigDecimal("yem_insurrate")); + declaredocx.set("yem_reightamtbase", user.getBigDecimal("yem_feerate").multiply(declaredocx.getBigDecimal("yem_reightamtrate"))); + declaredocx.set("yem_premiumamtbase", user.getBigDecimal("yem_insurrate").multiply(declaredocx.getBigDecimal("yem_pmamtrate"))); + declaredocx.set("yem_reightamtend" + , BigDecimalUtils.div((user.getBigDecimal("yem_feerate").multiply(declaredocx.getBigDecimal("yem_reightamtrate"))) + ,declaredocx.getBigDecimal("yem_exrate"),2)); + BigDecimal exchangeRate = YEM.getExchangeRate(declaredocx.getDynamicObject("yem_exratetable") , declaredocx.getDynamicObject("yem_currencybase") , declaredocx.getDynamicObject("yem_usdcurrency") , yemFiedatets); declaredocx.set("yem_usbexrate", exchangeRate); + declaredocx.set("yem_cyreightamt", user.getDynamicObject("yem_feecurrbase"));//海运费币别 + declaredocx.set("yem_despportcodebase",user.getDynamicObject("yem_despportcodebase") ); + declaredocx.set("yem_distinateportbase", user.getDynamicObject("yem_distinateportbase")); + declaredocx.set("yem_transmodbase", user.getDynamicObject("yem_transmodbase")); SaveServiceHelper.update(declaredocx); SaveServiceHelper.save(new DynamicObject[]{declaredocx}); if ("结关".equals(yemCusdecstatusname) && !YEM.isEmpty(yemFiedatets)) { diff --git a/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit.java b/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit.java index 55253e09..5d7eefc1 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit.java +++ b/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransEdit.java @@ -235,11 +235,13 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele String yemProducts = loadSingle.getString("yem_products.number"); String aLong = loadSingle.getString("yem_productmodel.yem_products.number"); BigDecimal yemQty = loadSingle.getBigDecimal("yem_qty"); - if (map.get(yemContractnumbersM+yemShipmentnumbersM+yemProducts+aLong) != null) { - BigDecimal bigDecimal = map.get(yemContractnumbersM+yemShipmentnumbersM+yemProducts+aLong); - map.put(yemContractnumbersM+yemShipmentnumbersM+yemProducts+aLong, bigDecimal.add(yemQty)); - } else { - map.put(yemContractnumbersM+yemShipmentnumbersM+yemProducts+aLong, yemQty); + BigDecimal yemSinglepartgiftmat = loadSingle.getBigDecimal("yem_singlepartgiftmat"); + if (yemSinglepartgiftmat.compareTo(BigDecimal.ZERO) != 0) { + if (map.get(yemContractnumbersM + yemShipmentnumbersM + yemProducts + aLong) != null) { + map.compute(yemContractnumbersM + yemShipmentnumbersM + yemProducts + aLong, (k, bigDecimal) -> bigDecimal.add(yemQty)); + } else { + map.put(yemContractnumbersM + yemShipmentnumbersM + yemProducts + aLong, yemQty); + } } } DynamicObjectCollection yemEsSalesorderL = this.getModel().getEntryEntity("yem_es_salesorder_l"); diff --git a/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransZJEdit.java b/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransZJEdit.java index 7c75dd0b..952f5bbd 100644 --- a/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransZJEdit.java +++ b/src/main/java/com/yem/wm/es/storagetrans/form/StorageTransZJEdit.java @@ -255,21 +255,6 @@ public class StorageTransZJEdit extends AbstractBillPlugIn implements BeforeF7Se public void selectF7CustomClass(BeforeF7SelectEvent e) { //1、过滤报关分类时,整机行只能过滤业务分类为整机的报关分类;配件行只能过滤业务分类为配件的报关分类 int row = e.getRow(); - List ids = new ArrayList(); - IDataModel model = this.getModel(); - DynamicObject materiel = (DynamicObject) model.getValue("yem_materiel", row); - if (YEM.isNotEmpty(materiel)) { - DynamicObject[] declarationEles = BusinessDataServiceHelper.load("yem_bd_declarationele", "id,yem_customclass", - new QFilter[]{new QFilter("yem_material", QCP.equals, materiel.getPkValue())}); - for (DynamicObject declarationEle : declarationEles) { - DynamicObject hsCodebase = declarationEle.getDynamicObject("yem_customclass"); - if (YEM.isNotEmpty(hsCodebase)) { - ids.add(hsCodebase.getLong("id")); - } - } - } - e.addCustomQFilter(new QFilter("id", QCP.in, ids)); - String businesssort = (String) this.getModel().getValue("yem_businesssort", row); if (businesssort == null) { e.addCustomQFilter(new QFilter("yem_businessclassify", QCP.equals, null)); @@ -278,6 +263,20 @@ public class StorageTransZJEdit extends AbstractBillPlugIn implements BeforeF7Se e.addCustomQFilter(new QFilter("yem_businessclassify", QCP.equals, "Z")); } if ("P".equals(businesssort)) { + List ids = new ArrayList(); + IDataModel model = this.getModel(); + DynamicObject materiel = (DynamicObject) model.getValue("yem_materiel", row); + if (YEM.isNotEmpty(materiel)) { + DynamicObject[] declarationEles = BusinessDataServiceHelper.load("yem_bd_declarationele", "id,yem_customclass", + new QFilter[]{new QFilter("yem_material", QCP.equals, materiel.getPkValue())}); + for (DynamicObject declarationEle : declarationEles) { + DynamicObject hsCodebase = declarationEle.getDynamicObject("yem_customclass"); + if (YEM.isNotEmpty(hsCodebase)) { + ids.add(hsCodebase.getLong("id")); + } + } + } + e.addCustomQFilter(new QFilter("id", QCP.in, ids)); e.addCustomQFilter(new QFilter("yem_businessclassify", QCP.equals, "P")); } diff --git a/src/main/java/com/yem/wm/im/delivernotice/validator/DeliverNoticeSubmitValidator.java b/src/main/java/com/yem/wm/im/delivernotice/validator/DeliverNoticeSubmitValidator.java index 345878f1..d205a343 100644 --- a/src/main/java/com/yem/wm/im/delivernotice/validator/DeliverNoticeSubmitValidator.java +++ b/src/main/java/com/yem/wm/im/delivernotice/validator/DeliverNoticeSubmitValidator.java @@ -24,7 +24,7 @@ public class DeliverNoticeSubmitValidator extends AbstractValidator { @Override public void validate() { ExtendedDataEntity[] dataEntities = this.getDataEntities(); - for(ExtendedDataEntity dataEntitie : dataEntities){ + for (ExtendedDataEntity dataEntitie : dataEntities) { // arrearsAmtValidator(dataEntitie); if (specialApplicationShipment(dataEntitie)) continue; hasArrearsValidator(dataEntitie); @@ -36,6 +36,7 @@ public class DeliverNoticeSubmitValidator extends AbstractValidator { /** * 最后一笔出库的时候,判断出库金额是否和合同金额相等 + * * @param dataEntitie */ private void checkAmountAligned(ExtendedDataEntity dataEntitie) { @@ -147,10 +148,10 @@ public class DeliverNoticeSubmitValidator extends AbstractValidator { /** * 校验当前客户是否有信保逾期 * 信保限额申请单分录的应收款日期1小于当前时间并且有欠款金额 + * * @param entry */ - private void creditInsuranceOverdueVerification(ExtendedDataEntity entry) - { + private void creditInsuranceOverdueVerification(ExtendedDataEntity entry) { DynamicObject dataEntity = entry.getDataEntity(); dataEntity = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(), dataEntity.getDynamicObjectType().getName()); DynamicObject customer = dataEntity.getDynamicObject("yem_customer"); @@ -161,9 +162,11 @@ public class DeliverNoticeSubmitValidator extends AbstractValidator { DynamicObject method = TotalUtil.getSettlementMethod(shippingdetails); DynamicObject company = dataEntity.getDynamicObject("yem_company.yem_erporg"); String swiftCode = TotalUtil.getSwiftCode(shippingdetails); + BigDecimal yemArrearsamtapply = shippingdetails.getBigDecimal("yem_arrearsamtapply"); DynamicObject creditLine = TotalUtil.getCsrCreditLine(customer, method, company, swiftCode); if (creditLine == null) return; DynamicObjectCollection collection = creditLine.getDynamicObjectCollection("yem_im_info"); + BigDecimal amountoweds = BigDecimal.ZERO; for (DynamicObject dynamicObject : collection) { // 应收款日期1 Date paydate = dynamicObject.getDate("yem_paydate1"); @@ -171,9 +174,22 @@ public class DeliverNoticeSubmitValidator extends AbstractValidator { Date now = new Date(); if (paydate == null) continue; if (amountowed.compareTo(BigDecimal.ZERO) > 0 && paydate.before(now)) { - this.addErrorMessage(entry, String.format("客户 %s 信保逾期,请确认!", customer.getString("name"))); + amountoweds = amountowed.add(amountoweds); } } + String string = ""; + if (amountoweds.compareTo(BigDecimal.ZERO) > 0 || yemArrearsamtapply.compareTo(BigDecimal.ZERO) > 0) { + string = "客户" + customer.getString("name") + "信保逾期,"; + } + if (amountoweds.compareTo(BigDecimal.ZERO) > 0) { + string = string + "欠款金额:" + amountoweds; + } else if (yemArrearsamtapply.compareTo(BigDecimal.ZERO) > 0) { + string = string + "欠条金额:" + yemArrearsamtapply; + } + if (!string.isEmpty()) { + string = string+",请确认!"; + } + this.addErrorMessage(entry ,string); } @@ -184,22 +200,22 @@ public class DeliverNoticeSubmitValidator extends AbstractValidator { * return * @time 2023/11/9 14:57 */ - public void arrearsAmtValidator(ExtendedDataEntity dataEntitie){ + public void arrearsAmtValidator(ExtendedDataEntity dataEntitie) { DynamicObject dataEntity = dataEntitie.getDataEntity(); long id = dataEntity.getLong("id"); String coreBillType = dataEntity.getString("yem_corebilltype"); long coreBillId = dataEntity.getLong("yem_corebillid"); - if(YEM.isNotEmpty(coreBillType) && YEM.isNotEmpty(coreBillId)){ - DynamicObject saleOrder = BusinessDataServiceHelper.loadSingle(coreBillId,coreBillType); + if (YEM.isNotEmpty(coreBillType) && YEM.isNotEmpty(coreBillId)) { + DynamicObject saleOrder = BusinessDataServiceHelper.loadSingle(coreBillId, coreBillType); BigDecimal rapRate = PaymentControlUtil.getRapRate(saleOrder); BigDecimal collection = PaymentControlUtil.getCollection(coreBillId);//A 合同的所有收款 - BigDecimal contractPayment = PaymentControlUtil.getAdvancePayment(PaymentControlUtil.getContractPayment(saleOrder),rapRate);//B 合同的预收款 - BigDecimal deliverPayment = PaymentControlUtil.getBalancePayment(PaymentControlUtil.getDeliverPayment(id, coreBillType, coreBillId),rapRate);//C 提交、审核的历史发货尾款 - BigDecimal translateDeliverPayment = PaymentControlUtil.getBalancePayment(PaymentControlUtil.getTranslateDeliverPayment(dataEntity),rapRate);//D 本次发货尾款 + BigDecimal contractPayment = PaymentControlUtil.getAdvancePayment(PaymentControlUtil.getContractPayment(saleOrder), rapRate);//B 合同的预收款 + BigDecimal deliverPayment = PaymentControlUtil.getBalancePayment(PaymentControlUtil.getDeliverPayment(id, coreBillType, coreBillId), rapRate);//C 提交、审核的历史发货尾款 + BigDecimal translateDeliverPayment = PaymentControlUtil.getBalancePayment(PaymentControlUtil.getTranslateDeliverPayment(dataEntity), rapRate);//D 本次发货尾款 BigDecimal arrearsAmt = collection.subtract(contractPayment).subtract(deliverPayment).subtract(translateDeliverPayment).setScale(2, RoundingMode.HALF_UP); - if(arrearsAmt.compareTo(BigDecimal.ZERO) < 0){ + if (arrearsAmt.compareTo(BigDecimal.ZERO) < 0) { BigDecimal fAbs = arrearsAmt.abs().setScale(2, RoundingMode.HALF_UP); - this.addErrorMessage(dataEntitie,String.format("截止当前,本发货通知单存在欠款,欠款金额为%s,不允许提交,请收款齐全后重试!",fAbs)); + this.addErrorMessage(dataEntitie, String.format("截止当前,本发货通知单存在欠款,欠款金额为%s,不允许提交,请收款齐全后重试!", fAbs)); } } } @@ -213,7 +229,7 @@ public class DeliverNoticeSubmitValidator extends AbstractValidator { * @time 2023/11/13 15:13 */ - public void isStorageTrans(ExtendedDataEntity dataEntitie){ + public void isStorageTrans(ExtendedDataEntity dataEntitie) { DynamicObject dataEntity = dataEntitie.getDataEntity(); List entryIds = new ArrayList(); DynamicObjectCollection materialInfos = dataEntity.getDynamicObjectCollection("yem_es_materialinfo"); @@ -223,20 +239,20 @@ public class DeliverNoticeSubmitValidator extends AbstractValidator { entryIds.add(sourceEntryId); } - Map> allMap = new HashMap<>(); + Map> allMap = new HashMap<>(); DynamicObject[] shippingDetails = BusinessDataServiceHelper.load("yem_shippingdetails", "yem_es_materialinfo.yem_storageqty,yem_es_materialinfo.yem_deliveryqty", new QFilter[]{new QFilter("yem_es_materialinfo.id", QCP.in, entryIds)}); - for(DynamicObject shippingDetail : shippingDetails){ + for (DynamicObject shippingDetail : shippingDetails) { DynamicObjectCollection shippingMaterialInfos = shippingDetail.getDynamicObjectCollection("yem_es_materialinfo"); - for(DynamicObject shippingMaterialInfo : shippingMaterialInfos){ + for (DynamicObject shippingMaterialInfo : shippingMaterialInfos) { long materialInfoId = shippingMaterialInfo.getLong("id"); - if(entryIds.contains(materialInfoId)){ + if (entryIds.contains(materialInfoId)) { HashMap map = new HashMap<>(); BigDecimal storageQty = shippingMaterialInfo.getBigDecimal("yem_storageqty"); BigDecimal deliveryQty = shippingMaterialInfo.getBigDecimal("yem_deliveryqty"); - map.put("storageQty",storageQty); - map.put("deliveryQty",deliveryQty); - allMap.put(materialInfoId,map); + map.put("storageQty", storageQty); + map.put("deliveryQty", deliveryQty); + allMap.put(materialInfoId, map); } } } @@ -244,11 +260,11 @@ public class DeliverNoticeSubmitValidator extends AbstractValidator { DynamicObject materialInfo = materialInfos.get(i); long sourceEntryId = materialInfo.getLong("yem_sourceentryid"); Map map = allMap.get(sourceEntryId); - if(YEM.isNotEmpty(map)){ + if (YEM.isNotEmpty(map)) { BigDecimal storageQty = map.get("storageQty"); BigDecimal deliveryQty = map.get("deliveryQty"); - if(deliveryQty.compareTo(storageQty) > 0){ - this.addErrorMessage(dataEntitie,String.format("发货通知单明细信息第%s行还未进行储运,请下推订舱通知单后,在提交发货通知单!",i + 1)); + if (deliveryQty.compareTo(storageQty) > 0) { + this.addErrorMessage(dataEntitie, String.format("发货通知单明细信息第%s行还未进行储运,请下推订舱通知单后,在提交发货通知单!", i + 1)); } } } @@ -256,10 +272,10 @@ public class DeliverNoticeSubmitValidator extends AbstractValidator { /** * 1、销售出库对应的合同(非本次发运明细单)--欠条是否有核销掉 + * * @param dataEntities */ - private void hasArrearsValidator(ExtendedDataEntity dataEntities) - { + private void hasArrearsValidator(ExtendedDataEntity dataEntities) { // 销售出库单 DynamicObject dataEntity = dataEntities.getDataEntity(); long shipDetailId = dataEntity.getLong("yem_sourcebillid"); @@ -298,12 +314,13 @@ public class DeliverNoticeSubmitValidator extends AbstractValidator { } } if (totalArrearsAmt.compareTo(BigDecimal.ZERO) > 0) { - this.addErrorMessage(dataEntities, String.format("合同 %s 下还有未核销的欠条:%s,未核销金额为 %s,请核销后再提交!", contractnum, Arrays.toString(billno.toArray()),totalArrearsAmt.setScale(2, RoundingMode.HALF_UP))); + this.addErrorMessage(dataEntities, String.format("合同 %s 下还有未核销的欠条:%s,未核销金额为 %s,请核销后再提交!", contractnum, Arrays.toString(billno.toArray()), totalArrearsAmt.setScale(2, RoundingMode.HALF_UP))); } } /** * 销售出库提交时,如果有已审核的发货特殊申请,不需要校验是否信保预期,是否由未核销掉的欠条,否则需要核销; + * * @param dataEntitie * @return */ diff --git a/src/main/java/com/yem/wm/syn/eas/delivernotice/DelivernoticeSynEAS.java b/src/main/java/com/yem/wm/syn/eas/delivernotice/DelivernoticeSynEAS.java index e6aa9630..15f95f49 100644 --- a/src/main/java/com/yem/wm/syn/eas/delivernotice/DelivernoticeSynEAS.java +++ b/src/main/java/com/yem/wm/syn/eas/delivernotice/DelivernoticeSynEAS.java @@ -90,7 +90,7 @@ public class DelivernoticeSynEAS extends AbstractOperationServicePlugIn { json.put("BusinessType", setJson("number", "510")); //是否跨事业部 boolean isacrossdept = dataEntitie.getBoolean("yem_isacrossdept"); - json.put("isAcross", isacrossdept ? "是" : "否"); + json.put("isAcross", isacrossdept ? "是" : "不是"); //业务日期 SimpleDateFormat fmtDate = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat fmtTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); diff --git a/src/main/java/kd/cosmic/Application.java b/src/main/java/kd/cosmic/Application.java index b30a4f27..da9708ed 100644 --- a/src/main/java/kd/cosmic/Application.java +++ b/src/main/java/kd/cosmic/Application.java @@ -17,17 +17,17 @@ public class Application { cosmic.setWebPath("E:/Cosmic/Comics_YXZG/YXZG-server/webapp"); ////152 - cosmic.setClusterNumber("yxzg-topview-dev"); - cosmic.setTenantNumber("yxzg-topview-dev"); - cosmic.setServerIP("10.64.112.152"); - cosmic.setFileServerPathIPAndPort("", ""); - cosmic.setConfigUrl("10.64.112.152:2181", "zookeeper", "Cosmic@5092"); +// cosmic.setClusterNumber("yxzg-topview-dev"); +// cosmic.setTenantNumber("yxzg-topview-dev"); +// cosmic.setServerIP("10.64.112.152"); +// cosmic.setFileServerPathIPAndPort("", ""); +// cosmic.setConfigUrl("10.64.112.152:2181", "zookeeper", "Cosmic@5092"); System.setProperty("mq.debug.queue.tag", "wrxtest"); ////134 -// cosmic.setClusterNumber("yxzg-prod"); -// cosmic.setTenantNumber("yxzg-prod"); -// cosmic.setServerIP("10.64.111.134"); -// cosmic.setConfigUrl("10.64.111.134:2181","zookeeper","d@f*g:SGVsbG8==U4HRwjlqTOp0p9b60T+T8D2fQ8ThQgJLu/qgfLyLgknPa2RwYXNzd29yZA=="); + cosmic.setClusterNumber("yxzg-prod"); + cosmic.setTenantNumber("yxzg-prod"); + cosmic.setServerIP("10.64.111.134"); + cosmic.setConfigUrl("10.64.111.134:2181","zookeeper","d@f*g:SGVsbG8==U4HRwjlqTOp0p9b60T+T8D2fQ8ThQgJLu/qgfLyLgknPa2RwYXNzd29yZA=="); cosmic.setStartWithQing(false); cosmic.start();