feat:信保流程相关
This commit is contained in:
parent
0a91f4ceb0
commit
ca9e3e6065
@ -9,6 +9,7 @@ import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.form.*;
|
||||
import kd.bos.form.events.MessageBoxClosedEvent;
|
||||
import kd.bos.orm.query.QCP;
|
||||
@ -18,6 +19,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
@ -293,7 +295,10 @@ public class TotalUtil {
|
||||
if (YEM.isNotEmpty(customer) && YEM.isNotEmpty(method) && YEM.isNotEmpty(company)) {
|
||||
String selectfields = DynamicObjectUtil.getSelectfields("yem_im_csrcreditline", false);
|
||||
selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, "yem_im_csrcreditline", "yem_im_info", false);
|
||||
QFilter qFilter = new QFilter("yem_customer", QCP.equals, customer.getPkValue());
|
||||
if (!customer.containsProperty("yem_customer")) {
|
||||
customer = BusinessDataServiceHelper.loadSingleFromCache(customer.getPkValue(), customer.getDynamicObjectType().getName());
|
||||
}
|
||||
QFilter qFilter = new QFilter("yem_customer.yem_customer", QCP.equals, customer.getString("yem_customer"));
|
||||
qFilter.and(new QFilter("yem_payment.id", QCP.equals, method.getPkValue()));
|
||||
// qFilter.and(new QFilter("org", QCP.equals, company.getPkValue()));
|
||||
qFilter.and(new QFilter("billstatus", QCP.equals, "C"));
|
||||
@ -302,7 +307,18 @@ public class TotalUtil {
|
||||
qFilter.and(new QFilter("yem_swiftcode", QCP.equals, swiftCode));
|
||||
}
|
||||
|
||||
return BusinessDataServiceHelper.loadSingle("yem_im_csrcreditline", "id," + selectfields, qFilter.toArray());
|
||||
DynamicObject[] load = BusinessDataServiceHelper.load("yem_im_csrcreditline", "id," + selectfields, qFilter.toArray());
|
||||
if (load.length == 1) {
|
||||
return load[0];
|
||||
}
|
||||
if (load.length > 1) {
|
||||
Set<String> set = new HashSet<>();
|
||||
for (DynamicObject d : load) {
|
||||
set.add(d.getString("billno"));
|
||||
}
|
||||
throw new KDBizException("该客户匹配到多个符合条件的客户信保额度申请,请联系单证处理!" + set);
|
||||
}
|
||||
return null;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
@ -257,7 +257,7 @@ public class SalesOrderSubmitValidator extends AbstractValidator {
|
||||
if ("CC".equals(number)||"CCPJ".equals(number)){
|
||||
DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle("yem_bd_productsgroup", "id,number"
|
||||
, new QFilter[]{new QFilter("number", QCP.equals, "CC")});
|
||||
along = loadSingle.getLong("id");
|
||||
along = loadSingle.getLong("id");
|
||||
}
|
||||
if ("TLJ".equals(number)||"TLJPJ".equals(number)){
|
||||
DynamicObject loadSingle = BusinessDataServiceHelper.loadSingle("yem_bd_productsgroup", "id,number"
|
||||
@ -796,20 +796,32 @@ public class SalesOrderSubmitValidator extends AbstractValidator {
|
||||
DynamicObject method = TotalUtil.getSettlementMethod(dataEntity);
|
||||
DynamicObject company = dataEntity.getDynamicObject("yem_company.yem_erporg");
|
||||
String swiftCode = TotalUtil.getSwiftCode(dataEntity);
|
||||
DynamicObject[] csrCreditLine = getCsrCreditLine(customer, method, company, swiftCode);
|
||||
boolean bolean = false;
|
||||
if (YEM.isNotEmpty(csrCreditLine)) {
|
||||
for (DynamicObject loadSingle : csrCreditLine) {
|
||||
BigDecimal balance = loadSingle.getBigDecimal("yem_balance");//yem_suminsured
|
||||
String status = loadSingle.getString("yem_limitstatus");
|
||||
if ("A".equals(status)) {
|
||||
bolean =true;
|
||||
if (total.compareTo(balance) > 0) {
|
||||
this.addWarningMessage(dataEntitie, String.format("当前合同的信保额度{%s}超出其剩余限额{%s},请检查数据!", total, balance));
|
||||
}
|
||||
}
|
||||
DynamicObject[] load = getCsrCreditLine(customer, method, company, swiftCode);
|
||||
DynamicObject csrCreditLine = null;
|
||||
if (YEM.isEmpty(load)) {
|
||||
this.addErrorMessage(dataEntitie, "该客户找不到信保额度申请,不可参与信保!");
|
||||
return;
|
||||
}
|
||||
if (load.length == 1) {
|
||||
csrCreditLine = load[0];
|
||||
}
|
||||
if (load.length > 1) {
|
||||
Set<String> set = new HashSet<>();
|
||||
for (DynamicObject d : load) {
|
||||
set.add(d.getString("billno"));
|
||||
}
|
||||
if (!bolean) {
|
||||
this.addErrorMessage(dataEntitie, "该客户匹配到多个符合条件的客户信保额度申请,请联系单证处理!" + set);
|
||||
return;
|
||||
}
|
||||
|
||||
if (YEM.isNotEmpty(csrCreditLine)) {
|
||||
BigDecimal balance = csrCreditLine.getBigDecimal("yem_balance");//yem_suminsured
|
||||
String status = csrCreditLine.getString("yem_limitstatus");
|
||||
if ("A".equals(status)) {
|
||||
if (total.compareTo(balance) > 0) {
|
||||
this.addWarningMessage(dataEntitie, String.format("当前合同的信保额度{%s}超出其剩余限额{%s},请检查数据!", total, balance));
|
||||
}
|
||||
} else {
|
||||
this.addErrorMessage(dataEntitie, "当前客户信保额度申请失效,请联系单证确认!!");
|
||||
}
|
||||
} else {
|
||||
@ -823,7 +835,10 @@ public class SalesOrderSubmitValidator extends AbstractValidator {
|
||||
if (YEM.isNotEmpty(customer) && YEM.isNotEmpty(method) && YEM.isNotEmpty(company)) {
|
||||
String selectfields = DynamicObjectUtil.getSelectfields("yem_im_csrcreditline", false);
|
||||
selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, "yem_im_csrcreditline", "yem_im_info", false);
|
||||
QFilter qFilter = new QFilter("yem_customer", QCP.equals, customer.getPkValue());
|
||||
if (!customer.containsProperty("yem_customer")) {
|
||||
customer = BusinessDataServiceHelper.loadSingleFromCache(customer.getPkValue(), customer.getDynamicObjectType().getName());
|
||||
}
|
||||
QFilter qFilter = new QFilter("yem_customer.yem_customer", QCP.equals, customer.getString("yem_customer"));
|
||||
qFilter.and(new QFilter("yem_payment.id", QCP.equals, method.getPkValue()));
|
||||
// qFilter.and(new QFilter("org", QCP.equals, company.getPkValue()));
|
||||
qFilter.and(new QFilter("billstatus", QCP.equals, "C"));
|
||||
|
@ -119,7 +119,7 @@ public class ShippingDetialToStoraConvert extends AbstractConvertPlugIn
|
||||
// 储运认领金额
|
||||
addNew.set("yem_stclaiamt_cd", amount.get("shipClaimAmt"));
|
||||
// 投保金额(原币)
|
||||
addNew.set("yem_creditamt_cd", storageAmount);
|
||||
addNew.set("yem_creditamt_cd", bigDecimal);
|
||||
|
||||
// 信保本位币金额
|
||||
addNew.set("yem_creditamtbase", storageAmount.multiply(exrate));
|
||||
|
@ -1,9 +1,13 @@
|
||||
package com.yem.wm.es.storagetrans.dynamic;
|
||||
|
||||
import com.yem.rf.utils.RFUtils;
|
||||
import com.yem.wm.es.Util.CreditBackFillUtils;
|
||||
import com.yem.wm.es.Util.TotalUtil;
|
||||
import com.yem.wm.es.shippingdetails.util.PaymentControlUtil;
|
||||
import com.yem.wm.utils.CalendarUtils;
|
||||
import com.yem.wm.utils.RptUtil;
|
||||
import com.yem.wm.utils.YEM;
|
||||
import kd.bos.algo.DataSet;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.datamodel.IDataModel;
|
||||
@ -13,17 +17,17 @@ import kd.bos.form.IFormView;
|
||||
import kd.bos.form.control.Control;
|
||||
import kd.bos.form.events.AfterDoOperationEventArgs;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.orm.ORM;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import kd.tmc.cfm.formplugin.bd.PayMentbyInstalments;
|
||||
import org.apache.commons.compress.utils.Lists;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Date;
|
||||
import java.util.EventObject;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author xwudd
|
||||
@ -45,6 +49,7 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
|
||||
model.setValue("yem_storagetransno", parentModel.getValue("billno"));//储运托单号
|
||||
model.setValue("yem_currency", parentModel.getValue("yem_creditcurr"));//信保币别
|
||||
model.setValue("yem_settlementcurr", parentModel.getValue("yem_currency"));//结算币别
|
||||
model.setValue("yem_currencybase", parentModel.getValue("yem_currencybase"));//本位币
|
||||
model.setValue("yem_actulpreamount", parentModel.getValue("yem_actualsinkamount"));//实际收汇金额汇总
|
||||
model.setValue("yem_actulpreamountbase", parentModel.getValue("yem_actualsinkamountba"));//实际收汇本位币金额汇总
|
||||
@ -82,6 +87,8 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
|
||||
model.setValue("yem_premium", dynamicObject.get("yem_insuranceamt_cd"), addNewRowIdx);//保险费
|
||||
|
||||
model.setValue("yem_contractpayamt", dynamicObject.get("yem_contractpayamt"), addNewRowIdx);//合同回款金额
|
||||
|
||||
DynamicObjectCollection parentSubCollection = dynamicObject.getDynamicObjectCollection("yem_crecollection");
|
||||
|
||||
DynamicObjectCollection subCollection = dataEntity.getDynamicObjectCollection("yem_creditentry").get(currentEntryIdx).getDynamicObjectCollection("yem_crecollection");
|
||||
@ -99,6 +106,8 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
subAddNew.set("yem_crenote", subObject.getString("yem_crenote"));//收款备注
|
||||
subAddNew.set("yem_crecollecurrency", subObject.getDynamicObject("yem_crecollecurrency"));//收款币别
|
||||
subAddNew.set("yem_crecollecamt", subObject.getBigDecimal("yem_crecollecamt"));//收款金额
|
||||
subAddNew.set("yem_crecollecamt", subObject.getBigDecimal("yem_crecollecamt"));//收款金额
|
||||
subAddNew.set("yem_contractpayamt_e", subObject.getBigDecimal("yem_contractpayamt_e"));//合同回款金额
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -114,10 +123,33 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
Control control = (Control) e.getSource();
|
||||
String key = control.getKey();
|
||||
if ("btnok".equals(key)) {
|
||||
if (!beforeOkOperationValidator()) {
|
||||
return;
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
IFormView view = this.getView();
|
||||
IDataModel model = this.getModel();
|
||||
DynamicObject dataEntity = model.getDataEntity(true);
|
||||
|
||||
DynamicObjectCollection c = dataEntity.getDynamicObjectCollection("yem_creditentry");
|
||||
for (DynamicObject d : c) {
|
||||
int par = c.indexOf(d);
|
||||
DynamicObjectCollection subC = d.getDynamicObjectCollection("yem_crecollection");
|
||||
for (DynamicObject subD : subC) {
|
||||
int son = subC.indexOf(subD);
|
||||
BigDecimal contractpayamt_e = subD.getBigDecimal("yem_contractpayamt_e");
|
||||
if (contractpayamt_e.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
sb.append(String.format("请填写明细信息第 %s 行,信保收款明细第 %s 行 合同回款金额!", par + 1, son + 1)).append("\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (sb.length() > 0) {
|
||||
view.showMessage(sb.toString());
|
||||
return;
|
||||
}
|
||||
|
||||
IFormView parentView = view.getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
DynamicObject parentDataEntity = parentModel.getDataEntity(true);
|
||||
@ -151,14 +183,15 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
parentModel.setValue("yem_creditremark", subMap.get("creditRemark"), i);//信保备注
|
||||
|
||||
parentModel.setValue("yem_creditquotation", subMap.get("yem_creditquotation"), i);
|
||||
parentModel.setValue("yem_sinosurerate_cd", subMap.get("yem_sinosurerate_cd"));
|
||||
parentModel.setValue("yem_term_cd", subMap.get("yem_term_cd"));
|
||||
parentModel.setValue("yem_sinosurerate_cd", subMap.get("yem_sinosurerate_cd"), i);
|
||||
parentModel.setValue("yem_term_cd", subMap.get("yem_term_cd"), i);
|
||||
|
||||
// parentModel.setValue("yem_year_e", subMap.get("year"));
|
||||
dynamicObject.set("yem_year_e", subMap.get("year"));
|
||||
parentModel.setValue("yem_creditstatus_e", subMap.get("creditstatus"));
|
||||
parentModel.setValue("yem_creditstatus_e", subMap.get("creditstatus"), i);
|
||||
|
||||
parentModel.setValue("yem_insuranceamt_cd", subMap.get("yem_premium"));//保险费
|
||||
parentModel.setValue("yem_insuranceamt_cd", subMap.get("yem_premium"), i);//保险费
|
||||
parentModel.setValue("yem_contractpayamt", subMap.get("yem_contractpayamt"), i);//合同回款金额
|
||||
}
|
||||
}
|
||||
subEntryBackFill();
|
||||
@ -172,6 +205,107 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* ②信保回填弹窗界面:业务手动维护当前收款币别对应的合同回款币别金额,点击确认时,【合同回款金额】必填;
|
||||
* <br/>
|
||||
* ③信保回填弹窗界面,确认时:判断当前合同下的【合同回款金额】汇总值 是否超出收款单认领到该合同尾款的【收款认领金额】汇总值,如果超出,不允许通过,并提示:合同号:***,合同回款总金额:***元,尾款(账期)认领总金额:***元,已超额,请认领完成后在操作信保回款。否则可以通过
|
||||
* <br/>
|
||||
*
|
||||
* @link <a href="https://docs.qq.com/sheet/DTEluRXJXbW5lY0xD?tab=000001">文档</>
|
||||
*
|
||||
* @return Boolean
|
||||
*/
|
||||
private boolean beforeOkOperationValidator() {
|
||||
IDataModel model = this.getModel();
|
||||
IFormView view = this.getView();
|
||||
IFormView parentView = view.getParentView();
|
||||
IDataModel parentModel = parentView.getModel();
|
||||
DynamicObject dataEntity = model.getDataEntity(true);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
DynamicObjectCollection collection = dataEntity.getDynamicObjectCollection("yem_creditentry");
|
||||
// 当前订舱合同回款金额
|
||||
Map<String, BigDecimal> contractPayAmtMap = new HashMap<>();
|
||||
for (DynamicObject d : collection) {
|
||||
int idx = collection.indexOf(d);
|
||||
BigDecimal contractpayamt = d.getBigDecimal("yem_contractpayamt");
|
||||
String salecontractno = d.getString("yem_salecontractno");
|
||||
if (contractPayAmtMap.containsKey(salecontractno)) {
|
||||
BigDecimal decimal = contractPayAmtMap.get(salecontractno);
|
||||
decimal = decimal.add(contractpayamt);
|
||||
contractPayAmtMap.put(salecontractno, decimal);
|
||||
} else {
|
||||
contractPayAmtMap.put(salecontractno, contractpayamt);
|
||||
}
|
||||
if (contractpayamt.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
sb.append(String.format("请填写明细信息第 %s 行,合同回款金额!!", idx + 1)).append("\n\r");
|
||||
}
|
||||
}
|
||||
if (sb.length() > 0) {
|
||||
view.showErrorNotification(sb.toString());
|
||||
return false;
|
||||
}
|
||||
|
||||
QFilter qFilter = RFUtils.getBaseQFilter();
|
||||
|
||||
// 当前单涉及需要校验的合同
|
||||
Set<String> salesorder = new HashSet<>();
|
||||
for (DynamicObject d : collection) {
|
||||
salesorder.add(d.getString("yem_salecontractno"));
|
||||
}
|
||||
qFilter.and("yem_creditdetail.yem_salecontractno.billno", "in", salesorder);
|
||||
qFilter.and("billno", "not in", parentModel.getValue("billno"));
|
||||
ArrayList<String> selectfileds = Lists.newArrayList();
|
||||
selectfileds.add("yem_creditdetail.yem_salecontractno.billno yem_salecontractno");//外销合同号
|
||||
selectfileds.add("yem_creditdetail.yem_contractpayamt yem_contractpayamt");//合同回款金额
|
||||
DataSet st = ORM.create().queryDataSet("com.yem.wm.es.storagetrans.dynamic.CreditBackFillEdit.beforeOkOperationValidator", "yem_es_storagetrans", String.join(",", selectfileds), qFilter.toArray());
|
||||
st = st.groupBy(new String[]{"yem_salecontractno"}).sum("yem_contractpayamt").finish();
|
||||
DynamicObjectCollection dataSetCollection = ORM.create().toPlainDynamicObjectCollection(st);
|
||||
|
||||
// 历史(除去本单)订舱合同回款金额 + 当前订舱合同回款金额
|
||||
|
||||
for (DynamicObject setObj : dataSetCollection) {
|
||||
String salecontractno = setObj.getString("yem_salecontractno");
|
||||
BigDecimal contractpayamt = setObj.getBigDecimal("yem_contractpayamt");
|
||||
if (contractPayAmtMap.containsKey(salecontractno)) {
|
||||
BigDecimal decimal = contractPayAmtMap.get(salecontractno);
|
||||
decimal = decimal.add(contractpayamt);
|
||||
contractPayAmtMap.put(salecontractno, decimal);
|
||||
} else {
|
||||
contractPayAmtMap.put(salecontractno, contractpayamt);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
StringBuilder amtSb = new StringBuilder();
|
||||
|
||||
DynamicObject[] load = BusinessDataServiceHelper.load("yem_es_salesorder", "id, billno", new QFilter[]{new QFilter("billno", "in", salesorder)});
|
||||
for (DynamicObject object : load) {
|
||||
for (Map.Entry<String, BigDecimal> map : contractPayAmtMap.entrySet()) {
|
||||
BigDecimal amt = map.getValue();
|
||||
String billno = map.getKey();
|
||||
if (object.getString("billno").equals(billno)) {
|
||||
BigDecimal contractClimeAmt = PaymentControlUtil.getContractClimeAmt(object, "F");
|
||||
if (amt.compareTo(contractClimeAmt) > 0) {
|
||||
amtSb.append(String.format("合同号:%s,合同回款总金额:%s元,尾款(账期)认领总金额:%s元,已超额,请认领完成后在操作信保回款。"
|
||||
, billno
|
||||
, amt.setScale(4, RoundingMode.HALF_UP).toPlainString()
|
||||
, contractClimeAmt.setScale(4, RoundingMode.HALF_UP).toPlainString()
|
||||
)).append("\n\r");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (amtSb.length() > 0) {
|
||||
view.showErrorNotification(amtSb.toString());
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* 缓存分录数据
|
||||
*
|
||||
@ -237,6 +371,8 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
|
||||
map.put("yem_premium", model.getValue("yem_premium", i));//保险费
|
||||
|
||||
map.put("yem_contractpayamt", model.getValue("yem_contractpayamt", i));//合同回款金额
|
||||
|
||||
Long pkValue = dynamicObject.getLong("yem_parententryid");
|
||||
collectionMap.put(pkValue, map);
|
||||
}
|
||||
@ -308,6 +444,7 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
dynamicObject.set("yem_creditstatus_e", map.get("creditstatus"));
|
||||
|
||||
dynamicObject.set("yem_premium", map.get("yem_premium"));
|
||||
dynamicObject.set("yem_contractpayamt", map.get("yem_contractpayamt"));
|
||||
}
|
||||
}
|
||||
SaveServiceHelper.save(new DynamicObject[]{csrCreditLine});
|
||||
@ -366,6 +503,7 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
addNew.set("yem_crenote", crecollection.getString("yem_crenote"));//收款备注
|
||||
addNew.set("yem_crecollecurrency", crecollection.getDynamicObject("yem_crecollecurrency"));//收款币别
|
||||
addNew.set("yem_crecollecamt", crecollection.getBigDecimal("yem_crecollecamt"));//收款金额
|
||||
addNew.set("yem_contractpayamt_e", crecollection.getBigDecimal("yem_contractpayamt_e"));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@ -418,6 +556,7 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
parentAddNer.set("yem_crenote", crecollection.getString("yem_crenote"));//收款备注
|
||||
parentAddNer.set("yem_crecollecurrency", crecollection.getDynamicObject("yem_crecollecurrency"));//收款币别
|
||||
parentAddNer.set("yem_crecollecamt", crecollection.getBigDecimal("yem_crecollecamt"));//收款金额
|
||||
parentAddNer.set("yem_contractpayamt_e", crecollection.getBigDecimal("yem_contractpayamt_e"));//合同回款金额
|
||||
}
|
||||
}
|
||||
BigDecimal creactualamt = BigDecimal.ZERO;// 实际收汇金额
|
||||
@ -501,6 +640,21 @@ public class CreditBackFillEdit extends AbstractFormPlugin {
|
||||
this.getModel().setValue("yem_creactuallocamt", creactualamt.multiply(crerate), row);
|
||||
// this.getView().updateView();
|
||||
}
|
||||
|
||||
// 汇总子分录合同回款金额到分录
|
||||
if ("yem_contractpayamt_e".equals(key)) {
|
||||
DynamicObjectCollection collection = dataEntity.getDynamicObjectCollection("yem_creditentry");
|
||||
for (DynamicObject entry : collection) {
|
||||
int idx = collection.indexOf(entry);
|
||||
DynamicObjectCollection subEntry = entry.getDynamicObjectCollection("yem_crecollection");
|
||||
BigDecimal calc = BigDecimal.ZERO;
|
||||
for (DynamicObject subObj : subEntry) {
|
||||
BigDecimal contractpayamt_e = subObj.getBigDecimal("yem_contractpayamt_e");
|
||||
calc = calc.add(contractpayamt_e);
|
||||
}
|
||||
model.setValue("yem_contractpayamt", calc, idx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void carryCreditInsuranceRate(int rowIndex) {
|
||||
|
@ -729,6 +729,13 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele
|
||||
DynamicObject company = dataEntity.getDynamicObject("yem_company.yem_erporg");
|
||||
String swiftCode = TotalUtil.getSwiftCode(dataEntity);
|
||||
DynamicObject csrCreditLine = TotalUtil.getCsrCreditLine(customer, method, company, swiftCode);
|
||||
if (YEM.isEmpty(csrCreditLine)) {
|
||||
sb.append("未找到该客户的信保额度申请,请检查额度申请是否存在,是否已审核!\r\n");
|
||||
e.setCancel(true);
|
||||
view.showErrorNotification(sb.toString());
|
||||
return;
|
||||
}
|
||||
|
||||
// 剩余限额
|
||||
BigDecimal balance = csrCreditLine.getBigDecimal("yem_balance");
|
||||
if (stcreditpreamt_cd.compareTo(preamt_cd) < 0) {
|
||||
@ -768,11 +775,6 @@ public class StorageTransEdit extends AbstractBillPlugIn implements BeforeF7Sele
|
||||
sb.append(String.format("未上传客户汇款水单附件,不能进行信保确认!\n\r"));
|
||||
}
|
||||
}
|
||||
if (csrCreditLine != null && customer != null) {
|
||||
} else {
|
||||
sb.append(String.format("当前客户不存在信保额度申请,不允许进行信保确认\n\r"));
|
||||
// view.showErrorNotification("当前客户不存在信保额度申请,不允许进行信保确认");
|
||||
}
|
||||
}
|
||||
if (sb.length() > 0) {
|
||||
e.setCancel(true);
|
||||
|
@ -10,6 +10,7 @@ import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||
import kd.bos.exception.KDBizException;
|
||||
import kd.bos.orm.query.QCP;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
@ -72,6 +73,8 @@ public class StorageTransUnAuditOp extends AbstractOperationServicePlugIn implem
|
||||
csrCreditLine.set("yem_balance", decimal);
|
||||
SaveServiceHelper.save(new DynamicObject[]{csrCreditLine});
|
||||
}
|
||||
} else {
|
||||
throw new KDBizException("该客户未找到对应的客户信保额度申请,请检查,客户信保额度申请是否审核且有效!");
|
||||
}
|
||||
}
|
||||
|
||||
@ -155,7 +158,7 @@ public class StorageTransUnAuditOp extends AbstractOperationServicePlugIn implem
|
||||
|
||||
DynamicObject[] storagetrans = BusinessDataServiceHelper.load("yem_es_storagetrans",
|
||||
"yem_es_materialinfo.yem_productmodel,yem_es_materialinfo.yem_qty,"+
|
||||
"yem_es_materialinfo.yem_contractnumbers_m",
|
||||
"yem_es_materialinfo.yem_contractnumbers_m",
|
||||
new QFilter[]{
|
||||
new QFilter("billstatus", QCP.equals,"C"),
|
||||
new QFilter("yem_customer", QCP.equals,customer),
|
||||
|
@ -28,23 +28,28 @@ public class CsrCreditSubmitLineValidator extends AbstractValidator {
|
||||
// DynamicObject org = dataEntity.getDynamicObject("org");
|
||||
Date bizDate = dataEntity.getDate("yem_bizdate");
|
||||
String swiftcode = dataEntity.getString("yem_swiftcode");
|
||||
Date yearBegin = getYearBegin(bizDate);
|
||||
Date yearLast = getYearLast(bizDate);
|
||||
QFilter qFilter = new QFilter("yem_customer", QCP.equals, customer.getPkValue());
|
||||
// Date yearBegin = getYearBegin(bizDate);
|
||||
// Date yearLast = getYearLast(bizDate);
|
||||
|
||||
if (!customer.containsProperty("yem_customer")) {
|
||||
customer = BusinessDataServiceHelper.loadSingleFromCache(customer.getPkValue(), customer.getDynamicObjectType().getName());
|
||||
}
|
||||
QFilter qFilter = new QFilter("yem_customer.yem_customer", QCP.equals, customer.getString("yem_customer"));
|
||||
// QFilter qFilter = new QFilter("yem_customer", QCP.equals, customer.getPkValue());
|
||||
// qFilter.and(new QFilter("org", QCP.equals, org.getPkValue()));
|
||||
qFilter.and(new QFilter("yem_bizdate", QCP.large_than, yearBegin));
|
||||
qFilter.and(new QFilter("yem_bizdate", QCP.less_equals, yearLast));
|
||||
// qFilter.and(new QFilter("yem_bizdate", QCP.large_than, yearBegin));
|
||||
// qFilter.and(new QFilter("yem_bizdate", QCP.less_equals, yearLast));
|
||||
qFilter.and(new QFilter("billstatus", QCP.in, new String[]{"B", "C"}));
|
||||
qFilter.and(new QFilter("yem_payment.id", QCP.equals, method.getLong("id")));
|
||||
if ("信用证".equals(method.getString("name"))) {
|
||||
if ("信用证".contains(method.getString("name"))) {
|
||||
qFilter.and(new QFilter("yem_swiftcode", QCP.equals, swiftcode));
|
||||
}
|
||||
DynamicObject[] objs = BusinessDataServiceHelper.load(dataEntity.getDynamicObjectType().getName(), "id", qFilter.toArray());
|
||||
if (objs.length > 0) {
|
||||
if ("信用证".equals(method.getString("name"))) {
|
||||
this.addErrorMessage(dataEntitie, "同一年内,相同客户+支付方式+SWIFT CODE,已存在一个客户信保额度申请单,请检查数据!");
|
||||
if ("信用证".contains(method.getString("name"))) {
|
||||
this.addErrorMessage(dataEntitie, "相同客户+支付方式+SWIFT CODE,已存在一个客户信保额度申请单,请检查数据!");
|
||||
} else {
|
||||
this.addErrorMessage(dataEntitie, "同一年内,相同客户+支付方式,已存在一个客户信保额度申请单,请检查数据!");
|
||||
this.addErrorMessage(dataEntitie, "相同客户+支付方式,已存在一个客户信保额度申请单,请检查数据!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user