Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
4865e3cf61
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -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"));
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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"));
|
||||||
|
|
Loading…
Reference in New Issue