fix:订舱审核校验提示剩余额度不足校验问题

This commit is contained in:
zzs 2024-12-03 15:54:31 +08:00
parent bd36c4ec3b
commit b58d6c65f0
2 changed files with 87 additions and 70 deletions

View File

@ -429,5 +429,79 @@ public class StorageTransAuditOp extends AbstractOperationServicePlugIn {
}
}
@Override
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
super.afterExecuteOperationTransaction(e);
DynamicObject[] entities = e.getDataEntities();
for (DynamicObject dataEntitie : entities) {
dataEntitie = BusinessDataServiceHelper.loadSingle(dataEntitie.getPkValue(), dataEntitie.getDynamicObjectType().getName());
DynamicObject customer = dataEntitie.getDynamicObject("yem_customer");
DynamicObjectCollection creditDetails = dataEntitie.getDynamicObjectCollection("yem_creditdetail");
if (YEM.isNotEmpty(customer) && creditDetails.size() > 0) {
DynamicObject method = TotalUtil.getSettlementMethod(dataEntitie);
DynamicObject company = dataEntitie.getDynamicObject("yem_company.yem_erporg");
String swiftCode = TotalUtil.getSwiftCode(dataEntitie);
DynamicObject csrCreditLine = TotalUtil.getCsrCreditLine(customer, method, company, swiftCode);
for (DynamicObject creditDetail : creditDetails) {
DynamicObject salecontractno = creditDetail.getDynamicObject("yem_salecontractno");
if (salecontractno == null) continue;
salecontractno = BusinessDataServiceHelper.loadSingle(salecontractno.getPkValue(), salecontractno.getDynamicObjectType().getName());
boolean issinosurecon = salecontractno.getBoolean("yem_issinosurecon");
if (!issinosurecon) {
continue;
}
if (YEM.isNotEmpty(csrCreditLine)) {
DynamicObjectCollection infos = csrCreditLine.getDynamicObjectCollection("yem_im_info");
DynamicObject addNew = infos.addNew();
addNew.set("yem_storagetransno", dataEntitie);//储运托单号
addNew.set("yem_salecontractno", creditDetail.get("yem_salecontractno"));//外销合同号
addNew.set("yem_contractcurr", dataEntitie.get("yem_currency"));//结算币别
addNew.set("yem_rapstyle", creditDetail.get("yem_quotation_cd"));//结算方式
addNew.set("yem_reccondition", creditDetail.get("yem_reccondition_cd"));//收款条件
addNew.set("yem_creditamt", creditDetail.get("yem_creditamt_cd"));//信保金额合同
addNew.set("yem_creditamtuse", creditDetail.get("yem_usacreditamt_cd"));//信保金额使用
addNew.set("yem_creditdeadline", creditDetail.get("yem_term_cd"));//信用期限
addNew.set("yem_creditrate", creditDetail.get("yem_sinosurerate_cd"));//信保费率
addNew.set("yem_premium", creditDetail.get("yem_insuranceamt_cd"));//保险费
addNew.set("yem_creditamtbase", creditDetail.get("yem_creditamtbase"));//信保金额本位币
addNew.set("yem_premiumbase", creditDetail.get("yem_insuranceamtbas_cd"));//保险费金额本位币
addNew.set("yem_ladingdate", creditDetail.get("yem_ladingdate"));//提单日期
addNew.set("yem_creditdate1_cd", creditDetail.get("yem_creditdate1_cd"));//信保天数1
addNew.set("yem_paydate1", creditDetail.get("yem_paydate1"));//应收款日期1
// zzs add 2024/1/25
addNew.set("yem_countpayback", creditDetail.get("yem_countpayback"));//应回款倒计时
addNew.set("yem_paymentamt1_cd", creditDetail.get("yem_paymentamt1_cd"));//收款金额1
addNew.set("yem_paymentamt1_cdbase", creditDetail.get("yem_paymentamt1_cdbase"));//收款金额1
addNew.set("yem_creditdate2_cd", creditDetail.get("yem_creditdate2_cd"));//信保天数2
addNew.set("yem_paydate2", creditDetail.get("yem_paydate2"));//应收款日期2
addNew.set("yem_paymentamt2_cd", creditDetail.get("yem_paymentamt2_cd"));//收款金额2
addNew.set("yem_paymentamt2_cdbase", creditDetail.get("yem_paymentamt2_cdbase"));//收款金额2
addNew.set("yem_actualsinkamt", creditDetail.get("yem_actualsinkamt_cd"));//实际收汇金额
addNew.set("yem_actualsinkamtbase", creditDetail.get("yem_actualsinkamtba_cd"));//实际收汇金额本位币
// zzs add 2024/1/25
addNew.set("yem_amountowed", creditDetail.get("yem_amountowed"));//欠款金额
addNew.set("yem_creditremark", creditDetail.getString("yem_creditremark"));//信保备注
addNew.set("yem_storagetransid", dataEntitie.getPkValue());//储运托单Id
addNew.set("yem_storagetranentryid", creditDetail.getPkValue());//储运托单分录行Id
addNew.set("yem_storagetransamt", creditDetail.get("yem_storagetransamt"));//订舱合同金额
addNew.set("yem_year_e", creditDetail.get("yem_year_e"));//年份
addNew.set("yem_creditstatus_e", creditDetail.get("yem_creditstatus_e"));//投保状态
} else {
throw new KDBizException(String.format("找不到客户:%s的客户信保额度申请单", customer.getString("name")));
}
}
BigDecimal decimal = CreditBackFillUtils.calcRemainingAmount(csrCreditLine);
csrCreditLine.set("yem_balance", decimal);
// SaveServiceHelper.update(new DynamicObject[]{csrCreditLine});
OperationResult Operate = OperationServiceHelper.executeOperate("save", csrCreditLine.getDynamicObjectType().getName(), new DynamicObject[]{csrCreditLine}, OperateOption.create());
if (Operate.isSuccess()) {
}
}
dataEntitie.set("yem_whether", true);
}
}
}

View File

@ -32,83 +32,26 @@ public class StorageAuditValid extends AbstractValidator {
DynamicObject dataEntitie = dataes.getDataEntity();
dataEntitie = BusinessDataServiceHelper.loadSingle(dataEntitie.getPkValue(), dataEntitie.getDynamicObjectType().getName());
DynamicObject customer = dataEntitie.getDynamicObject("yem_customer");
DynamicObjectCollection creditDetails = dataEntitie.getDynamicObjectCollection("yem_creditdetail");
DynamicObject method = TotalUtil.getSettlementMethod(dataEntitie);
DynamicObject company = dataEntitie.getDynamicObject("yem_company.yem_erporg");
String swiftCode = TotalUtil.getSwiftCode(dataEntitie);
DynamicObject csrCreditLine = TotalUtil.getCsrCreditLine(customer, method, company, swiftCode);
if (creditDetails.size() > 0) {
for (DynamicObject creditDetail : creditDetails) {
DynamicObject salecontractno = creditDetail.getDynamicObject("yem_salecontractno");
if (salecontractno == null) continue;
salecontractno = BusinessDataServiceHelper.loadSingle(salecontractno.getPkValue(), salecontractno.getDynamicObjectType().getName());
boolean issinosurecon = salecontractno.getBoolean("yem_issinosurecon");
if (!issinosurecon) {
continue;
}
if (YEM.isNotEmpty(customer) && YEM.isNotEmpty(csrCreditLine)) {
log.info("客户信保限额申请:[{}]", csrCreditLine.getString("billno"));
BigDecimal decimal = CreditBackFillUtils.calcRemainingAmount(csrCreditLine);
BigDecimal usacreditamt = dataEntitie.getBigDecimal("yem_usacreditamt");
log.info("{} >= {}", decimal, usacreditamt);
if (decimal.compareTo(usacreditamt) >= 0) {
csrCreditLine.set("yem_balance", decimal);
log.info("{} >= {} 不执行提示!", decimal, usacreditamt);
} else {
this.addMessage(dataes, String.format("当前客户对应的信保额度申请剩余额度小于0请确认剩余额度[%s] : 投保金额[%s]", decimal, usacreditamt));
return;
}
} else {
this.addMessage(dataes, "找不到客户:"+customer.getString("name")+"的客户信保额度申请单");
}
if (YEM.isNotEmpty(csrCreditLine)) {
DynamicObjectCollection infos = csrCreditLine.getDynamicObjectCollection("yem_im_info");
DynamicObject addNew = infos.addNew();
addNew.set("yem_storagetransno", dataEntitie);//储运托单号
addNew.set("yem_salecontractno", creditDetail.get("yem_salecontractno"));//外销合同号
addNew.set("yem_contractcurr", dataEntitie.get("yem_currency"));//结算币别
addNew.set("yem_rapstyle", creditDetail.get("yem_quotation_cd"));//结算方式
addNew.set("yem_reccondition", creditDetail.get("yem_reccondition_cd"));//收款条件
addNew.set("yem_creditamt", creditDetail.get("yem_creditamt_cd"));//信保金额合同
addNew.set("yem_creditamtuse", creditDetail.get("yem_usacreditamt_cd"));//信保金额使用
addNew.set("yem_creditdeadline", creditDetail.get("yem_term_cd"));//信用期限
addNew.set("yem_creditrate", creditDetail.get("yem_sinosurerate_cd"));//信保费率
addNew.set("yem_premium", creditDetail.get("yem_insuranceamt_cd"));//保险费
addNew.set("yem_creditamtbase", creditDetail.get("yem_creditamtbase"));//信保金额本位币
addNew.set("yem_premiumbase", creditDetail.get("yem_insuranceamtbas_cd"));//保险费金额本位币
addNew.set("yem_ladingdate", creditDetail.get("yem_ladingdate"));//提单日期
addNew.set("yem_creditdate1_cd", creditDetail.get("yem_creditdate1_cd"));//信保天数1
addNew.set("yem_paydate1", creditDetail.get("yem_paydate1"));//应收款日期1
// zzs add 2024/1/25
addNew.set("yem_countpayback", creditDetail.get("yem_countpayback"));//应回款倒计时
addNew.set("yem_paymentamt1_cd", creditDetail.get("yem_paymentamt1_cd"));//收款金额1
addNew.set("yem_paymentamt1_cdbase", creditDetail.get("yem_paymentamt1_cdbase"));//收款金额1
addNew.set("yem_creditdate2_cd", creditDetail.get("yem_creditdate2_cd"));//信保天数2
addNew.set("yem_paydate2", creditDetail.get("yem_paydate2"));//应收款日期2
addNew.set("yem_paymentamt2_cd", creditDetail.get("yem_paymentamt2_cd"));//收款金额2
addNew.set("yem_paymentamt2_cdbase", creditDetail.get("yem_paymentamt2_cdbase"));//收款金额2
addNew.set("yem_actualsinkamt", creditDetail.get("yem_actualsinkamt_cd"));//实际收汇金额
addNew.set("yem_actualsinkamtbase", creditDetail.get("yem_actualsinkamtba_cd"));//实际收汇金额本位币
// zzs add 2024/1/25
addNew.set("yem_amountowed", creditDetail.get("yem_amountowed"));//欠款金额
addNew.set("yem_creditremark", creditDetail.getString("yem_creditremark"));//信保备注
addNew.set("yem_storagetransid", dataEntitie.getPkValue());//储运托单Id
addNew.set("yem_storagetranentryid", creditDetail.getPkValue());//储运托单分录行Id
addNew.set("yem_storagetransamt", creditDetail.get("yem_storagetransamt"));//订舱合同金额
addNew.set("yem_year_e", creditDetail.get("yem_year_e"));//年份
addNew.set("yem_creditstatus_e", creditDetail.get("yem_creditstatus_e"));//投保状态
}
}
OperationResult Operate = OperationServiceHelper.executeOperate("save", csrCreditLine.getDynamicObjectType().getName(), new DynamicObject[]{csrCreditLine}, OperateOption.create());
if (Operate.isSuccess()) {
if (YEM.isNotEmpty(customer) && YEM.isNotEmpty(csrCreditLine)) {
log.info("客户信保限额申请:[{}]", csrCreditLine.getString("billno"));
BigDecimal decimal = CreditBackFillUtils.calcRemainingAmount(csrCreditLine);
BigDecimal usacreditamt = dataEntitie.getBigDecimal("yem_usacreditamt");
log.info("{} >= {}", decimal, usacreditamt);
if (decimal.compareTo(usacreditamt) >= 0) {
csrCreditLine.set("yem_balance", decimal);
log.info("{} >= {} 不执行提示!", decimal, usacreditamt);
} else {
this.addMessage(dataes, String.format("当前客户对应的信保额度申请剩余额度小于0请确认剩余额度[%s] : 投保金额[%s]", decimal, usacreditamt));
return;
}
} else {
this.addMessage(dataes, "找不到客户:"+customer.getString("name")+"的客户信保额度申请单");
}
dataEntitie.set("yem_whether", true);
}
}
}