|
@@ -13,12 +13,13 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
|
|
|
-//付款处理单
|
|
|
|
|
|
+//付款处理单付款反写
|
|
public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
private static String nckd_cas_arbill_gz_l = "nckd_cas_arbill"; //应收挂帐单标识
|
|
private static String nckd_cas_arbill_gz_l = "nckd_cas_arbill"; //应收挂帐单标识
|
|
private static String nckd_er_prepaybill_ext = "er_prepaybill"; //预付借款单标识
|
|
private static String nckd_er_prepaybill_ext = "er_prepaybill"; //预付借款单标识
|
|
private static String nckd_er_publicreimbur_ext = "er_publicreimbursebill"; //报销单标识
|
|
private static String nckd_er_publicreimbur_ext = "er_publicreimbursebill"; //报销单标识
|
|
private static String er_contractbill = "er_contractbill"; //合同台账单标识
|
|
private static String er_contractbill = "er_contractbill"; //合同台账单标识
|
|
|
|
+ private static String nckd_ap_finapbill_gz = "ap_finapbill"; //应付挂账单标识
|
|
@Override
|
|
@Override
|
|
public void beginOperationTransaction(BeginOperationTransactionArgs e) {
|
|
public void beginOperationTransaction(BeginOperationTransactionArgs e) {
|
|
//获取付款处理单据信息
|
|
//获取付款处理单据信息
|
|
@@ -26,9 +27,9 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
for (int i = 0; i < dynamicObjects.length; i++) {
|
|
for (int i = 0; i < dynamicObjects.length; i++) {
|
|
//当前单头数据包
|
|
//当前单头数据包
|
|
DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
|
|
DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
|
|
- //获取应收挂帐单id
|
|
|
|
|
|
+ //获取源单id
|
|
Long sourcebillid = info.getLong("sourcebillid");
|
|
Long sourcebillid = info.getLong("sourcebillid");
|
|
- //存储应收挂账单分录id和付款处理分录实付金额
|
|
|
|
|
|
+ //存储源单分录id和付款处理分录实付金额
|
|
HashMap<String,BigDecimal> amountMap = new HashMap<>();
|
|
HashMap<String,BigDecimal> amountMap = new HashMap<>();
|
|
//循环付款明细分录
|
|
//循环付款明细分录
|
|
for (DynamicObject entryentity : info.getDynamicObjectCollection("entry")) {
|
|
for (DynamicObject entryentity : info.getDynamicObjectCollection("entry")) {
|
|
@@ -62,7 +63,7 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
//循环应收挂帐单付款明细分录
|
|
//循环应收挂帐单付款明细分录
|
|
for (DynamicObject entryentity : gzInfo.getDynamicObjectCollection("entry")) {
|
|
for (DynamicObject entryentity : gzInfo.getDynamicObjectCollection("entry")) {
|
|
//获取分录实付金额
|
|
//获取分录实付金额
|
|
- BigDecimal settledamt = amountMap.get(entryentity.getString("id"));
|
|
|
|
|
|
+ BigDecimal settledamt = amountMap.get(entryentity.getString("id")) == null ? BigDecimal.ZERO:amountMap.get(entryentity.getString("id"));
|
|
//获取未结算金额
|
|
//获取未结算金额
|
|
BigDecimal unsettledamt = entryentity.getBigDecimal("e_unsettledamt");
|
|
BigDecimal unsettledamt = entryentity.getBigDecimal("e_unsettledamt");
|
|
unsettledamt = unsettledamt.subtract(settledamt);
|
|
unsettledamt = unsettledamt.subtract(settledamt);
|
|
@@ -74,20 +75,10 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
String yfjkSourceBillEntryId = entryentity.getString("e_sourcebillentryid");
|
|
String yfjkSourceBillEntryId = entryentity.getString("e_sourcebillentryid");
|
|
yfjkMap.put(yfjkSourceBillEntryId,settledamt);
|
|
yfjkMap.put(yfjkSourceBillEntryId,settledamt);
|
|
}
|
|
}
|
|
- if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
- gzInfo.set("settlestatus", SettlementStatusEnum.已结算.getValue());
|
|
|
|
- gzInfo.set("settleamount", totalSettledamt);
|
|
|
|
- gzInfo.set("unsettleamount", totalUnsettledamt);
|
|
|
|
- } else if (totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0 && totalSettledamt.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
- gzInfo.set("settlestatus", SettlementStatusEnum.未结算.getValue());
|
|
|
|
- gzInfo.set("settleamount", totalSettledamt);
|
|
|
|
- gzInfo.set("unsettleamount", totalUnsettledamt);
|
|
|
|
- } else if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
- gzInfo.set("settlestatus", SettlementStatusEnum.部分结算.getValue());
|
|
|
|
- gzInfo.set("settleamount", totalSettledamt);
|
|
|
|
- gzInfo.set("unsettleamount", totalUnsettledamt);
|
|
|
|
- }
|
|
|
|
|
|
+ //结算字段赋值
|
|
|
|
+ settleMethod(gzInfo,"settlestatus","settleamount","unsettleamount",totalSettledamt,totalUnsettledamt);
|
|
SaveServiceHelper.save(new DynamicObject[]{gzInfo});
|
|
SaveServiceHelper.save(new DynamicObject[]{gzInfo});
|
|
|
|
+
|
|
//查询预付借款单
|
|
//查询预付借款单
|
|
QFilter nckd_yfjkFilter = new QFilter("id", QCP.equals,yfjkId);
|
|
QFilter nckd_yfjkFilter = new QFilter("id", QCP.equals,yfjkId);
|
|
DynamicObject[] yfjkDynamicObjects = BusinessDataServiceHelper.load(nckd_er_prepaybill_ext,"id",new QFilter[] {nckd_yfjkFilter});
|
|
DynamicObject[] yfjkDynamicObjects = BusinessDataServiceHelper.load(nckd_er_prepaybill_ext,"id",new QFilter[] {nckd_yfjkFilter});
|
|
@@ -98,7 +89,7 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
//循环预付借款单预付借款信息分录
|
|
//循环预付借款单预付借款信息分录
|
|
for (DynamicObject entryentity : yfjkInfo.getDynamicObjectCollection("expenseentryentity")) {
|
|
for (DynamicObject entryentity : yfjkInfo.getDynamicObjectCollection("expenseentryentity")) {
|
|
//获取分录实付金额
|
|
//获取分录实付金额
|
|
- BigDecimal settledamt = yfjkMap.get(entryentity.getString("id"));
|
|
|
|
|
|
+ BigDecimal settledamt = yfjkMap.get(entryentity.getString("id")) == null ? BigDecimal.ZERO:yfjkMap.get(entryentity.getString("id"));
|
|
//获取未结算金额
|
|
//获取未结算金额
|
|
BigDecimal unsettledamt = entryentity.getBigDecimal("nckd_unsettleamount_et");
|
|
BigDecimal unsettledamt = entryentity.getBigDecimal("nckd_unsettleamount_et");
|
|
unsettledamt = unsettledamt.subtract(settledamt);
|
|
unsettledamt = unsettledamt.subtract(settledamt);
|
|
@@ -106,19 +97,8 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
entryentity.set("nckd_settleamount_et",settledamt);
|
|
entryentity.set("nckd_settleamount_et",settledamt);
|
|
entryentity.set("nckd_unsettleamount_et",unsettledamt);
|
|
entryentity.set("nckd_unsettleamount_et",unsettledamt);
|
|
}
|
|
}
|
|
- if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
- yfjkInfo.set("nckd_settlestatus", SettlementStatusEnum.已结算.getValue());
|
|
|
|
- yfjkInfo.set("nckd_settleamount", totalSettledamt);
|
|
|
|
- yfjkInfo.set("nckd_unsettleamount", totalUnsettledamt);
|
|
|
|
- } else if (totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0 && totalSettledamt.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
- yfjkInfo.set("nckd_settlestatus", SettlementStatusEnum.未结算.getValue());
|
|
|
|
- yfjkInfo.set("nckd_settleamount", totalSettledamt);
|
|
|
|
- yfjkInfo.set("nckd_unsettleamount", totalUnsettledamt);
|
|
|
|
- } else if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
- yfjkInfo.set("nckd_settlestatus", SettlementStatusEnum.部分结算.getValue());
|
|
|
|
- yfjkInfo.set("nckd_settleamount", totalSettledamt);
|
|
|
|
- yfjkInfo.set("nckd_unsettleamount", totalUnsettledamt);
|
|
|
|
- }
|
|
|
|
|
|
+ //结算字段赋值
|
|
|
|
+ settleMethod(yfjkInfo,"nckd_settlestatus","nckd_settleamount","nckd_unsettleamount",totalSettledamt,totalUnsettledamt);
|
|
SaveServiceHelper.save(new DynamicObject[]{yfjkInfo});
|
|
SaveServiceHelper.save(new DynamicObject[]{yfjkInfo});
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -126,11 +106,11 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
else if (bxDynamicObjects.length > 0) {
|
|
else if (bxDynamicObjects.length > 0) {
|
|
//循环数组获取结算状态,已结算金额,未结算金额
|
|
//循环数组获取结算状态,已结算金额,未结算金额
|
|
for (int c=0;c<bxDynamicObjects.length;c++) {
|
|
for (int c=0;c<bxDynamicObjects.length;c++) {
|
|
- //应收挂帐单头数据包
|
|
|
|
|
|
+ //报销单头数据包
|
|
DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[i].getPkValue(), bxDynamicObjects[i].getDynamicObjectType().getName());
|
|
DynamicObject bxInfo = BusinessDataServiceHelper.loadSingle(bxDynamicObjects[i].getPkValue(), bxDynamicObjects[i].getDynamicObjectType().getName());
|
|
|
|
+ Long bxId = bxInfo.getLong("id");
|
|
|
|
+ //报账类型
|
|
String reimbursetype = bxInfo.getString("reimbursetype");
|
|
String reimbursetype = bxInfo.getString("reimbursetype");
|
|
- //获取合同台账单id
|
|
|
|
- Long contractbillId = bxInfo.getLong("sourcebillid");
|
|
|
|
//已结算金额
|
|
//已结算金额
|
|
BigDecimal totalSettledamt = BigDecimal.ZERO;
|
|
BigDecimal totalSettledamt = BigDecimal.ZERO;
|
|
//未结算金额
|
|
//未结算金额
|
|
@@ -138,7 +118,7 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
//循环报销单收款信息分录
|
|
//循环报销单收款信息分录
|
|
for (DynamicObject entryentity : bxInfo.getDynamicObjectCollection("accountentry")) {
|
|
for (DynamicObject entryentity : bxInfo.getDynamicObjectCollection("accountentry")) {
|
|
//获取分录收款金额
|
|
//获取分录收款金额
|
|
- BigDecimal settledamt = amountMap.get(entryentity.getString("id"));
|
|
|
|
|
|
+ BigDecimal settledamt = amountMap.get(entryentity.getString("id")) == null ? BigDecimal.ZERO:amountMap.get(entryentity.getString("id"));
|
|
//获取未结算金额
|
|
//获取未结算金额
|
|
BigDecimal unsettledamt = entryentity.getBigDecimal("nckd_unsettleamount_et");
|
|
BigDecimal unsettledamt = entryentity.getBigDecimal("nckd_unsettleamount_et");
|
|
unsettledamt = unsettledamt.subtract(settledamt);
|
|
unsettledamt = unsettledamt.subtract(settledamt);
|
|
@@ -162,8 +142,33 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
bxInfo.set("nckd_unsettleamount", totalUnsettledamt);
|
|
bxInfo.set("nckd_unsettleamount", totalUnsettledamt);
|
|
}
|
|
}
|
|
SaveServiceHelper.save(new DynamicObject[]{bxInfo});
|
|
SaveServiceHelper.save(new DynamicObject[]{bxInfo});
|
|
|
|
+ //查询应付挂账
|
|
|
|
+ QFilter nckd_yfgzFilter = new QFilter("sourcebillid", QCP.equals,bxId);
|
|
|
|
+ DynamicObject[] yfgzDynamicObjects = BusinessDataServiceHelper.load(nckd_ap_finapbill_gz,"id",new QFilter[] {nckd_yfgzFilter});
|
|
|
|
+ if (yfgzDynamicObjects.length > 0) {
|
|
|
|
+ for (int f=0;f<yfgzDynamicObjects.length;f++) {
|
|
|
|
+ //应付挂账单
|
|
|
|
+ DynamicObject gzInfo = BusinessDataServiceHelper.loadSingle(yfgzDynamicObjects[i].getPkValue(), yfgzDynamicObjects[i].getDynamicObjectType().getName());
|
|
|
|
+ if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
+ gzInfo.set("settlestatus", SettlementStatusEnum.已结算.getValue());
|
|
|
|
+ gzInfo.set("settleamount", totalSettledamt);
|
|
|
|
+ gzInfo.set("unsettleamount", totalUnsettledamt);
|
|
|
|
+ } else if (totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0 && totalSettledamt.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
+ gzInfo.set("settlestatus", SettlementStatusEnum.未结算.getValue());
|
|
|
|
+ gzInfo.set("settleamount", totalSettledamt);
|
|
|
|
+ gzInfo.set("unsettleamount", totalUnsettledamt);
|
|
|
|
+ } else if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
+ gzInfo.set("settlestatus", SettlementStatusEnum.部分结算.getValue());
|
|
|
|
+ gzInfo.set("settleamount", totalSettledamt);
|
|
|
|
+ gzInfo.set("unsettleamount", totalUnsettledamt);
|
|
|
|
+ }
|
|
|
|
+ SaveServiceHelper.save(new DynamicObject[]{gzInfo});
|
|
|
|
+ }
|
|
|
|
+ }
|
|
//报账类型等于工程报账回写合同台账单
|
|
//报账类型等于工程报账回写合同台账单
|
|
if (StringUtil.equals("engineering",reimbursetype)) {
|
|
if (StringUtil.equals("engineering",reimbursetype)) {
|
|
|
|
+ //获取合同台账单id
|
|
|
|
+ Long contractbillId = bxInfo.getLong("sourcebillid");
|
|
//查询合同台账单
|
|
//查询合同台账单
|
|
QFilter htFilter = new QFilter("id", QCP.equals,contractbillId);
|
|
QFilter htFilter = new QFilter("id", QCP.equals,contractbillId);
|
|
DynamicObject[] htDynamicObjects = BusinessDataServiceHelper.load(er_contractbill,"id",new QFilter[] {htFilter});
|
|
DynamicObject[] htDynamicObjects = BusinessDataServiceHelper.load(er_contractbill,"id",new QFilter[] {htFilter});
|
|
@@ -189,9 +194,26 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * 给结算状态,结算金额,未结算金额赋值
|
|
|
|
+ * */
|
|
|
|
+ private void settleMethod(DynamicObject object ,String settlestatus ,String settleamount ,String unsettleamount ,BigDecimal totalSettledamt ,BigDecimal totalUnsettledamt) {
|
|
|
|
+ if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
+ object.set(settlestatus, SettlementStatusEnum.已结算.getValue());
|
|
|
|
+ object.set(settleamount, totalSettledamt);
|
|
|
|
+ object.set(unsettleamount, totalUnsettledamt);
|
|
|
|
+ } else if (totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0 && totalSettledamt.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
+ object.set(settlestatus, SettlementStatusEnum.未结算.getValue());
|
|
|
|
+ object.set(settleamount, totalSettledamt);
|
|
|
|
+ object.set(unsettleamount, totalUnsettledamt);
|
|
|
|
+ } else if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
+ object.set(settlestatus, SettlementStatusEnum.部分结算.getValue());
|
|
|
|
+ object.set(settleamount, totalSettledamt);
|
|
|
|
+ object.set(unsettleamount, totalUnsettledamt);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|