WIP:寄单放单提交校验

This commit is contained in:
zzs 2025-01-03 18:00:23 +08:00
parent 9bc2063f98
commit 91bb471d10

View File

@ -12,10 +12,9 @@ import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import static com.yem.wm.fm.gathering.dynamic.GatheringClaimFormPlugin.getPercentagePeriod;
/**
* @author ljw
* @date 2024/9/24 19:04
@ -44,22 +43,31 @@ public class ExportPresentSubmitsValidator extends AbstractValidator {
String selectfields = DynamicObjectUtil.getSelectfields("yem_es_salesorder");
selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, "yem_es_salesorder", "yem_es_salescontrac_s");
Map<Object, DynamicObject> map = BusinessDataServiceHelper.loadFromCache("yem_es_salesorder", selectfields,new QFilter[]{new QFilter("billno", "in", salesorder)});
Map<Object, DynamicObject> map = BusinessDataServiceHelper.loadFromCache("yem_es_salesorder", selectfields, new QFilter[]{new QFilter("billno", "in", salesorder)});
// 100%L/C100%OA100%DP100%DA
boolean isRequireValidator = false;
for (Map.Entry<Object, DynamicObject> salesoerderEntry : map.entrySet()) {
DynamicObject order = salesoerderEntry.getValue();
DynamicObjectCollection salescontrac = order.getDynamicObjectCollection("yem_es_salescontrac_s");
BigDecimal preAmt = BigDecimal.ZERO;//预收金额合计
for (DynamicObject d : salescontrac) {
DynamicObject rapstyle = d.getDynamicObject("yem_rapstyle_c");
BigDecimal raprate = d.getBigDecimal("yem_raprate");
boolean ispre = d.getBoolean("yem_ispre");
BigDecimal rapamt = d.getBigDecimal("yem_rapamt");
if (YEM.isNotEmpty(rapstyle)) {
String number = rapstyle.getString("number");
if ("D/A JSFS08 L/C OA D/A".contains(number) && raprate.compareTo(new BigDecimal("100")) == 0) {
isRequireValidator = true;
if ("D/A JSFS08 L/C OA D/A".contains(number)) {
if (raprate.compareTo(new BigDecimal("100")) == 0) {
isRequireValidator = true;
} else if (ispre) {
preAmt = preAmt.add(rapamt);
}
}
}
}
validatorPreAmtClaimFinished(preAmt, order, data);
}
if ("A".equals(paymenttype) && ("A".equals(isladingbill) || isRequireValidator)) {
@ -68,6 +76,27 @@ public class ExportPresentSubmitsValidator extends AbstractValidator {
}
}
/**
* 校验合同预收部分金额是否认领完成
*
* @param preAmt 预收金额
* @param order 合同
* @param data
*/
private void validatorPreAmtClaimFinished(BigDecimal preAmt, DynamicObject order, ExtendedDataEntity data) {
if (preAmt.compareTo(BigDecimal.ZERO) == 0) {
return;
}
BigDecimal orderAmt = PaymentControlUtil.getContractClimeAmt(order, "D");
BigDecimal shipAmt = PaymentControlUtil.getContractClimeAmt(order, "F");
if (orderAmt.add(shipAmt).compareTo(preAmt) < 0) {
this.addMessage(data, String.format("合同 [ %s ] 预收合计 [ %s ] ,已经认领金额合计 [ %s ],未认领完成,请确认!",
order.getString("billno"),
preAmt.setScale(4, RoundingMode.HALF_UP).toPlainString(),
orderAmt.add(shipAmt).setScale(4, RoundingMode.HALF_UP).toPlainString()));
}
}
private void arrearsVerification(DynamicObject dataEntity, ExtendedDataEntity data) {
DynamicObject yemCustomer = dataEntity.getDynamicObject("yem_customer");
if (yemCustomer != null) {