diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/CasPaybillToEcFundPlanApplyOp.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/CasPaybillToEcFundPlanApplyOp.java index 399b4c0..ad8a001 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/CasPaybillToEcFundPlanApplyOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/CasPaybillToEcFundPlanApplyOp.java @@ -51,6 +51,7 @@ public class CasPaybillToEcFundPlanApplyOp extends AbstractOperationServicePlugI for (DynamicObject dataEntity : dataEntities) { long id = dataEntity.getLong("id"); // idList.add(id); + //根据付款处理单获取资金计划申请单 Map> sourceBills = BFTrackerServiceHelper.findSourceBills("cas_paybill", new Long[]{id}); HashSet zcgjEcFundingplanapply = sourceBills.get("zcgj_ec_fundingplanapply"); if(zcgjEcFundingplanapply != null && !zcgjEcFundingplanapply.isEmpty()) { @@ -59,10 +60,14 @@ public class CasPaybillToEcFundPlanApplyOp extends AbstractOperationServicePlugI //计算实际付款金额 DynamicObject paybill = BusinessDataServiceHelper.loadSingle(id, "cas_paybill"); DynamicObject settletype = paybill.getDynamicObject("settletype"); - String typeString = ""; - if(settletype!=null){ + int zcgjZjjhhdseq = paybill.getInt("zcgj_zjjhhdseq"); + long zcgjZjjhhdid = paybill.getLong("zcgj_zjjhhdid"); + String billstatus = paybill.getString("billstatus"); + if(zcgjZjjhhdid !=0 && zcgjZjjhhdseq!=0 && "D".equals(billstatus)){ + // String typeString = ""; + /*if(settletype!=null){ String type = settletype.getString("number"); - if("002".equals(type) || "JSFS04".equals(type)){ //司库-对公/电汇 + if("002".equals(type) || "JSFS01".equals(type) || "JSFS04".equals(type)){ //司库-对公/电汇 //现金 typeString = "XJ"; }else if("JSFS07".equals(type)){ //银行承兑汇票 @@ -78,45 +83,49 @@ public class CasPaybillToEcFundPlanApplyOp extends AbstractOperationServicePlugI //其他金融产品 typeString = "QTJRCP"; } - } - DynamicObjectCollection entryCpllection = paybill.getDynamicObjectCollection("entry"); - BigDecimal allActamt = BigDecimal.ZERO; - for (DynamicObject entry : entryCpllection) { - BigDecimal val = entry.getBigDecimal("e_actamt"); - BigDecimal eActamt = val !=null ?val:BigDecimal.ZERO;//获取实付金额 - allActamt = allActamt.add(eActamt); - } + }*/ + DynamicObjectCollection entryCpllection = paybill.getDynamicObjectCollection("entry"); + BigDecimal allActamt = BigDecimal.ZERO; + for (DynamicObject entry : entryCpllection) { + BigDecimal val = entry.getBigDecimal("e_actamt"); + BigDecimal eActamt = val !=null ?val:BigDecimal.ZERO;//获取实付金额 + allActamt = allActamt.add(eActamt); + } - //读取资金计划申请 - DynamicObject fundingplanapply = BusinessDataServiceHelper.loadSingle(dataId, "zcgj_ec_fundingplanapply"); - DynamicObjectCollection zcgjFinApprovedAmount = fundingplanapply.getDynamicObjectCollection("zcgj_fin_approved_amount"); - for (DynamicObject dynamicObject : zcgjFinApprovedAmount) { - String zcgjSetttype = dynamicObject.getString("zcgj_setttype"); - if(typeString.equals(zcgjSetttype)){ - BigDecimal zcgjAmountpaid = dynamicObject.getBigDecimal("zcgj_amountpaid"); - BigDecimal zcgjAmountRecommended = zcgjAmountpaid !=null ? zcgjAmountpaid:BigDecimal.ZERO;//实际付款金额 - BigDecimal amountrecommended = BigDecimal.ZERO; - if(!isPay){ - amountrecommended = allActamt; - allActamt = allActamt.multiply(BigDecimal.ZERO.subtract(BigDecimal.ONE));//取相反数 - } - allActamt = allActamt.add(zcgjAmountRecommended); - dynamicObject.set("zcgj_amountpaid", allActamt);//实付金额 - dynamicObject.set("zcgj_amount_inpayment",amountrecommended);// + //读取资金计划申请 + DynamicObject fundingplanapply = BusinessDataServiceHelper.loadSingle(dataId, "zcgj_ec_fundingplanapply"); + DynamicObjectCollection zcgjFinApprovedAmount = fundingplanapply.getDynamicObjectCollection("zcgj_fin_approved_amount"); + for (DynamicObject dynamicObject : zcgjFinApprovedAmount) { + String zcgjSetttype = dynamicObject.getString("zcgj_setttype"); + int entrtySeq = dynamicObject.getInt("seq"); + long entrtyId = dynamicObject.getLong("id"); + if(entrtyId == zcgjZjjhhdid){ + //if(typeString.equals(zcgjSetttype)){ + BigDecimal zcgjAmountpaid = dynamicObject.getBigDecimal("zcgj_amountpaid"); + BigDecimal zcgjAmountRecommended = zcgjAmountpaid !=null ? zcgjAmountpaid:BigDecimal.ZERO;//实际付款金额 + // BigDecimal amountrecommended = BigDecimal.ZERO; + BigDecimal amountrecommended = dynamicObject.getBigDecimal("zcgj_amount_inpayment"); + if(!isPay){ + allActamt = allActamt.multiply(BigDecimal.ZERO.subtract(BigDecimal.ONE));//取相反数 + } - //zcgj_amount_remaining = zcgj_hdamount - zcgj_amount_inpayment - zcgj_amountpaid - //剩余待拨付金额 = 财务核定金额 - 付款处理中金额 - 实付金额 - BigDecimal hdamount = dynamicObject.getBigDecimal("zcgj_hdamount"); - if(hdamount !=null && isPay){ - BigDecimal subtract = hdamount.subtract(amountrecommended).subtract(allActamt); - dynamicObject.set("zcgj_amount_remaining",subtract); - }else if(hdamount != null){ - BigDecimal subtract = hdamount.add(amountrecommended).subtract(allActamt);//实付金额已经成为相反数 - dynamicObject.set("zcgj_amount_remaining",subtract); + amountrecommended = amountrecommended.subtract(allActamt); + allActamt = allActamt.add(zcgjAmountRecommended); + dynamicObject.set("zcgj_amountpaid", allActamt);//实付金额 + dynamicObject.set("zcgj_amount_inpayment",amountrecommended);//付款处理中金额 + + //zcgj_amount_remaining = zcgj_hdamount - zcgj_amount_inpayment - zcgj_amountpaid + //剩余待拨付金额 = 财务核定金额(不含代付) - 付款处理中金额 - 实付金额 + BigDecimal hdamount = dynamicObject.getBigDecimal("zcgj_hdamount"); + if(hdamount !=null){ + BigDecimal subtract = hdamount.subtract(amountrecommended).subtract(allActamt); + dynamicObject.set("zcgj_amount_remaining",subtract); + } } } + updateData.add(fundingplanapply); } - updateData.add(fundingplanapply); + } } if(!updateData.isEmpty()){ diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/other/MaterialinbillToNoContractBotpPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/other/MaterialinbillToNoContractBotpPlugin.java index bf7d3d3..3c3c1b6 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/other/MaterialinbillToNoContractBotpPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/other/MaterialinbillToNoContractBotpPlugin.java @@ -1,5 +1,6 @@ package zcgj.zcdev.zcdev.fs.plugin.other; +import com.google.common.collect.Sets; import kd.bos.coderule.api.CodeRuleInfo; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; @@ -9,10 +10,8 @@ import kd.bos.entity.botp.plugin.args.AfterConvertEventArgs; import kd.bos.servicehelper.coderule.CodeRuleServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 入库单下推无合同付款申请单botp插件 @@ -22,7 +21,7 @@ public class MaterialinbillToNoContractBotpPlugin extends AbstractConvertPlugIn @Override public void afterConvert(AfterConvertEventArgs e) { super.afterConvert(e); - // 获取已生成的资产卡片 + // 获取已生成的对公报销单 ExtendedDataEntity[] billDataEntitys = e.getTargetExtDataEntitySet().FindByEntityKey("er_publicreimbursebill"); // 构造 ExtendedDataEntity 时需要的索引值 @@ -47,8 +46,11 @@ public class MaterialinbillToNoContractBotpPlugin extends AbstractConvertPlugIn DynamicObjectCollection expenseentryentity = dataEntity.getDynamicObjectCollection("expenseentryentity"); for (DynamicObject expenseentry : expenseentryentity) { String invoiceno = expenseentry.getString("invoiceno_entry"); + Set invoiceNos = Sets.newHashSet((Iterable)Arrays.stream(invoiceno.split(",")).collect(Collectors.toSet())); long aLong = expenseentry.getLong("id"); - expensEntryMap.put(invoiceno, aLong); + for (String invoiceNo : invoiceNos) { + expensEntryMap.put(invoiceNo, aLong); + } } //发票明细分录 diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CustomInvoiceDataHandleHelper.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CustomInvoiceDataHandleHelper.java index 2df8da5..4d6e776 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CustomInvoiceDataHandleHelper.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/CustomInvoiceDataHandleHelper.java @@ -43,7 +43,6 @@ import kd.ec.basedata.common.invoicecloud.InvoiceCloudConfigHelper; import kd.ec.basedata.common.invoicecloud.InvoiceDataHandleHelper; import kd.ec.basedata.common.invoicecloud.bean.InvoiceItemVO; import kd.ec.basedata.common.invoicecloud.bean.InvoiceVO; -import kd.ec.basedata.common.invoicecloud.enumeration.InvoiceTypeEnum; import kd.ec.basedata.common.utils.HttpURLConnectionHelper; import kd.ec.basedata.common.utils.MD5; import kd.ec.basedata.common.utils.TextHelper; @@ -53,7 +52,11 @@ import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import net.sf.json.util.JSONUtils; import net.sf.json.util.PropertySetStrategy; +import zcgj.zcdev.zcdev.pr.utils.InvoiceTypeEnum; +/** + * 财务发票转换工程发票 + */ public class CustomInvoiceDataHandleHelper extends InvoiceDataHandleHelper { private static final Log log = LogFactory.getLog(CustomInvoiceDataHandleHelper.class); @@ -111,7 +114,9 @@ public class CustomInvoiceDataHandleHelper extends InvoiceDataHandleHelper { log.info("CustomInvoiceCloudImportListPlugin:设置发票的唯一 ID:"+id); invoice.set("serialno", invoiceVO.getSerialNo());//设置发票序列号 log.info("CustomInvoiceCloudImportListPlugin:设置发票序列号 serialno:"+invoiceVO.getSerialNo()); + log.info("CustomInvoiceCloudImportListPlugin:获取发票类型 invoiceType:"+invoiceVO.getInvoiceType()); InvoiceTypeEnum invoiceTypeEnum = InvoiceTypeEnum.getEnumByValue(invoiceVO.getInvoiceType()); + log.info("CustomInvoiceCloudImportListPlugin:获取发票类型InvoiceTypeEnum InvoiceTypeEnum:"+invoiceTypeEnum.getName()+" "+invoiceTypeEnum.getValue()); if (invoiceTypeEnum != null) { QFilter invoiceTypeFilter = new QFilter("name", "=", invoiceTypeEnum.getName()); DynamicObject invoiceType = BusinessDataServiceHelper.loadSingle("ec_invoice_type", "id", new QFilter[]{invoiceTypeFilter}); diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/FundingplanapplyAccountBalancePlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/FundingplanapplyAccountBalancePlugin.java index 5577e9e..ecf2af8 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/FundingplanapplyAccountBalancePlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/FundingplanapplyAccountBalancePlugin.java @@ -62,24 +62,28 @@ public class FundingplanapplyAccountBalancePlugin extends AbstractBillPlugIn imp DynamicObjectCollection infundproject = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_infundproject_entry"); for (int i = 0; i < infundproject.size(); i++) { - MulBasedataDynamicObjectCollection dynamicObjectCollection = (MulBasedataDynamicObjectCollection)infundproject.get(i).getDynamicObjectCollection("zcgj_in_custom"); - if(dynamicObjectCollection!=null && !dynamicObjectCollection.isEmpty()){ - customerBalance(i,dynamicObjectCollection); + DynamicObjectCollection dynamicObjectCollectionObj = infundproject.get(i).getDynamicObjectCollection("zcgj_in_custom"); + if(dynamicObjectCollectionObj != null){ + if(!dynamicObjectCollectionObj.isEmpty()){ + customerBalance(i,dynamicObjectCollectionObj); + } } } DynamicObjectCollection outfundproject = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_outfundproject_entry"); for (int i = 0; i < outfundproject.size(); i++) { - MulBasedataDynamicObjectCollection dynamicObjectCollection = (MulBasedataDynamicObjectCollection)outfundproject.get(i).getDynamicObjectCollection("zcgj_out_supplier"); - if(dynamicObjectCollection!=null && !dynamicObjectCollection.isEmpty()){ - supplierBalance(i,dynamicObjectCollection); + DynamicObjectCollection dynamicObjectCollectionObj = outfundproject.get(i).getDynamicObjectCollection("zcgj_out_supplier"); + if(dynamicObjectCollectionObj != null){ + if(!dynamicObjectCollectionObj.isEmpty()){ + supplierBalance(i,dynamicObjectCollectionObj); + } } } } } - public void customerBalance(int rowIndex, MulBasedataDynamicObjectCollection customs){ + public void customerBalance(int rowIndex, DynamicObjectCollection customs){ if(customs!=null){ DynamicObject org = (DynamicObject)this.getModel().getValue("zcgj_org"); if(org == null){ @@ -95,55 +99,56 @@ public class FundingplanapplyAccountBalancePlugin extends AbstractBillPlugIn imp if(period == null){ //this.getView().showErrMessage("请选择期间!"); this.getView().showErrorNotification("请选择期间!"); - } - balanceQueryParamApi.setPeriodNumber(period.getString("number")); // - List groupBy = new ArrayList<>(); + }else{ + balanceQueryParamApi.setPeriodNumber(period.getString("number")); // + List groupBy = new ArrayList<>(); - Map>> accountAssgrp = new HashMap<>(); - List> li = new ArrayList<>(); - for (DynamicObject custom : customs) { - Map map1 = new HashMap<>(); - DynamicObject basedataObj = custom.getDynamicObject("fbasedataid"); - DynamicObject customer = BusinessDataServiceHelper.loadSingle( basedataObj.getPkValue(), "bd_customer"); - map1.put("0001", customer.getString("number")); - li.add(map1); - } - accountAssgrp.put("1122", li); - balanceQueryParamApi.setAccountAssgrp(accountAssgrp); - groupBy.add("0001"); - groupBy.add("account"); - Gson gson = new Gson(); - String json = gson.toJson(balanceQueryParamApi); - Map params = gson.fromJson(json, - new TypeToken>() { - }.getType()); - OpenApiResult balanceData = OpenApiSdkUtil.invoke("/v2/gl/getBalanceApi", params); - - if (balanceData.isStatus()) { - String data = (String) balanceData.getData(); - Type listType = new TypeToken>() { - }.getType(); - List records = gson.fromJson(data, listType); - - BigDecimal totalbeginlocal = BigDecimal.ZERO; - BigDecimal totalendlocal = BigDecimal.ZERO; - BigDecimal totayeardebitfor = BigDecimal.ZERO; - BigDecimal totalyearcreditfor = BigDecimal.ZERO; - for (AccountRecord record : records) { - totalbeginlocal = totalbeginlocal.add(record.getBeginlocal());//期初本位币金额 - totalendlocal = totalendlocal.add(record.getEndlocal());//期初本位币金额 - totayeardebitfor = totayeardebitfor.add(record.getYeardebitfor());//yeardebitfor - totalyearcreditfor = totalyearcreditfor.add(record.getYearcreditfor());//yearcreditfor + Map>> accountAssgrp = new HashMap<>(); + List> li = new ArrayList<>(); + for (DynamicObject custom : customs) { + Map map1 = new HashMap<>(); + DynamicObject basedataObj = custom.getDynamicObject("fbasedataid"); + DynamicObject customer = BusinessDataServiceHelper.loadSingle( basedataObj.getPkValue(), "bd_customer"); + map1.put("0001", customer.getString("number")); + li.add(map1); + } + accountAssgrp.put("1122", li); + balanceQueryParamApi.setAccountAssgrp(accountAssgrp); + groupBy.add("0001"); + groupBy.add("account"); + Gson gson = new Gson(); + String json = gson.toJson(balanceQueryParamApi); + Map params = gson.fromJson(json, + new TypeToken>() { + }.getType()); + OpenApiResult balanceData = OpenApiSdkUtil.invoke("/v2/gl/getBalanceApi", params); + + if (balanceData.isStatus()) { + String data = (String) balanceData.getData(); + Type listType = new TypeToken>() { + }.getType(); + List records = gson.fromJson(data, listType); + + BigDecimal totalbeginlocal = BigDecimal.ZERO; + BigDecimal totalendlocal = BigDecimal.ZERO; + BigDecimal totayeardebitfor = BigDecimal.ZERO; + BigDecimal totalyearcreditfor = BigDecimal.ZERO; + for (AccountRecord record : records) { + totalbeginlocal = totalbeginlocal.add(record.getBeginlocal());//期初本位币金额 + totalendlocal = totalendlocal.add(record.getEndlocal());//期初本位币金额 + totayeardebitfor = totayeardebitfor.add(record.getYeardebitfor());//yeardebitfor + totalyearcreditfor = totalyearcreditfor.add(record.getYearcreditfor());//yearcreditfor + } + DynamicObjectCollection zcgjFinApprovedAmount = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_infundproject_entry"); + DynamicObject dynamicObject = zcgjFinApprovedAmount.get(rowIndex); + //年初余额 = 期末余额-本年累计借方+本年累计贷方 + BigDecimal beginningbalanceofyear =totalendlocal.subtract(totayeardebitfor).add(totalyearcreditfor); + dynamicObject.set("zcgj_iinitialreceivable",beginningbalanceofyear);//年初余额取科目余额表年初数 + dynamicObject.set("zcgj_monthbeginreceivable",totalbeginlocal);//月初应收余额 + dynamicObject.set("zcgj_ytdoutputvalue",totayeardebitfor);//本年累计结算-借方 + dynamicObject.set("zcgj_ytdpaymentreceived",totalyearcreditfor);//本年累计回款-贷方 + this.getView().updateView("zcgj_infundproject_entry"); } - DynamicObjectCollection zcgjFinApprovedAmount = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_infundproject_entry"); - DynamicObject dynamicObject = zcgjFinApprovedAmount.get(rowIndex); - //年初余额 = 期末余额-本年累计借方+本年累计贷方 - BigDecimal beginningbalanceofyear =totalendlocal.subtract(totayeardebitfor).add(totalyearcreditfor); - dynamicObject.set("zcgj_iinitialreceivable",beginningbalanceofyear);//年初余额取科目余额表年初数 - dynamicObject.set("zcgj_monthbeginreceivable",totalbeginlocal);//月初应收余额 - dynamicObject.set("zcgj_ytdoutputvalue",totayeardebitfor);//本年累计结算-借方 - dynamicObject.set("zcgj_ytdpaymentreceived",totalyearcreditfor);//本年累计回款-贷方 - this.getView().updateView("zcgj_infundproject_entry"); } } @@ -158,7 +163,7 @@ public class FundingplanapplyAccountBalancePlugin extends AbstractBillPlugIn imp } } - public void supplierBalance(int rowIndex, MulBasedataDynamicObjectCollection suppliers){ + public void supplierBalance(int rowIndex, DynamicObjectCollection suppliers){ if(suppliers!=null){ DynamicObject org = (DynamicObject)this.getModel().getValue("zcgj_org"); if(org == null){ @@ -174,55 +179,56 @@ public class FundingplanapplyAccountBalancePlugin extends AbstractBillPlugIn imp if(period == null){ //this.getView().showErrMessage("请选择期间!"); this.getView().showErrorNotification("请选择期间!"); - } - balanceQueryParamApi.setPeriodNumber(period.getString("number")); // - List groupBy = new ArrayList<>(); + }else{ + balanceQueryParamApi.setPeriodNumber(period.getString("number")); // + List groupBy = new ArrayList<>(); - Map>> accountAssgrp = new HashMap<>(); - List> li = new ArrayList<>(); - for (DynamicObject supplier : suppliers) { - Map map1 = new HashMap<>(); - DynamicObject basedataObj = supplier.getDynamicObject("fbasedataid"); - DynamicObject customer = BusinessDataServiceHelper.loadSingle( basedataObj.getPkValue(), "bd_supplier"); - map1.put("0005", customer.getString("number")); - li.add(map1); - } - accountAssgrp.put("2202", li); - balanceQueryParamApi.setAccountAssgrp(accountAssgrp); - groupBy.add("0005"); - groupBy.add("account"); - Gson gson = new Gson(); - String json = gson.toJson(balanceQueryParamApi); - Map params = gson.fromJson(json, - new TypeToken>() { - }.getType()); - OpenApiResult balanceData = OpenApiSdkUtil.invoke("/v2/gl/getBalanceApi", params); - - if (balanceData.isStatus()) { - String data = (String) balanceData.getData(); - Type listType = new TypeToken>() { - }.getType(); - List records = gson.fromJson(data, listType); - - BigDecimal totalbeginlocal = BigDecimal.ZERO; - BigDecimal totalendlocal = BigDecimal.ZERO; - BigDecimal totayeardebitfor = BigDecimal.ZERO; - BigDecimal totalyearcreditfor = BigDecimal.ZERO; - for (AccountRecord record : records) { - totalbeginlocal = totalbeginlocal.add(record.getBeginlocal());//期初本位币金额 - totalendlocal = totalendlocal.add(record.getEndlocal());//期初本位币金额 - totayeardebitfor = totayeardebitfor.add(record.getYeardebitfor());//yeardebitfor - totalyearcreditfor = totalyearcreditfor.add(record.getYearcreditfor());//yearcreditfor + Map>> accountAssgrp = new HashMap<>(); + List> li = new ArrayList<>(); + for (DynamicObject supplier : suppliers) { + Map map1 = new HashMap<>(); + DynamicObject basedataObj = supplier.getDynamicObject("fbasedataid"); + DynamicObject customer = BusinessDataServiceHelper.loadSingle( basedataObj.getPkValue(), "bd_supplier"); + map1.put("0005", customer.getString("number")); + li.add(map1); + } + accountAssgrp.put("2202", li); + balanceQueryParamApi.setAccountAssgrp(accountAssgrp); + groupBy.add("0005"); + groupBy.add("account"); + Gson gson = new Gson(); + String json = gson.toJson(balanceQueryParamApi); + Map params = gson.fromJson(json, + new TypeToken>() { + }.getType()); + OpenApiResult balanceData = OpenApiSdkUtil.invoke("/v2/gl/getBalanceApi", params); + + if (balanceData.isStatus()) { + String data = (String) balanceData.getData(); + Type listType = new TypeToken>() { + }.getType(); + List records = gson.fromJson(data, listType); + + BigDecimal totalbeginlocal = BigDecimal.ZERO; + BigDecimal totalendlocal = BigDecimal.ZERO; + BigDecimal totayeardebitfor = BigDecimal.ZERO; + BigDecimal totalyearcreditfor = BigDecimal.ZERO; + for (AccountRecord record : records) { + totalbeginlocal = totalbeginlocal.add(record.getBeginlocal());//期初本位币金额 + totalendlocal = totalendlocal.add(record.getEndlocal());//期初本位币金额 + totayeardebitfor = totayeardebitfor.add(record.getYeardebitfor());//yeardebitfor + totalyearcreditfor = totalyearcreditfor.add(record.getYearcreditfor());//yearcreditfor + } + DynamicObjectCollection zcgjFinApprovedAmount = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_outfundproject_entry"); + DynamicObject dynamicObject = zcgjFinApprovedAmount.get(rowIndex); + //年初余额 = 期末余额-本年累计借方+本年累计贷方 + BigDecimal beginningbalanceofyear =totalendlocal.subtract(totalyearcreditfor).add(totayeardebitfor); + dynamicObject.set("zcgj_openingpayable",beginningbalanceofyear);//年初余额取科目余额表年初数 + dynamicObject.set("zcgj_monthbeginpayable",totalbeginlocal);//月初应付余额 + dynamicObject.set("zcgj_ytdtotalpayment",totayeardebitfor);//本年累计付款-借方 + dynamicObject.set("zcgj_ytdnetsettlement",totalyearcreditfor);//本年累计结算-贷方 + this.getView().updateView("zcgj_outfundproject_entry"); } - DynamicObjectCollection zcgjFinApprovedAmount = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_outfundproject_entry"); - DynamicObject dynamicObject = zcgjFinApprovedAmount.get(rowIndex); - //年初余额 = 期末余额-本年累计借方+本年累计贷方 - BigDecimal beginningbalanceofyear =totalendlocal.subtract(totalyearcreditfor).add(totayeardebitfor); - dynamicObject.set("zcgj_openingpayable",beginningbalanceofyear);//年初余额取科目余额表年初数 - dynamicObject.set("zcgj_monthbeginpayable",totalbeginlocal);//月初应付余额 - dynamicObject.set("zcgj_ytdtotalpayment",totayeardebitfor);//本年累计付款-借方 - dynamicObject.set("zcgj_ytdnetsettlement",totalyearcreditfor);//本年累计结算-贷方 - this.getView().updateView("zcgj_outfundproject_entry"); } } }else{ @@ -258,46 +264,47 @@ public class FundingplanapplyAccountBalancePlugin extends AbstractBillPlugIn imp if(period == null){ //this.getView().showErrMessage("请选择期间!"); this.getView().showErrorNotification("请选择期间!"); - } - balanceQueryParamApi.setPeriodNumber(period.getString("number")); // - List groupBy = new ArrayList<>(); - - Map>> accountAssgrp = new HashMap<>(); - List> li = new ArrayList<>(); - accountAssgrp.put("1001", li); //现金 - accountAssgrp.put("1002", li); //现金 - // accountAssgrp.put("11260101", li); //银行承兑 - //accountAssgrp.put("11260301", li); //供应链 - balanceQueryParamApi.setAccountAssgrp(accountAssgrp); - //groupBy.add("0005"); - groupBy.add("account"); - Gson gson = new Gson(); - String json = gson.toJson(balanceQueryParamApi); - Map params = gson.fromJson(json, - new TypeToken>() { - }.getType()); - OpenApiResult balanceData = OpenApiSdkUtil.invoke("/v2/gl/getBalanceApi", params); - - if (balanceData.isStatus()) { - String data = (String) balanceData.getData(); - Type listType = new TypeToken>() { - }.getType(); - List records = gson.fromJson(data, listType); - - BigDecimal totalbeginlocal = BigDecimal.ZERO; - for (AccountRecord record : records) { - totalbeginlocal = totalbeginlocal.add(record.getBeginlocal());//期初本位币金额 - } - - DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); - DynamicObject dynamicObject = fundplyentry.get(0); - dynamicObject.set("zcgj_cashamt",totalbeginlocal);//现金 - this.getView().updateView("zcgj_fundplyentry"); }else{ - DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); - DynamicObject dynamicObject = fundplyentry.get(0); - dynamicObject.set("zcgj_cashamt",BigDecimal.ZERO);//现金 - this.getView().updateView("zcgj_fundplyentry"); + balanceQueryParamApi.setPeriodNumber(period.getString("number")); // + List groupBy = new ArrayList<>(); + + Map>> accountAssgrp = new HashMap<>(); + List> li = new ArrayList<>(); + accountAssgrp.put("1001", li); //现金 + accountAssgrp.put("1002", li); //现金 + // accountAssgrp.put("11260101", li); //银行承兑 + //accountAssgrp.put("11260301", li); //供应链 + balanceQueryParamApi.setAccountAssgrp(accountAssgrp); + //groupBy.add("0005"); + groupBy.add("account"); + Gson gson = new Gson(); + String json = gson.toJson(balanceQueryParamApi); + Map params = gson.fromJson(json, + new TypeToken>() { + }.getType()); + OpenApiResult balanceData = OpenApiSdkUtil.invoke("/v2/gl/getBalanceApi", params); + + if (balanceData.isStatus()) { + String data = (String) balanceData.getData(); + Type listType = new TypeToken>() { + }.getType(); + List records = gson.fromJson(data, listType); + + BigDecimal totalbeginlocal = BigDecimal.ZERO; + for (AccountRecord record : records) { + totalbeginlocal = totalbeginlocal.add(record.getBeginlocal());//期初本位币金额 + } + + DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); + DynamicObject dynamicObject = fundplyentry.get(0); + dynamicObject.set("zcgj_cashamt",totalbeginlocal);//现金 + this.getView().updateView("zcgj_fundplyentry"); + }else{ + DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); + DynamicObject dynamicObject = fundplyentry.get(0); + dynamicObject.set("zcgj_cashamt",BigDecimal.ZERO);//现金 + this.getView().updateView("zcgj_fundplyentry"); + } } } } @@ -317,45 +324,46 @@ public class FundingplanapplyAccountBalancePlugin extends AbstractBillPlugIn imp if(period == null){ //this.getView().showErrMessage("请选择期间!"); this.getView().showErrorNotification("请选择期间!"); - } - balanceQueryParamApi.setPeriodNumber(period.getString("number")); // - List groupBy = new ArrayList<>(); - - Map>> accountAssgrp = new HashMap<>(); - List> li = new ArrayList<>(); - //accountAssgrp.put("1001", li); //现金 - //accountAssgrp.put("1002", li); //现金 - accountAssgrp.put("11260101", li); //银行承兑 - //accountAssgrp.put("11260301", li); //供应链 - balanceQueryParamApi.setAccountAssgrp(accountAssgrp); - //groupBy.add("0005"); - groupBy.add("account"); - Gson gson = new Gson(); - String json = gson.toJson(balanceQueryParamApi); - Map params = gson.fromJson(json, - new TypeToken>() { - }.getType()); - OpenApiResult balanceData = OpenApiSdkUtil.invoke("/v2/gl/getBalanceApi", params); - - if (balanceData.isStatus()) { - String data = (String) balanceData.getData(); - Type listType = new TypeToken>() { - }.getType(); - List records = gson.fromJson(data, listType); - - BigDecimal totalbeginlocal = BigDecimal.ZERO; - for (AccountRecord record : records) { - totalbeginlocal = totalbeginlocal.add(record.getBeginlocal());//期初本位币金额 - } - - DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); - DynamicObject dynamicObject = fundplyentry.get(0); - dynamicObject.set("zcgj_bankamt",totalbeginlocal);//银行承兑 }else{ - DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); - DynamicObject dynamicObject = fundplyentry.get(0); - dynamicObject.set("zcgj_bankamt",BigDecimal.ZERO);//银行承兑 - this.getView().updateView("zcgj_fundplyentry"); + balanceQueryParamApi.setPeriodNumber(period.getString("number")); // + List groupBy = new ArrayList<>(); + + Map>> accountAssgrp = new HashMap<>(); + List> li = new ArrayList<>(); + //accountAssgrp.put("1001", li); //现金 + //accountAssgrp.put("1002", li); //现金 + accountAssgrp.put("11260101", li); //银行承兑 + //accountAssgrp.put("11260301", li); //供应链 + balanceQueryParamApi.setAccountAssgrp(accountAssgrp); + //groupBy.add("0005"); + groupBy.add("account"); + Gson gson = new Gson(); + String json = gson.toJson(balanceQueryParamApi); + Map params = gson.fromJson(json, + new TypeToken>() { + }.getType()); + OpenApiResult balanceData = OpenApiSdkUtil.invoke("/v2/gl/getBalanceApi", params); + + if (balanceData.isStatus()) { + String data = (String) balanceData.getData(); + Type listType = new TypeToken>() { + }.getType(); + List records = gson.fromJson(data, listType); + + BigDecimal totalbeginlocal = BigDecimal.ZERO; + for (AccountRecord record : records) { + totalbeginlocal = totalbeginlocal.add(record.getBeginlocal());//期初本位币金额 + } + + DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); + DynamicObject dynamicObject = fundplyentry.get(0); + dynamicObject.set("zcgj_bankamt",totalbeginlocal);//银行承兑 + }else{ + DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); + DynamicObject dynamicObject = fundplyentry.get(0); + dynamicObject.set("zcgj_bankamt",BigDecimal.ZERO);//银行承兑 + this.getView().updateView("zcgj_fundplyentry"); + } } } @@ -376,45 +384,46 @@ public class FundingplanapplyAccountBalancePlugin extends AbstractBillPlugIn imp if(period == null){ //this.getView().showErrMessage("请选择期间!"); this.getView().showErrorNotification("请选择期间!"); - } - balanceQueryParamApi.setPeriodNumber(period.getString("number")); // - List groupBy = new ArrayList<>(); - - Map>> accountAssgrp = new HashMap<>(); - List> li = new ArrayList<>(); - //accountAssgrp.put("1001", li); //现金 - //accountAssgrp.put("1002", li); //现金 - //accountAssgrp.put("11260101", li); //银行承兑 - accountAssgrp.put("11260301", li); //供应链 - balanceQueryParamApi.setAccountAssgrp(accountAssgrp); - //groupBy.add("0005"); - groupBy.add("account"); - Gson gson = new Gson(); - String json = gson.toJson(balanceQueryParamApi); - Map params = gson.fromJson(json, - new TypeToken>() { - }.getType()); - OpenApiResult balanceData = OpenApiSdkUtil.invoke("/v2/gl/getBalanceApi", params); - - if (balanceData.isStatus()) { - String data = (String) balanceData.getData(); - Type listType = new TypeToken>() { - }.getType(); - List records = gson.fromJson(data, listType); - - BigDecimal totalbeginlocal = BigDecimal.ZERO; - for (AccountRecord record : records) { - totalbeginlocal = totalbeginlocal.add(record.getBeginlocal());//期初本位币金额 - } - - DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); - DynamicObject dynamicObject = fundplyentry.get(0); - dynamicObject.set("zcgj_supplyamt",totalbeginlocal);//供应链 }else{ - DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); - DynamicObject dynamicObject = fundplyentry.get(0); - dynamicObject.set("zcgj_supplyamt",BigDecimal.ZERO);//供应链 - this.getView().updateView("zcgj_fundplyentry"); + balanceQueryParamApi.setPeriodNumber(period.getString("number")); // + List groupBy = new ArrayList<>(); + + Map>> accountAssgrp = new HashMap<>(); + List> li = new ArrayList<>(); + //accountAssgrp.put("1001", li); //现金 + //accountAssgrp.put("1002", li); //现金 + //accountAssgrp.put("11260101", li); //银行承兑 + accountAssgrp.put("11260301", li); //供应链 + balanceQueryParamApi.setAccountAssgrp(accountAssgrp); + //groupBy.add("0005"); + groupBy.add("account"); + Gson gson = new Gson(); + String json = gson.toJson(balanceQueryParamApi); + Map params = gson.fromJson(json, + new TypeToken>() { + }.getType()); + OpenApiResult balanceData = OpenApiSdkUtil.invoke("/v2/gl/getBalanceApi", params); + + if (balanceData.isStatus()) { + String data = (String) balanceData.getData(); + Type listType = new TypeToken>() { + }.getType(); + List records = gson.fromJson(data, listType); + + BigDecimal totalbeginlocal = BigDecimal.ZERO; + for (AccountRecord record : records) { + totalbeginlocal = totalbeginlocal.add(record.getBeginlocal());//期初本位币金额 + } + + DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); + DynamicObject dynamicObject = fundplyentry.get(0); + dynamicObject.set("zcgj_supplyamt",totalbeginlocal);//供应链 + }else{ + DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); + DynamicObject dynamicObject = fundplyentry.get(0); + dynamicObject.set("zcgj_supplyamt",BigDecimal.ZERO);//供应链 + this.getView().updateView("zcgj_fundplyentry"); + } } } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/FundingplanapplyPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/FundingplanapplyPlugin.java index 88bb8e8..edc43c8 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/FundingplanapplyPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/FundingplanapplyPlugin.java @@ -65,7 +65,7 @@ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin //设置期间 carryCurrentPeriodAndDate(); //初始化值 - initData(org); + initData(org,null); } //获取登录人的主职部门,用户的非兼职部门就是主职部门 @@ -103,7 +103,7 @@ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin /** * 自动带入 今年最新的 “年初应收余额”和“年初应付余额 */ - public void initData(DynamicObject org){ + public void initData(DynamicObject org,DynamicObject periodParam){ int year = LocalDate.now().getYear(); List searchFilterList = new ArrayList<>(); @@ -210,9 +210,20 @@ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin this.getView().updateView("zcgj_infundlastentry"); } + BigDecimal cashamtAll = BigDecimal.ZERO; + BigDecimal bankamtAll = BigDecimal.ZERO; + BigDecimal businessamtAll = BigDecimal.ZERO; + BigDecimal supplyamtAll = BigDecimal.ZERO; + BigDecimal otheramtAll = BigDecimal.ZERO; + BigDecimal totalamtAll = BigDecimal.ZERO; Object periodObj = this.getModel().getValue("zcgj_period"); - if(periodObj!=null){ - DynamicObject period = (DynamicObject) periodObj; + if(periodObj!=null || periodParam !=null){ + DynamicObject period = null; + if(periodParam!=null){ + period = periodParam; + }else{ + period = (DynamicObject) periodObj; + } List searchFilterListzj = new ArrayList<>(); searchFilterListzj.add(new QFilter("zcgj_org", QCP.equals, org.getLong("id"))); searchFilterListzj.add( new QFilter("zcgj_period.number", QCP.equals, period.getString("number"))); @@ -223,15 +234,9 @@ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin ",zcgj_fundplyentry.zcgj_totalamt " + ",createtime", searchFilterListzj.toArray(new QFilter[]{}), "createtime desc"); - if(loadzj!=null && loadzj.length>0){ - DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); - BigDecimal cashamtAll = BigDecimal.ZERO; - BigDecimal bankamtAll = BigDecimal.ZERO; - BigDecimal businessamtAll = BigDecimal.ZERO; - BigDecimal supplyamtAll = BigDecimal.ZERO; - BigDecimal otheramtAll = BigDecimal.ZERO; - BigDecimal totalamtAll = BigDecimal.ZERO; + DynamicObjectCollection fundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); + if(loadzj != null){ for (DynamicObject dynamicObject : loadzj) { DynamicObjectCollection zcgjFundplyentry = dynamicObject.getDynamicObjectCollection("zcgj_fundplyentry"); for (DynamicObject dy : zcgjFundplyentry) { @@ -252,34 +257,35 @@ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin totalamtAll = totalamtAll.add(zcgjTotalamt); } } - } - - DynamicObject fundplyentry3 = fundplyentry.get(3); - fundplyentry3.set("zcgj_cashamt", cashamtAll); - fundplyentry3.set("zcgj_bankamt", bankamtAll); - fundplyentry3.set("zcgj_businessamt", businessamtAll); - fundplyentry3.set("zcgj_supplyamt", supplyamtAll); - fundplyentry3.set("zcgj_otheramt", otheramtAll); - fundplyentry3.set("zcgj_totalamt", totalamtAll); - this.getModel().setValue("zcgj_cashamtbak", cashamtAll); - this.getModel().setValue("zcgj_bankamtbak", bankamtAll); - this.getModel().setValue("zcgj_businessamtbak", businessamtAll); - this.getModel().setValue("zcgj_supplyamtbak", supplyamtAll); - this.getModel().setValue("zcgj_otheramtbak", otheramtAll); - this.getModel().setValue("zcgj_totalamtbak", totalamtAll); - - this.getView().updateView("zcgj_fundplyentry"); - - this.getView().updateView("zcgj_cashamtbak"); - this.getView().updateView("zcgj_bankamtbak"); - this.getView().updateView("zcgj_businessamtbak"); - this.getView().updateView("zcgj_supplyamtbak"); - this.getView().updateView("zcgj_otheramtbak"); - this.getView().updateView("zcgj_totalamtbak"); } - } + DynamicObject fundplyentry3 = fundplyentry.get(3); + fundplyentry3.set("zcgj_cashamt", cashamtAll); + fundplyentry3.set("zcgj_bankamt", bankamtAll); + fundplyentry3.set("zcgj_businessamt", businessamtAll); + fundplyentry3.set("zcgj_supplyamt", supplyamtAll); + fundplyentry3.set("zcgj_otheramt", otheramtAll); + fundplyentry3.set("zcgj_totalamt", totalamtAll); + } + this.getModel().setValue("zcgj_cashamtbak", cashamtAll); + this.getModel().setValue("zcgj_bankamtbak", bankamtAll); + this.getModel().setValue("zcgj_businessamtbak", businessamtAll); + this.getModel().setValue("zcgj_supplyamtbak", supplyamtAll); + this.getModel().setValue("zcgj_otheramtbak", otheramtAll); + this.getModel().setValue("zcgj_totalamtbak", totalamtAll); + + this.getView().updateView("zcgj_fundplyentry"); + + this.getView().updateView("zcgj_cashamtbak"); + this.getView().updateView("zcgj_bankamtbak"); + this.getView().updateView("zcgj_businessamtbak"); + this.getView().updateView("zcgj_supplyamtbak"); + this.getView().updateView("zcgj_otheramtbak"); + this.getView().updateView("zcgj_totalamtbak"); + + this.getView().setEnable(false, 3, "zcgj_cashamt","zcgj_bankamt","zcgj_businessamt","zcgj_supplyamt","zcgj_otheramt","zcgj_totalamt"); + this.getView().setEnable(false, 7, "zcgj_cashamt","zcgj_bankamt","zcgj_businessamt","zcgj_supplyamt","zcgj_otheramt","zcgj_totalamt"); } @@ -310,7 +316,11 @@ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin } }else if(name.equals("zcgj_org")){ DynamicObject org = (DynamicObject) changeData.getNewValue(); - initData(org); + initData(org,null); + }else if(name.equals("zcgj_period")){ + DynamicObject org = (DynamicObject) this.getModel().getValue("zcgj_org"); + DynamicObject periodParam = (DynamicObject) changeData.getNewValue(); + initData(org,periodParam); }else if(name.equals("zcgj_allplannedbankaccept")){//银行承兑 BigDecimal amount = (BigDecimal) changeData.getNewValue(); DynamicObjectCollection zcgjFundplyentry = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_fundplyentry"); @@ -437,14 +447,21 @@ public class FundingplanapplyPlugin extends AbstractBillPlugIn implements Plugin dynamicObject.set("zcgj_proxyamount",zcgjSupplyamt2);//其中:公司代付金额 dynamicObject.set("zcgj_amountfield",zcgjSupplyamt2);//财务核定总金额 dynamicObject.set("zcgj_hdproxyamount",zcgjSupplyamt2);//财务核定金额(代付) - dynamicObject.set("zcgj_amount_remaining",zcgjSupplyamt2); + BigDecimal zcgjAmountRemaining = dynamicObject.getBigDecimal("zcgj_amount_remaining"); + if(zcgjAmountRemaining==null){ + dynamicObject.set("zcgj_amount_remaining",BigDecimal.ZERO); + } }else if("QTJRCP".equals(zcgjSetttype)){ dynamicObject.set("zcgj_applymonthamt",zcgjOtheramt2); dynamicObject.set("zcgj_hdamount",BigDecimal.ZERO); dynamicObject.set("zcgj_proxyamount",zcgjOtheramt2);//其中:公司代付金额 dynamicObject.set("zcgj_amountfield",zcgjOtheramt2);//财务核定总金额 dynamicObject.set("zcgj_hdproxyamount",zcgjOtheramt2);//财务核定金额(代付) - dynamicObject.set("zcgj_amount_remaining",zcgjOtheramt2); + BigDecimal zcgjAmountRemaining = dynamicObject.getBigDecimal("zcgj_amount_remaining"); + // dynamicObject.set("zcgj_amount_remaining",zcgjOtheramt2); + if(zcgjAmountRemaining==null){ + dynamicObject.set("zcgj_amount_remaining",BigDecimal.ZERO); + } } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InvoiceNameRecognitionBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InvoiceNameRecognitionBillPlugin.java index e39b7a2..c1d476b 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InvoiceNameRecognitionBillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/InvoiceNameRecognitionBillPlugin.java @@ -19,8 +19,8 @@ import kd.ec.basedata.common.enums.DefaultEnum; import kd.ec.basedata.common.invoicecloud.InvoiceDataHandleHelper; import kd.ec.basedata.common.invoicecloud.bean.InvoiceItemVO; import kd.ec.basedata.common.invoicecloud.bean.InvoiceVO; -import kd.ec.basedata.common.invoicecloud.enumeration.InvoiceTypeEnum; import kd.ec.basedata.common.utils.TextHelper; +import zcgj.zcdev.zcdev.pr.utils.InvoiceTypeEnum; import java.math.BigDecimal; import java.text.ParseException; @@ -28,6 +28,9 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; +/** + * 发票导入名称识别 + */ public class InvoiceNameRecognitionBillPlugin extends InvoiceDataHandleHelper { private static final Log log = LogFactory.getLog(InvoiceNameRecognitionBillPlugin.class); public static DynamicObject generateInvoiceByVO(InvoiceVO invoiceVO, MainEntityType dt, long id, long userID, long orgID, Date date, DynamicObject currency) { diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InFinaceconfirmBackSettleOp.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InFinaceconfirmBackSettleOp.java index 647ac9b..efe1421 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InFinaceconfirmBackSettleOp.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/operate/InFinaceconfirmBackSettleOp.java @@ -25,7 +25,7 @@ import java.util.ArrayList; import java.util.List; /** - * 支出财务确认单删除时退回支出合同结算单 + * 收入财务确认单删除时退回收入合同结算单 */ public class InFinaceconfirmBackSettleOp extends AbstractOperationServicePlugIn { @@ -53,21 +53,21 @@ public class InFinaceconfirmBackSettleOp extends AbstractOperationServicePlugIn long id = dataEntity.getLong("id"); long contractseetid = dataEntity.getLong("zcgj_ec_in_contractid"); - DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(contractseetid, "ec_in_contract_settle"); + DynamicObject inContractSettle = BusinessDataServiceHelper.loadSingle(contractseetid, "ec_in_contract_settle"); - String billstatus = outContractSettle.getString("billstatus"); + String billstatus = inContractSettle.getString("billstatus"); if(billstatus.equals("C")){ OperateOption option= OperateOption.create(); option.setVariableValue(OperateOptionConst.ISHASRIGHT, String.valueOf(true));//跳过权限校验 - OperationResult result = OperationServiceHelper.executeOperate("unaudit", "ec_in_contract_settle", new DynamicObject[]{outContractSettle}, option); + OperationResult result = OperationServiceHelper.executeOperate("unaudit", "ec_in_contract_settle", new DynamicObject[]{inContractSettle}, option); if(result.isSuccess()){ QFilter idFilter = new QFilter("id", "=", id); int zcgjEcInFinaceconfirm = DeleteServiceHelper.delete("zcgj_ec_in_finaceconfirm", new QFilter[]{idFilter}); - DynamicObject creator = outContractSettle.getDynamicObject("creator"); + DynamicObject creator = inContractSettle.getDynamicObject("creator"); long userId = creator.getLong("id"); - String billno = outContractSettle.getString("billno"); + String billno = inContractSettle.getString("billno"); List userids= new ArrayList(); userids.add(userId); sendMessage(userids,"ec_in_contract_settle",billno); diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/MaterialInAmountToItemEntryWorkFlowPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/MaterialInAmountToItemEntryWorkFlowPlugin.java index b6e5e4d..3502ff1 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/MaterialInAmountToItemEntryWorkFlowPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/workflow/MaterialInAmountToItemEntryWorkFlowPlugin.java @@ -24,6 +24,7 @@ import kd.ec.contract.common.enums.PayDirectionEnum; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.HashSet; +import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -46,21 +47,24 @@ public class MaterialInAmountToItemEntryWorkFlowPlugin implements IWorkflowPlugi log.info("MaterialInAmountToItemEntryWorkFlowPlugin:入库单推送支出合同结算单"); if(outContractSettleMap != null && !outContractSettleMap.isEmpty()) { log.info("MaterialInAmountToItemEntryWorkFlowPlugin:"+businessKey); - Long dataId = (Long) outContractSettleMap.toArray()[0]; - DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(dataId, "ec_out_contract_settle"); - log.info("MaterialInAmountToItemEntryWorkFlowPlugin-billno:"+outContractSettle.getString("billno")); - sumMaterialInAmountToItemEntry(outContractSettle); - calAllTypeAmount(outContractSettle); - SaveServiceHelper.save(new DynamicObject[]{outContractSettle}); - OperateOption option= OperateOption.create(); - // option.setVariableValue("ishasright", "true");//此处是跳过校验权限 - // option.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(false)); - // option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true)); - // option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true)); - option.setVariableValue(OperateOptionConst.ISHASRIGHT, String.valueOf(true));//跳过权限校验 - //option.add(OperateOptionConst.SKIP_PERMISSION_CHECK); - OperationResult result = OperationServiceHelper.executeOperate("submit", "ec_out_contract_settle", new DynamicObject[]{outContractSettle}, option); - log.info("MaterialInAmountToItemEntryWorkFlowPlugin-result:"+result.toString()); + for (Long dataId : outContractSettleMap) { + DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(dataId, "ec_out_contract_settle"); + log.info("MaterialInAmountToItemEntryWorkFlowPlugin-billno:"+outContractSettle.getString("billno")); + sumMaterialInAmountToItemEntry(outContractSettle); + calAllTypeAmount(outContractSettle); + SaveServiceHelper.save(new DynamicObject[]{outContractSettle}); + + deleteZeroData(dataId); + OperateOption option= OperateOption.create(); + // option.setVariableValue("ishasright", "true");//此处是跳过校验权限 + // option.setVariableValue(OperateOptionConst.STRICTVALIDATION, String.valueOf(false)); + // option.setVariableValue(OperateOptionConst.IGNOREINTERACTION, String.valueOf(true)); + // option.setVariableValue(OperateOptionConst.IGNOREWARN, String.valueOf(true)); + option.setVariableValue(OperateOptionConst.ISHASRIGHT, String.valueOf(true));//跳过权限校验 + //option.add(OperateOptionConst.SKIP_PERMISSION_CHECK); + OperationResult result = OperationServiceHelper.executeOperate("submit", "ec_out_contract_settle", new DynamicObject[]{outContractSettle}, option); + log.info("MaterialInAmountToItemEntryWorkFlowPlugin-result:"+result.toString()); + } } } @@ -284,4 +288,32 @@ public class MaterialInAmountToItemEntryWorkFlowPlugin implements IWorkflowPlugi outContractSettle.set("totalrealpaytaxamt", totalRealPayTaxAmt); } } + + public void deleteZeroData(Long outContractSettleId){ + DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", + "itementry,itementry.oftaxamount,zcgj_entryentity,zcgj_entryentity.zcgj_oftaxinvoiceamount,zcgj_processallocatentity,zcgj_processallocatentity.zcgj_pa_amount", + new QFilter[]{new QFilter("id","=",outContractSettleId)}); + DynamicObjectCollection itementryCollection = outContractSettle.getDynamicObjectCollection("itementry"); //合同支付项分录 + for (DynamicObject itementry : itementryCollection) { + //删除工序分摊,价税合计为0的数据 + DynamicObjectCollection dynamicObjectCollection = itementry.getDynamicObjectCollection("zcgj_processallocatentity"); + dynamicObjectCollection.removeIf(dynamicObject -> dynamicObject.getBigDecimal("zcgj_pa_amount") == null || dynamicObject.getBigDecimal("zcgj_pa_amount").compareTo(BigDecimal.ZERO) == 0); + } + //删除合同支付项价税合计为0的数据 + itementryCollection.removeIf(dynamicObject -> + //dynamicObject.getBigDecimal("oftaxamount") == null || dynamicObject.getBigDecimal("oftaxamount").compareTo(BigDecimal.ZERO) == 0 + { + boolean isok = dynamicObject.getBigDecimal("oftaxamount") == null || dynamicObject.getBigDecimal("oftaxamount").compareTo(BigDecimal.ZERO) == 0; + DynamicObjectCollection dynamicObjectCollection = dynamicObject.getDynamicObjectCollection("zcgj_processallocatentity"); + return isok && dynamicObjectCollection.isEmpty(); + } + ); + + //删除进项发票价税合计为0的数据 + DynamicObjectCollection entryentityCollection = outContractSettle.getDynamicObjectCollection("zcgj_entryentity"); + entryentityCollection.removeIf(dynamicObject -> dynamicObject.getBigDecimal("zcgj_oftaxinvoiceamount") == null || dynamicObject.getBigDecimal("zcgj_oftaxinvoiceamount").compareTo(BigDecimal.ZERO) == 0); + + log.info("MaterialInAmountToItemEntryWorkFlowPlugin-PaAmount"); + SaveServiceHelper.save(new DynamicObject[]{outContractSettle}); + } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/utils/InvoiceTypeEnum.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/utils/InvoiceTypeEnum.java new file mode 100644 index 0000000..3b470fa --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/utils/InvoiceTypeEnum.java @@ -0,0 +1,60 @@ +package zcgj.zcdev.zcdev.pr.utils; + +import kd.ec.basedata.common.enums.MultiLangEnumBridge; +import org.apache.commons.lang3.StringUtils; + +public enum InvoiceTypeEnum { + OE("1", new MultiLangEnumBridge("普通电子发票", "InvoiceTypeEnum_0", "ec-ecbd-common")), + SE("2", new MultiLangEnumBridge("电子发票专票", "InvoiceTypeEnum_1", "ec-ecbd-common")), + OP("3", new MultiLangEnumBridge("普通纸质发票", "InvoiceTypeEnum_2", "ec-ecbd-common")), + SP("4", new MultiLangEnumBridge("专用纸质发票", "InvoiceTypeEnum_3", "ec-ecbd-common")), + OPR("5", new MultiLangEnumBridge("普通纸质卷票", "InvoiceTypeEnum_4", "ec-ecbd-common")), + OM("7", new MultiLangEnumBridge("通用机打", "InvoiceTypeEnum_5", "ec-ecbd-common")), + TAXI("8", new MultiLangEnumBridge("的士票", "InvoiceTypeEnum_6", "ec-ecbd-common")), + TRAIN("9", new MultiLangEnumBridge("火车票", "InvoiceTypeEnum_7", "ec-ecbd-common")), + PLANE("10", new MultiLangEnumBridge("飞机票", "InvoiceTypeEnum_8", "ec-ecbd-common")), + OTHER("11", new MultiLangEnumBridge("其他", "InvoiceTypeEnum_9", "ec-ecbd-common")), + MOTOR("12", new MultiLangEnumBridge("机动车", "InvoiceTypeEnum_10", "ec-ecbd-common")), + UC("13", new MultiLangEnumBridge("二手车", "InvoiceTypeEnum_11", "ec-ecbd-common")), + QUOTA("14", new MultiLangEnumBridge("定额发票", "InvoiceTypeEnum_12", "ec-ecbd-common")), + PASS("15", new MultiLangEnumBridge("通行费", "InvoiceTypeEnum_13", "ec-ecbd-common")), + PT("16", new MultiLangEnumBridge("客运发票", "InvoiceTypeEnum_14", "ec-ecbd-common")), + PB("17", new MultiLangEnumBridge("过路过桥费", "InvoiceTypeEnum_15", "ec-ecbd-common")), + DPP("19", new MultiLangEnumBridge("完税证明", "InvoiceTypeEnum_16", "ec-ecbd-common")), + SHIP("20", new MultiLangEnumBridge("轮船票", "InvoiceTypeEnum_17", "ec-ecbd-common")), + CUSTOMS("21", new MultiLangEnumBridge("海关缴款书", "InvoiceTypeEnum_18", "ec-ecbd-common")), + OME("23", new MultiLangEnumBridge("通用机打电子发票", "InvoiceTypeEnum_19", "ec-ecbd-common")), + TBP("24", new MultiLangEnumBridge("火车票退票凭证", "InvoiceTypeEnum_20", "ec-ecbd-common")), + FE("25", new MultiLangEnumBridge("财政电子票据", "InvoiceTypeEnum_21", "ec-ecbd-common")), + DOE("26", new MultiLangEnumBridge("数电发票(普通发票)", "InvoiceTypeEnum_26", "ec-ecbd-common")),//参考 发票类型(发票云) + DSP("27", new MultiLangEnumBridge("数电发票(增值税专用发票)", "InvoiceTypeEnum_27", "ec-ecbd-common"));//参考 发票类型(发票云) + + + public String value; + public MultiLangEnumBridge name; + + private InvoiceTypeEnum(String value, MultiLangEnumBridge name) { + this.value = value; + this.name = name; + } + + public String getValue() { + return this.value; + } + + public String getName() { + return this.name.loadKDString(); + } + + public static InvoiceTypeEnum getEnumByValue(Object value) { + if (value != null) { + for(InvoiceTypeEnum enums : values()) { + if (StringUtils.equals(value.toString(), enums.getValue())) { + return enums; + } + } + } + + return null; + } +} \ No newline at end of file