|
@@ -1,5 +1,6 @@
|
|
|
package fi.cas.opplugin;
|
|
|
|
|
|
+import com.alibaba.druid.util.StringUtils;
|
|
|
import dm.jdbc.util.StringUtil;
|
|
|
import fi.cas.common.SettlementStatusEnum;
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
@@ -109,6 +110,7 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
|
//报销单头数据包
|
|
|
DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[i].getPkValue(), bxDynamicObjects[i].getDynamicObjectType().getName());
|
|
|
Long bxId = bxInfo.getLong("id");
|
|
|
+ String nckd_sourcebillid = bxInfo.getString("nckd_sourcebillid");
|
|
|
//报账类型
|
|
|
String reimbursetype = bxInfo.getString("reimbursetype");
|
|
|
//已结算金额
|
|
@@ -166,29 +168,41 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
|
}
|
|
|
}
|
|
|
//报账类型等于工程报账回写合同台账单
|
|
|
- if (StringUtil.equals("engineering",reimbursetype)) {
|
|
|
+ if (!StringUtils.isEmpty(nckd_sourcebillid)) {
|
|
|
//获取合同台账单id
|
|
|
- Long contractbillId = bxInfo.getLong("sourcebillid");
|
|
|
+ Long contractbillId = Long.parseLong(nckd_sourcebillid);
|
|
|
//查询合同台账单
|
|
|
QFilter htFilter = new QFilter("id", QCP.equals,contractbillId);
|
|
|
DynamicObject[] htDynamicObjects = BusinessDataServiceHelper.load(er_contractbill,"id",new QFilter[] {htFilter});
|
|
|
for (int j=0;j<htDynamicObjects.length;j++) {
|
|
|
//合同台账单头数据包
|
|
|
DynamicObject htInfo = BusinessDataServiceHelper.loadSingle(htDynamicObjects[i].getPkValue(), htDynamicObjects[i].getDynamicObjectType().getName());
|
|
|
- htInfo.set("oripayedamount",totalSettledamt);
|
|
|
- htInfo.set("orinotpayamount",totalUnsettledamt);
|
|
|
- if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ //未结算金额
|
|
|
+ BigDecimal nckd_unsettleamount = htInfo.getBigDecimal("nckd_unsettleamount");
|
|
|
+ //已结算金额
|
|
|
+ BigDecimal nckd_settleamount = htInfo.getBigDecimal("nckd_settleamount");
|
|
|
+ if (nckd_unsettleamount.compareTo(totalSettledamt) > 0) {
|
|
|
+ //未结算金额
|
|
|
+ nckd_unsettleamount = nckd_unsettleamount.subtract(totalSettledamt);
|
|
|
+ htInfo.set("orinotpayamount",nckd_unsettleamount);
|
|
|
+ }else {
|
|
|
+ htInfo.set("orinotpayamount",BigDecimal.ZERO);
|
|
|
+ }
|
|
|
+ nckd_settleamount = nckd_settleamount.add(totalSettledamt);
|
|
|
+ htInfo.set("oripayedamount",nckd_settleamount);
|
|
|
+
|
|
|
+ if (nckd_settleamount.compareTo(BigDecimal.ZERO) > 0 && nckd_unsettleamount.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
htInfo.set("nckd_settlestatus", SettlementStatusEnum.已结算.getValue());
|
|
|
- htInfo.set("nckd_settleamount", totalSettledamt);
|
|
|
- htInfo.set("nckd_unsettleamount", totalUnsettledamt);
|
|
|
- } else if (totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0 && totalSettledamt.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ info.set("nckd_settleamount", nckd_settleamount);
|
|
|
+ info.set("nckd_unsettleamount", BigDecimal.ZERO);
|
|
|
+ } else if (nckd_unsettleamount.compareTo(BigDecimal.ZERO) > 0 && nckd_settleamount.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
htInfo.set("nckd_settlestatus", SettlementStatusEnum.未结算.getValue());
|
|
|
- htInfo.set("nckd_settleamount", totalSettledamt);
|
|
|
- htInfo.set("nckd_unsettleamount", totalUnsettledamt);
|
|
|
- } else if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ info.set("nckd_settleamount", BigDecimal.ZERO);
|
|
|
+ info.set("nckd_unsettleamount", nckd_unsettleamount);
|
|
|
+ } else if (nckd_settleamount.compareTo(BigDecimal.ZERO) > 0 && nckd_settleamount.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
htInfo.set("nckd_settlestatus", SettlementStatusEnum.部分结算.getValue());
|
|
|
- htInfo.set("nckd_settleamount", totalSettledamt);
|
|
|
- htInfo.set("nckd_unsettleamount", totalUnsettledamt);
|
|
|
+ info.set("nckd_settleamount", nckd_settleamount);
|
|
|
+ info.set("nckd_unsettleamount", nckd_unsettleamount);
|
|
|
}
|
|
|
SaveServiceHelper.save(new DynamicObject[]{htInfo});
|
|
|
}
|