Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
90a1ca92f1
|
@ -0,0 +1,47 @@
|
|||
package zcgj.zcdev.zcdev.pr.plugin.form;
|
||||
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.bill.BillShowParameter;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.form.ShowType;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.events.HyperLinkClickEvent;
|
||||
import kd.bos.form.events.HyperLinkClickListener;
|
||||
|
||||
import java.util.EventObject;
|
||||
|
||||
/**
|
||||
* 入库单发票号码超链接点击事件
|
||||
*/
|
||||
public class MaterialInBillPlugin extends AbstractBillPlugIn implements HyperLinkClickListener {
|
||||
|
||||
@Override
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
EntryGrid control = this.getControl("zcgj_entryentity");
|
||||
control.addHyperClickListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void hyperLinkClick(HyperLinkClickEvent hyperLinkClickEvent) {
|
||||
EntryGrid entryGrid = getView().getControl("zcgj_entryentity");//合同进项发票信息分录
|
||||
int[] selectRows = entryGrid.getSelectRows();//选择行
|
||||
if (selectRows != null && selectRows.length == 1) {
|
||||
DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_entryentity");//合同进项发票信息分录具体信息
|
||||
DynamicObject dynamicObject = dynamicObjectCollection.get(selectRows[0]);
|
||||
DynamicObject zcgjInvoice = dynamicObject.getDynamicObject("zcgj_invoice");//发票号码
|
||||
long invoiceId = zcgjInvoice.getLong("id");
|
||||
if (invoiceId != 0) {
|
||||
//弹出发票详情
|
||||
BillShowParameter showParameter = new BillShowParameter();
|
||||
showParameter.setPkId(invoiceId);
|
||||
showParameter.setFormId("ec_in_invoice");
|
||||
showParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage); //打开方式
|
||||
getView().showForm(showParameter);//打开界面
|
||||
}
|
||||
} else {
|
||||
this.getView().showTipNotification("请选择一条发票数据。");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -22,12 +22,13 @@ import java.util.Iterator;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
// 付款申请单提交审核操作插件
|
||||
public class PaymentApplyFundExtOp extends PaymentApplyFundOp {
|
||||
|
||||
@Override
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
super.onPreparePropertys(e);
|
||||
// e.getFieldKeys().add("zcgj_pricetype");
|
||||
// e.getFieldKeys().add("zcgj_pricetype");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -48,60 +49,61 @@ public class PaymentApplyFundExtOp extends PaymentApplyFundOp {
|
|||
int var4 = dataEntities.length;
|
||||
|
||||
label50:
|
||||
for(int var5 = 0; var5 < var4; ++var5) {
|
||||
for (int var5 = 0; var5 < var4; ++var5) {
|
||||
DynamicObject paymentApply = var3[var5];
|
||||
DynamicObjectCollection entryCol = paymentApply.getDynamicObjectCollection("entryentity");
|
||||
DynamicObjectCollection entryCol = paymentApply.getDynamicObjectCollection("entryentity");//付款信息分录
|
||||
Iterator var8 = entryCol.iterator();
|
||||
|
||||
while(true) {
|
||||
while(true) {
|
||||
while (true) {
|
||||
while (true) {
|
||||
if (!var8.hasNext()) {
|
||||
continue label50;
|
||||
}
|
||||
|
||||
DynamicObject entry = (DynamicObject)var8.next();
|
||||
DynamicObject contract = entry.getDynamicObject("contract");
|
||||
if(contract != null){
|
||||
BigDecimal thisApplyOfTaxAmt = entry.getBigDecimal("applyoftaxamount");
|
||||
BigDecimal deduction = entry.getBigDecimal("thisdeduction");
|
||||
BigDecimal contractDeduction = (BigDecimal)contractDeductionMap.getOrDefault(contract.getLong("id"), BigDecimal.ZERO);
|
||||
DynamicObject entry = (DynamicObject) var8.next();
|
||||
DynamicObject contract = entry.getDynamicObject("contract");//合同名称
|
||||
if (contract != null) {
|
||||
BigDecimal thisApplyOfTaxAmt = entry.getBigDecimal("applyoftaxamount");//本次应付金额⑭
|
||||
BigDecimal deduction = entry.getBigDecimal("thisdeduction");//本期预付款抵扣⑬
|
||||
BigDecimal contractDeduction = (BigDecimal) contractDeductionMap.getOrDefault(contract.getLong("id"), BigDecimal.ZERO);
|
||||
contractDeductionMap.put(contract.getLong("id"), contractDeduction.add(deduction));
|
||||
String type = entry.getString("paymenttype");
|
||||
String type = entry.getString("paymenttype");//支付类型
|
||||
QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id"));
|
||||
QFilter typeFilter = new QFilter("type", "=", type);
|
||||
DynamicObject node = entry.getDynamicObject("paynode");
|
||||
String nodeText = entry.getString("paynodetext");
|
||||
DynamicObject node = entry.getDynamicObject("paynode");//节点(隐藏)
|
||||
String nodeText = entry.getString("paynodetext");//节点
|
||||
if (node != null) {
|
||||
typeFilter.and("paynode", "=", node.getPkValue());
|
||||
} else if (StringUtils.isNotEmpty(nodeText)) {
|
||||
typeFilter.and("node", "=", nodeText);
|
||||
}
|
||||
|
||||
DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalshowamt,totaldeductionamt", new QFilter[]{contractFilter, typeFilter});
|
||||
DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt",
|
||||
"totalshowamt,totaldeductionamt", new QFilter[]{contractFilter, typeFilter});//合同的收付类型对应金额单
|
||||
if (contTypeAmts != null && contTypeAmts.length != 0) {
|
||||
DynamicObject[] var28 = contTypeAmts;
|
||||
int var26 = contTypeAmts.length;
|
||||
|
||||
for(int var27 = 0; var27 < var26; ++var27) {
|
||||
for (int var27 = 0; var27 < var26; ++var27) {
|
||||
DynamicObject contTypeAmt = var28[var27];
|
||||
BigDecimal totalShowAmt = contTypeAmt.getBigDecimal("totalshowamt");
|
||||
BigDecimal totalShowAmt = contTypeAmt.getBigDecimal("totalshowamt");//合同的收付类型对应金额单-累计应付金额
|
||||
contTypeAmt.set("totalshowamt", totalShowAmt.add(thisApplyOfTaxAmt));
|
||||
BigDecimal totalDeduction = contTypeAmt.getBigDecimal("totaldeductionamt");
|
||||
BigDecimal totalDeduction = contTypeAmt.getBigDecimal("totaldeductionamt");//合同的收付类型对应金额单-累计申请抵扣金额
|
||||
contTypeAmt.set("totaldeductionamt", totalDeduction.add(deduction));
|
||||
}
|
||||
|
||||
SaveServiceHelper.save(contTypeAmts);
|
||||
} else {
|
||||
BigDecimal payRate = entry.getBigDecimal("controlrate");
|
||||
MainEntityType entityType = EntityMetadataCache.getDataEntityType("ecpf_conttypeamt");
|
||||
BigDecimal payRate = entry.getBigDecimal("controlrate");//付款控制比例(%)③
|
||||
MainEntityType entityType = EntityMetadataCache.getDataEntityType("ecpf_conttypeamt");//合同的收付类型对应金额单
|
||||
DynamicObject newContTypeAmtObj = new DynamicObject(entityType);
|
||||
newContTypeAmtObj.set("contract", contract);
|
||||
newContTypeAmtObj.set("type", type);
|
||||
newContTypeAmtObj.set("ratio", payRate);
|
||||
newContTypeAmtObj.set("totalshowamt", thisApplyOfTaxAmt);
|
||||
newContTypeAmtObj.set("totaldeductionamt", deduction);
|
||||
newContTypeAmtObj.set("paynode", entry.get("paynode"));
|
||||
newContTypeAmtObj.set("node", entry.get("paynode") == null ? entry.get("paynodetext") : "");
|
||||
newContTypeAmtObj.set("contract", contract);//合同
|
||||
newContTypeAmtObj.set("type", type);//收付款类型
|
||||
newContTypeAmtObj.set("ratio", payRate);//收付款比例(%)
|
||||
newContTypeAmtObj.set("totalshowamt", thisApplyOfTaxAmt);//累计应付金额
|
||||
newContTypeAmtObj.set("totaldeductionamt", deduction);//累计申请抵扣金额
|
||||
newContTypeAmtObj.set("paynode", entry.get("paynode"));//节点(隐藏)
|
||||
newContTypeAmtObj.set("node", entry.get("paynode") == null ? entry.get("paynodetext") : "");//节点
|
||||
SaveServiceHelper.save(new DynamicObject[]{newContTypeAmtObj});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import java.math.BigDecimal;
|
|||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
//付款登记单审核与反审核操作插件
|
||||
public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp {
|
||||
|
||||
private static final Log log = LogFactory.getLog(PaymentRegisterFundOpExt.class);
|
||||
|
@ -34,185 +35,299 @@ public class PaymentRegisterFundOpExt extends PaymentRegisterFundOp {
|
|||
DynamicObject[] dataEntities = e.getDataEntities();
|
||||
switch (operationKey) {
|
||||
case "audit":
|
||||
log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新合同,付款类型实付金额");
|
||||
this.updateContTypeAmtTotalRealAmt(dataEntities);
|
||||
log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新合同,付款类型实付金额");
|
||||
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的审核操作,开始更新合同,付款类型实付金额");
|
||||
this.updateContTypeAmtTotalRealAmt(data);
|
||||
log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新合同,付款类型实付金额");
|
||||
|
||||
log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新请款单实付金额");
|
||||
this.updateInApplyRealPayAmt(dataEntities, true);
|
||||
log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新请款单实付金额");
|
||||
break;
|
||||
log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新请款单实付金额");
|
||||
this.updateInApplyRealPayAmt(data, true);
|
||||
log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新请款单实付金额");
|
||||
break;
|
||||
} else {
|
||||
//非合同付款申请
|
||||
log.info("执行PaymentRegisterFundOpExt的审核操作,开始更新无合同请款单实付金额");
|
||||
this.updateInApplyRealPayAmtExt(data, true);
|
||||
log.info("执行PaymentRegisterFundOpExt的审核操作,完成更新无合同请款单实付金额");
|
||||
}
|
||||
}
|
||||
case "unaudit":
|
||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新合同,付款类型实付金额");
|
||||
this.updateContTypeAmtTotalRealAmtWhenUnAudit(dataEntities);
|
||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新合同,付款类型实付金额");
|
||||
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的反审核操作,开始更新合同,付款类型实付金额");
|
||||
this.updateContTypeAmtTotalRealAmtWhenUnAudit(data);
|
||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新合同,付款类型实付金额");
|
||||
|
||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新请款单实付金额");
|
||||
this.updateInApplyRealPayAmt(dataEntities, false);
|
||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新请款单实付金额");
|
||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新请款单实付金额");
|
||||
this.updateInApplyRealPayAmt(data, false);
|
||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新请款单实付金额");
|
||||
break;
|
||||
} else {
|
||||
//非合同付款申请
|
||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,开始更新无合同请款单实付金额");
|
||||
this.updateInApplyRealPayAmtExt(data, false);
|
||||
log.info("执行PaymentRegisterFundOpExt的反审核操作,完成更新无合同请款单实付金额");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateInApplyRealPayAmt(DynamicObject[] dataEntities, boolean isAudit) {
|
||||
// super.updateInApplyRealPayAmt(dataEntities, isAudit);
|
||||
protected void updateInApplyRealPayAmt(DynamicObject data, boolean isAudit) {
|
||||
// super.updateInApplyRealPayAmt(dataEntities, isAudit);
|
||||
BigDecimal ratio = BigDecimal.ONE;
|
||||
if (!isAudit) {
|
||||
ratio = BigDecimal.ZERO.subtract(ratio);
|
||||
}
|
||||
|
||||
for(DynamicObject object : dataEntities) {
|
||||
Long referregisterid = object.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){
|
||||
for (DynamicObject dynamicObject : paybill.getDynamicObjectCollection("entry")) {
|
||||
int corebillentryseq = dynamicObject.getInt("e_corebillentryseq");//核心单据行号
|
||||
payBillSer.add(corebillentryseq);
|
||||
log.info("执行PaymentRegisterFundOpExt:付款处理单涉及核心单据行号:"+corebillentryseq);
|
||||
}
|
||||
// for (DynamicObject object : dataEntities) {
|
||||
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) {
|
||||
for (DynamicObject dynamicObject : paybill.getDynamicObjectCollection("entry")) {
|
||||
int corebillentryseq = dynamicObject.getInt("e_corebillentryseq");//核心单据行号
|
||||
payBillSer.add(corebillentryseq);
|
||||
log.info("执行PaymentRegisterFundOpExt:付款处理单涉及核心单据行号:" + corebillentryseq);
|
||||
}
|
||||
for(DynamicObject entry : object.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息
|
||||
DynamicObject paymentApplyF7 = entry.getDynamicObject("paymentapply");//付款登记单关联 付款申请单
|
||||
DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同
|
||||
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount"); //付款登记单 本次实付金额
|
||||
}
|
||||
for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) { //付款登记单 付款信息
|
||||
DynamicObject paymentApplyF7 = entry.getDynamicObject("paymentapply");//付款登记单关联 付款申请单
|
||||
DynamicObject contract = entry.getDynamicObject("contract");//付款登记单关联 合同
|
||||
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;
|
||||
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");
|
||||
DynamicObject applyContract = paymentEntry.getDynamicObject("contract");
|
||||
int seq = paymentEntry.getInt("seq"); //付款申请单分录行号
|
||||
if (contract != null && applyContract != null
|
||||
&& StringUtils.equals(contract.getString("id"), applyContract.getString("id"))
|
||||
&& 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);
|
||||
}
|
||||
for (DynamicObject paymentEntry : paymentEntryCol) {
|
||||
String applyPayType = paymentEntry.getString("paymenttype");
|
||||
DynamicObject applyContract = paymentEntry.getDynamicObject("contract");
|
||||
int seq = paymentEntry.getInt("seq"); //付款申请单分录行号
|
||||
if (contract != null && applyContract != null
|
||||
&& StringUtils.equals(contract.getString("id"), applyContract.getString("id"))
|
||||
&& 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});
|
||||
}
|
||||
|
||||
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 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);
|
||||
}
|
||||
}
|
||||
|
||||
DynamicObjectCollection entryEntityCollection = data.getDynamicObjectCollection("entryentity");//付款登记单 付款信息分录
|
||||
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});//保存付款申请单反写数据
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateContTypeAmtTotalRealAmt(DynamicObject[] dataEntities) {
|
||||
protected void updateContTypeAmtTotalRealAmt(DynamicObject data) {
|
||||
//super.updateContTypeAmtTotalRealAmt(dataEntities);
|
||||
for(DynamicObject object : dataEntities) {
|
||||
for(DynamicObject entry : object.getDynamicObjectCollection("entryentity")) {
|
||||
DynamicObject contract = entry.getDynamicObject("contract");
|
||||
if(contract!=null){
|
||||
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount");
|
||||
String type = entry.getString("paytype");
|
||||
QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id"));
|
||||
QFilter typeFilter = new QFilter("type", "=", type);
|
||||
DynamicObject node = entry.getDynamicObject("paynode");
|
||||
String nodeText = entry.getString("paynodetext");
|
||||
if (node != null) {
|
||||
typeFilter.and("paynode", "=", node.getPkValue());
|
||||
} else if (StringUtils.isNotEmpty(nodeText)) {
|
||||
typeFilter.and("node", "=", nodeText);
|
||||
// for (DynamicObject object : dataEntities) {
|
||||
for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) {
|
||||
DynamicObject contract = entry.getDynamicObject("contract");
|
||||
if (contract != null) {
|
||||
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount");
|
||||
String type = entry.getString("paytype");
|
||||
QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id"));
|
||||
QFilter typeFilter = new QFilter("type", "=", type);
|
||||
DynamicObject node = entry.getDynamicObject("paynode");
|
||||
String nodeText = entry.getString("paynodetext");
|
||||
if (node != null) {
|
||||
typeFilter.and("paynode", "=", node.getPkValue());
|
||||
} else if (StringUtils.isNotEmpty(nodeText)) {
|
||||
typeFilter.and("node", "=", nodeText);
|
||||
}
|
||||
|
||||
DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalrealamt", new QFilter[]{contractFilter, typeFilter});
|
||||
if (contTypeAmts != null && contTypeAmts.length != 0) {
|
||||
for (DynamicObject contTypeAmt : contTypeAmts) {
|
||||
BigDecimal totalRealAmt = contTypeAmt.getBigDecimal("totalrealamt");
|
||||
contTypeAmt.set("totalrealamt", totalRealAmt.add(thisOfTaxAmt));
|
||||
}
|
||||
|
||||
DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalrealamt", new QFilter[]{contractFilter, typeFilter});
|
||||
if (contTypeAmts != null && contTypeAmts.length != 0) {
|
||||
for(DynamicObject contTypeAmt : contTypeAmts) {
|
||||
BigDecimal totalRealAmt = contTypeAmt.getBigDecimal("totalrealamt");
|
||||
contTypeAmt.set("totalrealamt", totalRealAmt.add(thisOfTaxAmt));
|
||||
}
|
||||
|
||||
SaveServiceHelper.save(contTypeAmts);
|
||||
} else {
|
||||
BigDecimal payRate = entry.getBigDecimal("controlrate");
|
||||
MainEntityType entityType = EntityMetadataCache.getDataEntityType("ecpf_conttypeamt");
|
||||
DynamicObject newContTypeAmtObj = new DynamicObject(entityType);
|
||||
newContTypeAmtObj.set("contract", contract);
|
||||
newContTypeAmtObj.set("type", type);
|
||||
newContTypeAmtObj.set("ratio", payRate);
|
||||
newContTypeAmtObj.set("totalrealamt", thisOfTaxAmt);
|
||||
newContTypeAmtObj.set("paynode", entry.get("paynode"));
|
||||
newContTypeAmtObj.set("node", entry.get("paynode") == null ? entry.get("paynodetext") : "");
|
||||
SaveServiceHelper.save(new DynamicObject[]{newContTypeAmtObj});
|
||||
}
|
||||
SaveServiceHelper.save(contTypeAmts);
|
||||
} else {
|
||||
BigDecimal payRate = entry.getBigDecimal("controlrate");
|
||||
MainEntityType entityType = EntityMetadataCache.getDataEntityType("ecpf_conttypeamt");
|
||||
DynamicObject newContTypeAmtObj = new DynamicObject(entityType);
|
||||
newContTypeAmtObj.set("contract", contract);
|
||||
newContTypeAmtObj.set("type", type);
|
||||
newContTypeAmtObj.set("ratio", payRate);
|
||||
newContTypeAmtObj.set("totalrealamt", thisOfTaxAmt);
|
||||
newContTypeAmtObj.set("paynode", entry.get("paynode"));
|
||||
newContTypeAmtObj.set("node", entry.get("paynode") == null ? entry.get("paynodetext") : "");
|
||||
SaveServiceHelper.save(new DynamicObject[]{newContTypeAmtObj});
|
||||
}
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateContTypeAmtTotalRealAmtWhenUnAudit(DynamicObject[] dataEntities) {
|
||||
protected void updateContTypeAmtTotalRealAmtWhenUnAudit(DynamicObject data) {
|
||||
//super.updateContTypeAmtTotalRealAmtWhenUnAudit(dataEntities);
|
||||
for(DynamicObject object : dataEntities) {
|
||||
for(DynamicObject entry : object.getDynamicObjectCollection("entryentity")) {
|
||||
DynamicObject contract = entry.getDynamicObject("contract");
|
||||
if(contract!=null){
|
||||
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount");
|
||||
String type = entry.getString("paytype");
|
||||
QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id"));
|
||||
QFilter typeFilter = new QFilter("type", "=", type);
|
||||
DynamicObject node = entry.getDynamicObject("paynode");
|
||||
String nodeText = entry.getString("paynodetext");
|
||||
if (node != null) {
|
||||
typeFilter.and("paynode", "=", node.getPkValue());
|
||||
} else if (StringUtils.isNotEmpty(nodeText)) {
|
||||
typeFilter.and("node", "=", nodeText);
|
||||
}
|
||||
// for (DynamicObject object : dataEntities) {
|
||||
for (DynamicObject entry : data.getDynamicObjectCollection("entryentity")) {
|
||||
DynamicObject contract = entry.getDynamicObject("contract");
|
||||
if (contract != null) {
|
||||
BigDecimal thisOfTaxAmt = entry.getBigDecimal("thispaymentoftaxamount");
|
||||
String type = entry.getString("paytype");
|
||||
QFilter contractFilter = new QFilter("contract", "=", contract.getLong("id"));
|
||||
QFilter typeFilter = new QFilter("type", "=", type);
|
||||
DynamicObject node = entry.getDynamicObject("paynode");
|
||||
String nodeText = entry.getString("paynodetext");
|
||||
if (node != null) {
|
||||
typeFilter.and("paynode", "=", node.getPkValue());
|
||||
} else if (StringUtils.isNotEmpty(nodeText)) {
|
||||
typeFilter.and("node", "=", nodeText);
|
||||
}
|
||||
|
||||
DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalrealamt,totalshowamt,ratio,source", new QFilter[]{contractFilter, typeFilter});
|
||||
if (contTypeAmts != null && contTypeAmts.length != 0) {
|
||||
for(DynamicObject contTypeAmt : contTypeAmts) {
|
||||
BigDecimal totalRealAmt = contTypeAmt.getBigDecimal("totalrealamt");
|
||||
String source = contTypeAmt.getString("source");
|
||||
contTypeAmt.set("totalrealamt", totalRealAmt.subtract(thisOfTaxAmt));
|
||||
if (StringUtils.isBlank(source) && BigDecimal.ZERO.compareTo(contTypeAmt.getBigDecimal("totalshowamt")) == 0 && BigDecimal.ZERO.compareTo(contTypeAmt.getBigDecimal("totalrealamt")) == 0) {
|
||||
DeleteServiceHelper.delete("ecpf_conttypeamt", new QFilter[]{new QFilter("id", "=", contTypeAmt.getLong("id"))});
|
||||
}
|
||||
DynamicObject[] contTypeAmts = BusinessDataServiceHelper.load("ecpf_conttypeamt", "totalrealamt,totalshowamt,ratio,source", new QFilter[]{contractFilter, typeFilter});
|
||||
if (contTypeAmts != null && contTypeAmts.length != 0) {
|
||||
for (DynamicObject contTypeAmt : contTypeAmts) {
|
||||
BigDecimal totalRealAmt = contTypeAmt.getBigDecimal("totalrealamt");
|
||||
String source = contTypeAmt.getString("source");
|
||||
contTypeAmt.set("totalrealamt", totalRealAmt.subtract(thisOfTaxAmt));
|
||||
if (StringUtils.isBlank(source) && BigDecimal.ZERO.compareTo(contTypeAmt.getBigDecimal("totalshowamt")) == 0 && BigDecimal.ZERO.compareTo(contTypeAmt.getBigDecimal("totalrealamt")) == 0) {
|
||||
DeleteServiceHelper.delete("ecpf_conttypeamt", new QFilter[]{new QFilter("id", "=", contTypeAmt.getLong("id"))});
|
||||
}
|
||||
|
||||
SaveServiceHelper.save(contTypeAmts);
|
||||
}
|
||||
|
||||
SaveServiceHelper.save(contTypeAmts);
|
||||
}
|
||||
}
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue