Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
xiaoshi 2025-06-20 14:35:26 +08:00
commit 4865e3cf61
8 changed files with 158 additions and 12 deletions

View File

@ -0,0 +1,101 @@
package zcgj.zcdev.zcdev.pr.plugin.form;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.resource.ResManager;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.ec.basedata.common.enums.DirectionEnum;
import kd.ec.contract.common.enums.BillStatusEnum;
import kd.ec.contract.common.enums.PayDirectionEnum;
import kd.ec.contract.formplugin.DynamicContractViewUI;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
public class DynamicContractViewUIExt extends DynamicContractViewUI {
/**
* 重写合同看板拉去合同结算数据逻辑
* @param contractId
* @param payDirection
*/
@Override
protected void updateSettle(Long contractId, String payDirection) {
this.getModel().deleteEntryData("settleEntry");
String settleBillId;
String finalSettleBillId;
if (PayDirectionEnum.IN.getValue().equals(payDirection)) {
settleBillId = "ec_in_contract_settle";
finalSettleBillId = "ec_in_finalsettle";
} else {
settleBillId = "ec_out_contract_settle";
finalSettleBillId = "ec_out_finalsettle";
}
QFilter finalSettleFilter = new QFilter("billstatus", "=", BillStatusEnum.AUDIT.getValue());
finalSettleFilter.and("contract", "=", contractId);
DynamicObject[] finalSettles = BusinessDataServiceHelper.load(finalSettleBillId, "id", new QFilter[]{finalSettleFilter});
if (finalSettles != null && finalSettles.length > 0) {
int index = this.getModel().createNewEntryRow("settleEntry");
DynamicObject finalSettleBill = BusinessDataServiceHelper.loadSingle(finalSettles[0].getPkValue(), finalSettleBillId);
DynamicObjectCollection settleDetailEntries = finalSettleBill.getDynamicObjectCollection("settledetailentry");
BigDecimal thisSettleAmount = BigDecimal.ZERO;
BigDecimal thisSettleOfTax = BigDecimal.ZERO;
for(DynamicObject settleDetailEntry : settleDetailEntries) {
DynamicObject payItem = settleDetailEntry.getDynamicObject("payitem");
BigDecimal coe = BigDecimal.ONE;
if (payItem != null) {
String direction = payItem.getString("direction");
if (StringUtils.equals(direction, DirectionEnum.NON.getValue())) {
coe = BigDecimal.ZERO;
} else if (StringUtils.equals(direction, DirectionEnum.SUB.getValue())) {
coe = coe.negate();
}
}
BigDecimal finalSettleAmount = settleDetailEntry.getBigDecimal("payitemfinalsettleamt");
BigDecimal finalSettleOfTax = settleDetailEntry.getBigDecimal("payitemsettleoftax");
BigDecimal settleAmount = settleDetailEntry.getBigDecimal("payitemsettleamt");
BigDecimal settleOfTax = settleDetailEntry.getBigDecimal("itemsettleoftax");
thisSettleAmount = thisSettleAmount.add(finalSettleAmount.subtract(settleAmount).multiply(coe));
thisSettleOfTax = thisSettleOfTax.add(finalSettleOfTax.subtract(settleOfTax).multiply(coe));
}
this.getModel().setValue("settleperiod", ResManager.loadKDString("合同决算", "DynamicContractViewUI_21", "ec-contract-formplugin", new Object[0]), index);
this.getModel().setValue("settlenum", finalSettleBill.get("billno"), index);
this.getModel().setValue("settlename", finalSettleBill.get("name"), index);
this.getModel().setValue("settleamount", thisSettleAmount, index);
this.getModel().setValue("settletax", thisSettleOfTax.subtract(thisSettleAmount), index);
this.getModel().setValue("oftaxsettleamount", thisSettleOfTax, index);
this.getModel().setValue("settlecreator", finalSettleBill.get("creator"), index);
this.getModel().setValue("settlecreatdate", finalSettleBill.get("createtime"), index);
this.getModel().setValue("isfinalsettle", true, index);
}
QFilter filter = new QFilter("contract.id", "=", contractId);
List<String> billstatusList = new ArrayList<>();
billstatusList.add("C");
billstatusList.add("D");
filter.and(new QFilter("billstatus", QCP.in,billstatusList));
DynamicObject[] settleContractCols = BusinessDataServiceHelper.load(settleBillId, "period.number,billno,billname,settleamount,taxamount,settleoftaxamount,creator,createtime", new QFilter[]{filter});
for(int i = 0; i < settleContractCols.length; ++i) {
int index = this.getModel().createNewEntryRow("settleEntry");
DynamicObject settleInfo = settleContractCols[i];
this.getModel().setValue("settleperiod", settleInfo.get("period.number"), index);
this.getModel().setValue("settlenum", settleInfo.get("billno"), index);
this.getModel().setValue("settlename", settleInfo.get("billname"), index);
this.getModel().setValue("settleamount", settleInfo.get("settleamount"), index);
this.getModel().setValue("settletax", settleInfo.get("taxamount"), index);
this.getModel().setValue("oftaxsettleamount", settleInfo.get("settleoftaxamount"), index);
this.getModel().setValue("settlecreator", settleInfo.get("creator"), index);
this.getModel().setValue("settlecreatdate", settleInfo.get("createtime"), index);
}
}
}

View File

@ -60,6 +60,7 @@ public class InContractFinaceConfirmePlugin extends AbstractBillPlugIn implement
getModel().setValue("zcgj_contract",ecincontractsettle.getDynamicObject("contract")); getModel().setValue("zcgj_contract",ecincontractsettle.getDynamicObject("contract"));
getModel().setValue("zcgj_contattr",ecincontractsettle.getDynamicObject("contattr")); getModel().setValue("zcgj_contattr",ecincontractsettle.getDynamicObject("contattr"));
getModel().setValue("zcgj_project",ecincontractsettle.getDynamicObject("project")); getModel().setValue("zcgj_project",ecincontractsettle.getDynamicObject("project"));
getModel().setValue("zcgj_org",ecincontractsettle.getDynamicObject("project").getDynamicObject("projectorg"));
getModel().setValue("zcgj_period",ecincontractsettle.getDynamicObject("period")); getModel().setValue("zcgj_period",ecincontractsettle.getDynamicObject("period"));
getModel().setValue("zcgj_begindate",ecincontractsettle.getDate("begindate")); getModel().setValue("zcgj_begindate",ecincontractsettle.getDate("begindate"));
getModel().setValue("zcgj_enddate",ecincontractsettle.getDate("enddate")); getModel().setValue("zcgj_enddate",ecincontractsettle.getDate("enddate"));

View File

@ -50,19 +50,26 @@ public class InContractSettleInvalidListPlugin extends AbstractListPlugin implem
if(data.getBoolean("zcgj_is_invalid")){ if(data.getBoolean("zcgj_is_invalid")){
this.getView().showTipNotification(String.format("当前结算单为作废单据,无法再次作废。")); this.getView().showTipNotification(String.format("当前结算单为作废单据,无法再次作废。"));
return; return;
}else if(data.getBoolean("zcgj_is_reversabillid")){
this.getView().showTipNotification(String.format("当前结算单为冲销单据,无法作废。"));
return;
}else{ }else{
this.getView().showTipNotification(String.format("当前结算单已作废,无法再次作废。")); this.getView().showTipNotification(String.format("当前结算单已作废,无法再次作废。"));
return; return;
} }
}else{ }else{
QFilter reversaBillFilter = new QFilter("zcgj_reversabillid", QCP.equals,String.valueOf(contractSettleId));
DynamicObject reversaData = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", "id,number,zcgj_is_reversabillid", new QFilter[]{reversaBillFilter});
if(reversaData != null){
this.getView().showTipNotification(String.format("当前结算单已被冲销,无法作废。"));
return;
}
QFilter idFilter = new QFilter("id", QCP.equals,contractSettleId); QFilter idFilter = new QFilter("id", QCP.equals,contractSettleId);
DynamicObject selectData = BusinessDataServiceHelper.loadSingle("ec_in_contract_settle", "id,number,zcgj_is_invalid", new QFilter[]{idFilter}); DynamicObject selectData = BusinessDataServiceHelper.loadSingle("ec_in_contract_settle", "id,number,zcgj_is_invalid,zcgj_is_reversabillid", new QFilter[]{idFilter});
if(selectData.getBoolean("zcgj_is_invalid")){ if(selectData.getBoolean("zcgj_is_invalid")){
this.getView().showTipNotification(String.format("当前为作废单据,无法再次作废。")); this.getView().showTipNotification(String.format("当前为作废单据,无法再次作废。"));
return; return;
}else if(selectData.getBoolean("zcgj_is_reversabillid")){
this.getView().showTipNotification(String.format("当前结算单为冲销单据,无法作废。"));
return;
} }
showParameter.setCustomParam("invalidbillid", contractSettleId); showParameter.setCustomParam("invalidbillid", contractSettleId);
//showParameter.setPkId(contractSettleId); //showParameter.setPkId(contractSettleId);

View File

@ -67,6 +67,8 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme
getModel().setValue("zcgj_contract",contract); getModel().setValue("zcgj_contract",contract);
getModel().setValue("zcgj_contattr",ecoutcontractsettle.getDynamicObject("contattr")); getModel().setValue("zcgj_contattr",ecoutcontractsettle.getDynamicObject("contattr"));
getModel().setValue("zcgj_project",ecoutcontractsettle.getDynamicObject("project")); getModel().setValue("zcgj_project",ecoutcontractsettle.getDynamicObject("project"));
getModel().setValue("zcgj_org",ecoutcontractsettle.getDynamicObject("project").getDynamicObject("projectorg"));
getModel().setValue("zcgj_period",ecoutcontractsettle.getDynamicObject("period")); getModel().setValue("zcgj_period",ecoutcontractsettle.getDynamicObject("period"));
getModel().setValue("zcgj_begindate",ecoutcontractsettle.getDate("begindate")); getModel().setValue("zcgj_begindate",ecoutcontractsettle.getDate("begindate"));
getModel().setValue("zcgj_enddate",ecoutcontractsettle.getDate("enddate")); getModel().setValue("zcgj_enddate",ecoutcontractsettle.getDate("enddate"));
@ -207,7 +209,10 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme
BigDecimal bccxamtAll = BigDecimal.ZERO; BigDecimal bccxamtAll = BigDecimal.ZERO;
for (DynamicObject outcontractmeasure : outcontractmeasures) { for (DynamicObject outcontractmeasure : outcontractmeasures) {
for (DynamicObject dynamicObject : outcontractmeasure.getDynamicObjectCollection("zcgj_itementry")) { for (DynamicObject dynamicObject : outcontractmeasure.getDynamicObjectCollection("zcgj_itementry")) {
bccxamtAll =bccxamtAll.add(dynamicObject.getBigDecimal("zcgj_bccxamt")); BigDecimal bccxamt = dynamicObject.getBigDecimal("zcgj_bccxamt");
if(bccxamt != null){
bccxamtAll = bccxamtAll.add(bccxamt);
}
} }
} }
return bccxamtAll; return bccxamtAll;

View File

@ -46,23 +46,30 @@ public class OutContractSettleInvalidListPlugin extends AbstractListPlugin imple
String billNo = selectedRow.getBillNo(); String billNo = selectedRow.getBillNo();
QFilter accountTableFilter = new QFilter("zcgj_invalidbillid", QCP.equals,String.valueOf(contractSettleId)); QFilter accountTableFilter = new QFilter("zcgj_invalidbillid", QCP.equals,String.valueOf(contractSettleId));
DynamicObject data = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", "id,number,zcgj_is_invalid", new QFilter[]{accountTableFilter}); DynamicObject data = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", "id,number,zcgj_is_invalid", new QFilter[]{accountTableFilter});
if(data != null){ //财务确认 if(data != null){ //支出合同结算
if(data.getBoolean("zcgj_is_invalid")){ if(data.getBoolean("zcgj_is_invalid")){
this.getView().showTipNotification(String.format("当前结算单为作废单据,无法再次作废。")); this.getView().showTipNotification(String.format("当前结算单为作废单据,无法再次作废。"));
return; return;
}else if(data.getBoolean("zcgj_is_reversabillid")){
this.getView().showTipNotification(String.format("当前结算单为冲销单据,无法作废。"));
return;
}else{ }else{
this.getView().showTipNotification(String.format("当前结算单已作废,无法再次作废。")); this.getView().showTipNotification(String.format("当前结算单已作废,无法再次作废。"));
return; return;
} }
}else{ }else{
QFilter reversaBillFilter = new QFilter("zcgj_reversabillid", QCP.equals,String.valueOf(contractSettleId));
DynamicObject reversaData = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", "id,number,zcgj_is_reversabillid", new QFilter[]{reversaBillFilter});
if(reversaData != null){
this.getView().showTipNotification(String.format("当前结算单已被冲销,无法作废。"));
return;
}
QFilter idFilter = new QFilter("id", QCP.equals,contractSettleId); QFilter idFilter = new QFilter("id", QCP.equals,contractSettleId);
DynamicObject selectData = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", "id,number,zcgj_is_invalid", new QFilter[]{idFilter}); DynamicObject selectData = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", "id,number,zcgj_is_invalid,zcgj_is_reversabillid", new QFilter[]{idFilter});
if(selectData.getBoolean("zcgj_is_invalid")){ if(selectData.getBoolean("zcgj_is_invalid")){
this.getView().showTipNotification(String.format("当前为作废单据,无法再次作废。")); this.getView().showTipNotification(String.format("当前为作废单据,无法再次作废。"));
return; return;
}else if(selectData.getBoolean("zcgj_is_reversabillid")){
this.getView().showTipNotification(String.format("当前结算单为冲销单据,无法作废。"));
return;
} }
showParameter.setCustomParam("invalidbillid", contractSettleId); showParameter.setCustomParam("invalidbillid", contractSettleId);
//showParameter.setPkId(contractSettleId); //showParameter.setPkId(contractSettleId);

View File

@ -50,12 +50,23 @@ public class OutContractSettleReversalListPlugin extends AbstractListPlugin impl
this.getView().showTipNotification(String.format("当前结算单已冲销,无法再次冲销。")); this.getView().showTipNotification(String.format("当前结算单已冲销,无法再次冲销。"));
return; return;
}else{ }else{
QFilter invalidTableFilter = new QFilter("zcgj_invalidbillid", QCP.equals,String.valueOf(contractSettleId));
DynamicObject invalidData = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", "id,number,zcgj_is_invalid", new QFilter[]{invalidTableFilter});
if(invalidData!=null){
this.getView().showTipNotification(String.format("当前结算单已被作废,无法冲销。"));
return;
}
QFilter idFilter = new QFilter("id", QCP.equals,contractSettleId); QFilter idFilter = new QFilter("id", QCP.equals,contractSettleId);
DynamicObject selectData = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", "id,number,zcgj_is_reversabillid", new QFilter[]{idFilter}); DynamicObject selectData = BusinessDataServiceHelper.loadSingle("ec_out_contract_settle", "id,number,zcgj_is_invalid,zcgj_is_reversabillid", new QFilter[]{idFilter});
if(selectData.getBoolean("zcgj_is_reversabillid")){ if(selectData.getBoolean("zcgj_is_reversabillid")){
this.getView().showTipNotification(String.format("当前为冲销单据,无法再次冲销。")); this.getView().showTipNotification(String.format("当前为冲销单据,无法再次冲销。"));
return; return;
}else if(selectData.getBoolean("zcgj_is_invalid")){
this.getView().showTipNotification(String.format("当前为作废单据,无法再冲销。"));
return;
} }
showParameter.setCustomParam("reversabillid", contractSettleId); showParameter.setCustomParam("reversabillid", contractSettleId);
//showParameter.setPkId(contractSettleId); //showParameter.setPkId(contractSettleId);
showParameter.setFormId("ec_out_contract_settle"); showParameter.setFormId("ec_out_contract_settle");

View File

@ -109,6 +109,20 @@ public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp {
} else { } else {
paymentEntry.set("completepay", false); paymentEntry.set("completepay", false);
} }
break;
}else if (StringUtils.equals(payType, applyPayType) && payBillSer.contains(seq)){
BigDecimal oldRealPayAmt = paymentEntry.getBigDecimal("thisrealpayamt");
BigDecimal applyOfTaxAmount = paymentEntry.getBigDecimal("applyoftaxamount");
BigDecimal thisRealPayAmt = oldRealPayAmt.add(thisOfTaxAmt);
BigDecimal thisWaitPayAmt = applyOfTaxAmount.subtract(thisRealPayAmt);
paymentEntry.set("thisrealpayamt", thisRealPayAmt);
paymentEntry.set("thiswaitpayamt", thisWaitPayAmt);
if (thisRealPayAmt.compareTo(applyOfTaxAmount) >= 0) {
paymentEntry.set("completepay", true);
} else {
paymentEntry.set("completepay", false);
}
break;
} }
} }

View File

@ -36,7 +36,7 @@ public class OutContractSettleReversalWorkFlowPlugin implements IWorkflowPlugin
inContractSettle.set("contract",contractInfo); inContractSettle.set("contract",contractInfo);
inContractSettle.set("org", outContractSettle.getDynamicObject("org")); inContractSettle.set("org", outContractSettle.getDynamicObject("org"));
inContractSettle.set("billstatus","C"); inContractSettle.set("billstatus","C");
inContractSettle.set("zcgj_org",outContractSettle.getDynamicObject("org")); inContractSettle.set("org",outContractSettle.getDynamicObject("org"));
inContractSettle.set("begindate",outContractSettle.getDate("begindate")); inContractSettle.set("begindate",outContractSettle.getDate("begindate"));
inContractSettle.set("enddate",outContractSettle.getDate("enddate")); inContractSettle.set("enddate",outContractSettle.getDate("enddate"));
inContractSettle.set("period",outContractSettle.getDynamicObject("period")); inContractSettle.set("period",outContractSettle.getDynamicObject("period"));