付款登记单审核与反审核操作添加无合同付款申请类型
This commit is contained in:
parent
4824ca3b57
commit
4acfc8616c
|
@ -19,6 +19,7 @@ import java.math.BigDecimal;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
//付款登记单审核与反审核操作插件
|
||||||
public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp {
|
public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp {
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(PaymentRegisterFundOpExt.class);
|
private static final Log log = LogFactory.getLog(PaymentRegisterFundOpExt.class);
|
||||||
|
@ -34,35 +35,73 @@ public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp {
|
||||||
DynamicObject[] dataEntities = e.getDataEntities();
|
DynamicObject[] dataEntities = e.getDataEntities();
|
||||||
switch (operationKey) {
|
switch (operationKey) {
|
||||||
case "audit":
|
case "audit":
|
||||||
|
int a = 0;
|
||||||
|
for (DynamicObject data : dataEntities) {
|
||||||
|
for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息分录
|
||||||
|
DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同
|
||||||
|
if (contract != null) {
|
||||||
|
//合同付款申请
|
||||||
|
a++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (a > 0) {
|
||||||
|
//合同付申请
|
||||||
log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新合同,付款类型实付金额");
|
log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新合同,付款类型实付金额");
|
||||||
this.updateContTypeAmtTotalRealAmt(dataEntities);
|
this.updateContTypeAmtTotalRealAmt(data);
|
||||||
log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新合同,付款类型实付金额");
|
log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新合同,付款类型实付金额");
|
||||||
|
|
||||||
log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新请款单实付金额");
|
log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新请款单实付金额");
|
||||||
this.updateInApplyRealPayAmt(dataEntities, true);
|
this.updateInApplyRealPayAmt(data, true);
|
||||||
log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新请款单实付金额");
|
log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新请款单实付金额");
|
||||||
break;
|
break;
|
||||||
|
} else {
|
||||||
|
//非合同付款申请
|
||||||
|
log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新无合同请款单实付金额");
|
||||||
|
this.updateInApplyRealPayAmtExt(data, true);
|
||||||
|
log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新无合同请款单实付金额");
|
||||||
|
}
|
||||||
|
}
|
||||||
case "unaudit":
|
case "unaudit":
|
||||||
|
int b = 0;
|
||||||
|
for (DynamicObject data : dataEntities) {
|
||||||
|
for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息分录
|
||||||
|
DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同
|
||||||
|
if (contract != null) {
|
||||||
|
//合同付款申请
|
||||||
|
b++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (b > 0) {
|
||||||
|
//合同付款申请
|
||||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新合同,付款类型实付金额");
|
log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新合同,付款类型实付金额");
|
||||||
this.updateContTypeAmtTotalRealAmtWhenUnAudit(dataEntities);
|
this.updateContTypeAmtTotalRealAmtWhenUnAudit(data);
|
||||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新合同,付款类型实付金额");
|
log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新合同,付款类型实付金额");
|
||||||
|
|
||||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新请款单实付金额");
|
log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新请款单实付金额");
|
||||||
this.updateInApplyRealPayAmt(dataEntities, false);
|
this.updateInApplyRealPayAmt(data, false);
|
||||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新请款单实付金额");
|
log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新请款单实付金额");
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
//非合同付款申请
|
||||||
|
log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新无合同请款单实付金额");
|
||||||
|
this.updateInApplyRealPayAmtExt(data, false);
|
||||||
|
log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新无合同请款单实付金额");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
protected void updateInApplyRealPayAmt(DynamicObject data, boolean isAudit) {
|
||||||
protected void updateInApplyRealPayAmt(DynamicObject[] dataEntities, boolean isAudit) {
|
|
||||||
// super.updateInApplyRealPayAmt(dataEntities, isAudit);
|
// super.updateInApplyRealPayAmt(dataEntities, isAudit);
|
||||||
BigDecimal ratio = BigDecimal.ONE;
|
BigDecimal ratio = BigDecimal.ONE;
|
||||||
if (!isAudit) {
|
if (!isAudit) {
|
||||||
ratio = BigDecimal.ZERO.subtract(ratio);
|
ratio = BigDecimal.ZERO.subtract(ratio);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(DynamicObject object : dataEntities) {
|
// for (DynamicObject object : dataEntities) {
|
||||||
Long referregisterid = object.getLong("referregisterid");//关联登记单id(付款处理单Id)
|
Long referregisterid = data.getLong("referregisterid");//关联登记单id(付款处理单Id)
|
||||||
QFilter paybillFilter = new QFilter("id", "=", referregisterid);
|
QFilter paybillFilter = new QFilter("id", "=", referregisterid);
|
||||||
//付款处理单
|
//付款处理单
|
||||||
DynamicObject paybill = BusinessDataServiceHelper.loadSingle("cas_paybill", "entry,entry.e_corebillentryseq", new QFilter[]{paybillFilter});
|
DynamicObject paybill = BusinessDataServiceHelper.loadSingle("cas_paybill", "entry,entry.e_corebillentryseq", new QFilter[]{paybillFilter});
|
||||||
|
@ -74,7 +113,7 @@ public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp {
|
||||||
log.info("执行PaymentRegisterFundOpExt:付款处理单涉及核心单据行号:" + corebillentryseq);
|
log.info("执行PaymentRegisterFundOpExt:付款处理单涉及核心单据行号:" + corebillentryseq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(DynamicObject entry : object.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息
|
for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息
|
||||||
DynamicObject paymentApplyF7 = entry.getDynamicObject("paymentapply");//付款登记单关联 付款申请单
|
DynamicObject paymentApplyF7 = entry.getDynamicObject("paymentapply");//付款登记单关联 付款申请单
|
||||||
DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同
|
DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同
|
||||||
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); //付款登记单 本次实付金额
|
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); //付款登记单 本次实付金额
|
||||||
|
@ -132,14 +171,91 @@ public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp {
|
||||||
SaveServiceHelper.save(new DynamicObject[]{paymentApply});
|
SaveServiceHelper.save(new DynamicObject[]{paymentApply});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void updateInApplyRealPayAmtExt(DynamicObject data, boolean isAudit) {
|
||||||
|
|
||||||
|
BigDecimal ratio = BigDecimal.ONE;
|
||||||
|
if (!isAudit) {
|
||||||
|
//反审核操作时,减去付款金额
|
||||||
|
ratio = BigDecimal.ZERO.subtract(ratio);
|
||||||
|
}
|
||||||
|
|
||||||
|
Long referRegisterId = data.getLong("referregisterid");//关联登记单id(付款处理单Id)
|
||||||
|
QFilter payBillFilter = new QFilter("id", "=", referRegisterId);
|
||||||
|
DynamicObject payBill = BusinessDataServiceHelper.loadSingle("cas_paybill",
|
||||||
|
"entry,entry.e_corebillentryseq", new QFilter[]{payBillFilter});//付款处理单
|
||||||
|
Set<Integer> payBillSer = new HashSet<>();
|
||||||
|
if (payBill != null) {
|
||||||
|
DynamicObjectCollection entryCollection = payBill.getDynamicObjectCollection("entry");//付款处理单 付款明细分录
|
||||||
|
for (DynamicObject entry : entryCollection) {
|
||||||
|
int coreBillEntrySeq = entry.getInt("e_corebillentryseq");//付款处理单 核心单据行号
|
||||||
|
payBillSer.add(coreBillEntrySeq);
|
||||||
|
log.info("执行PaymentRegisterFundOpExt:付款处理单涉及核心单据行号:" + coreBillEntrySeq);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
DynamicObjectCollection entryEntityCollection = data.getDynamicObjectCollection("entryentity");//付款登记单 付款信息分录
|
||||||
protected void updateContTypeAmtTotalRealAmt(DynamicObject[] dataEntities) {
|
for (DynamicObject entry : entryEntityCollection) {
|
||||||
|
DynamicObject paymentApplyF7 = entry.getDynamicObject("paymentapply");//付款登记单 付款申请单号
|
||||||
|
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); //付款登记单 本次实付金额
|
||||||
|
thisOfTaxAmt = thisOfTaxAmt.multiply(ratio);
|
||||||
|
String payType = entry.getString("paytype"); //付款登记单 支付类型
|
||||||
|
|
||||||
|
if (paymentApplyF7 != null) {
|
||||||
|
QFilter paymentApplyFilter = new QFilter("id", "=", paymentApplyF7.getLong("id"));
|
||||||
|
DynamicObject paymentApply = BusinessDataServiceHelper.loadSingle("ec_paymentapply",
|
||||||
|
"realpayamt,billcompletepay,ismulticurrency,exchangerate,stdrealpayamt," +
|
||||||
|
"entryentity,entryentity.seq,contract,paymenttype,applyoftaxamount,thisrealpayamt,thiswaitpayamt,completepay",
|
||||||
|
new QFilter[]{paymentApplyFilter});//付款申请单
|
||||||
|
DynamicObjectCollection paymentEntryCol = paymentApply.getDynamicObjectCollection("entryentity");//付款申请单 付款信息分录
|
||||||
|
boolean billCompletePay = true;//付款申请单 表头付款完成
|
||||||
|
for (DynamicObject paymentEntry : paymentEntryCol) {
|
||||||
|
String applyPayType = paymentEntry.getString("paymenttype");//付款申请单 支付类型
|
||||||
|
int seq = paymentEntry.getInt("seq"); //付款申请单分录行号
|
||||||
|
if (StringUtils.equals(payType, applyPayType) && payBillSer.contains(seq)) {
|
||||||
|
log.info("执行PaymentRegisterFundOpExt:付款申请单分录行号和付款处理单核心单据分录行号匹配成功");
|
||||||
|
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);//付款申请单 分录付款完成
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BigDecimal totalRealpayAmt = BigDecimal.ZERO;
|
||||||
|
for (DynamicObject inComeEntry : paymentEntryCol) {
|
||||||
|
if (!inComeEntry.getBoolean("completepay")) {//付款申请单 分录付款完成
|
||||||
|
billCompletePay = false;//付款申请单 表头付款完成
|
||||||
|
}
|
||||||
|
totalRealpayAmt = totalRealpayAmt.add(inComeEntry.getBigDecimal("thisrealpayamt"));//付款申请单 本次实付金额
|
||||||
|
}
|
||||||
|
|
||||||
|
if (paymentApply.getBoolean("ismulticurrency")) {//付款申请单 是否多币种
|
||||||
|
BigDecimal exchangeRate = paymentApply.getBigDecimal("exchangerate");//付款申请单 汇率
|
||||||
|
BigDecimal stdRealPayAmt = totalRealpayAmt.multiply(exchangeRate);
|
||||||
|
paymentApply.set("stdrealpayamt", stdRealPayAmt);//付款申请单 实际付款金额(本位币)
|
||||||
|
}
|
||||||
|
|
||||||
|
paymentApply.set("realpayamt", totalRealpayAmt);//付款申请单 本次实付金额
|
||||||
|
paymentApply.set("billcompletepay", billCompletePay);//付款申请单 表头付款完成
|
||||||
|
|
||||||
|
SaveServiceHelper.save(new DynamicObject[]{paymentApply});//保存付款申请单反写数据
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void updateContTypeAmtTotalRealAmt(DynamicObject data) {
|
||||||
//super.updateContTypeAmtTotalRealAmt(dataEntities);
|
//super.updateContTypeAmtTotalRealAmt(dataEntities);
|
||||||
for(DynamicObject object : dataEntities) {
|
// for (DynamicObject object : dataEntities) {
|
||||||
for(DynamicObject entry : object.getDynamicObjectCollection("entryentity")) {
|
for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) {
|
||||||
DynamicObject contract = entry.getDynamicObject("contract");
|
DynamicObject contract = entry.getDynamicObject("contract");
|
||||||
if (contract != null) {
|
if (contract != null) {
|
||||||
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount");
|
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount");
|
||||||
|
@ -176,14 +292,13 @@ public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
protected void updateContTypeAmtTotalRealAmtWhenUnAudit(DynamicObject data) {
|
||||||
protected void updateContTypeAmtTotalRealAmtWhenUnAudit(DynamicObject[] dataEntities) {
|
|
||||||
//super.updateContTypeAmtTotalRealAmtWhenUnAudit(dataEntities);
|
//super.updateContTypeAmtTotalRealAmtWhenUnAudit(dataEntities);
|
||||||
for(DynamicObject object : dataEntities) {
|
// for (DynamicObject object : dataEntities) {
|
||||||
for(DynamicObject entry : object.getDynamicObjectCollection("entryentity")) {
|
for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) {
|
||||||
DynamicObject contract = entry.getDynamicObject("contract");
|
DynamicObject contract = entry.getDynamicObject("contract");
|
||||||
if (contract != null) {
|
if (contract != null) {
|
||||||
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount");
|
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount");
|
||||||
|
@ -212,7 +327,7 @@ public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp {
|
||||||
SaveServiceHelper.save(contTypeAmts);
|
SaveServiceHelper.save(contTypeAmts);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue