Pārlūkot izejas kodu

付款反写预付借款单,实物卡片反写

wanwei 6 mēneši atpakaļ
vecāks
revīzija
2752c135e0

+ 45 - 113
src/main/java/fi/cas/opplugin/PaymentProcessOpPlugin.java

@@ -11,6 +11,7 @@ import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
 import kd.bos.servicehelper.BusinessDataServiceHelper;
 import kd.bos.servicehelper.operation.SaveServiceHelper;
+import org.mvel2.util.Make;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -18,7 +19,7 @@ import java.util.HashMap;
 
 //付款处理单付款反写
 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_ar_finarbill_ext"; //应收挂帐单标识
     private static String nckd_er_prepaybill_ext = "er_prepaybill"; //预付借款单标识
     private static String nckd_er_publicreimbur_ext = "er_publicreimbursebill"; //报销单标识
     private static String er_contractbill = "er_contractbill"; //合同台账单标识
@@ -41,13 +42,13 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
             //获取源单id
             Long sourcebillid = info.getLong("sourcebillid");
             //存储源单分录id和付款处理分录实付金额
-            HashMap<String,BigDecimal> amountMap = new HashMap<>();
+            HashMap<Long,BigDecimal> amountMap = new HashMap<>();
             //循环付款明细分录
             for (DynamicObject entryentity : info.getDynamicObjectCollection("entry")) {
                 //取当前循环付款明细分录的实付金额
                 BigDecimal expenseamount = entryentity.getBigDecimal("e_actamt");
                 //取当前循环付款明细分录的源单分录id
-                String sourcebillentryid = entryentity.getString("e_sourcebillentryid");
+                Long sourcebillentryid = entryentity.getLong("e_sourcebillentryid");
                 amountMap.put(sourcebillentryid,expenseamount);
             }
             //查询应收挂账单
@@ -64,31 +65,48 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
                     //应收挂帐单头数据包
                     DynamicObject gzInfo = BusinessDataServiceHelper.loadSingle(gzDynamicObjects[i].getPkValue(), gzDynamicObjects[i].getDynamicObjectType().getName());
                     //获取预付借款单id
-                    Long yfjkId = gzInfo.getLong("sourcebillid");
-                    //存储预付借款单分录id和付款处理分录实付金额
-                    HashMap<String,BigDecimal> yfjkMap = new HashMap<>();
-                    //应收挂帐单头已结算金额
-                    BigDecimal totalSettledamt = BigDecimal.ZERO;
-                    //应收挂帐单头未结算金额
-                    BigDecimal totalUnsettledamt = BigDecimal.ZERO;
-                    //循环应收挂帐单付款明细分录
-                    for (DynamicObject entryentity : gzInfo.getDynamicObjectCollection("entry")) {
-                        //获取分录实付金额
-                        BigDecimal settledamt = amountMap.get(entryentity.getString("id")) == null ? BigDecimal.ZERO:amountMap.get(entryentity.getString("id"));
-                        //获取未结算金额
-                        BigDecimal unsettledamt = entryentity.getBigDecimal("e_unsettledamt");
-                        unsettledamt = unsettledamt.subtract(settledamt);
-                        //反写分录已结算金额,未结算金额
-                        entryentity.set("e_settledamt",settledamt);
-                        entryentity.set("e_unsettledamt",unsettledamt);
-                        totalSettledamt = totalSettledamt.add(settledamt);
-                        totalUnsettledamt = totalUnsettledamt.add(unsettledamt);
-                        String yfjkSourceBillEntryId = entryentity.getString("e_sourcebillentryid");
-                        yfjkMap.put(yfjkSourceBillEntryId,settledamt);
+                    String yfjkId = gzInfo.getString("sourcebillid");
+                    if (!StringUtils.isEmpty(yfjkId)) {
+                        //存储预付借款单分录id和付款处理分录实付金额
+                        HashMap<Long,BigDecimal> yfjkMap = new HashMap<>();
+                        //循环应收挂帐单付款明细分录
+                        for (DynamicObject entryentity : gzInfo.getDynamicObjectCollection("entry")) {
+                            //获取分录实付金额
+                            BigDecimal nckd_amountfield5 = amountMap.get(entryentity.getLong("id")) == null ? BigDecimal.ZERO:amountMap.get(entryentity.getLong("id"));
+                            //获取未结算金额
+                            BigDecimal nckd_amountfield7 = entryentity.getBigDecimal("nckd_amountfield7");
+                            nckd_amountfield7 = nckd_amountfield7.subtract(nckd_amountfield5);
+                            //反写分录已付金额,未付金额
+                            entryentity.set("nckd_amountfield5",nckd_amountfield5);
+                            entryentity.set("e_unsettledamt",nckd_amountfield7);
+                            Long yfjkSourceBillEntryId = entryentity.getLong("e_srcentryid");
+                            yfjkMap.put(yfjkSourceBillEntryId,nckd_amountfield5);
+                        }
+                        SaveServiceHelper.save(new DynamicObject[]{gzInfo});
+
+                        //查询预付借款单
+                        Long prebillId = Long.valueOf(yfjkId);
+                        QFilter nckd_yfjkFilter = new QFilter("id", QCP.equals,prebillId);
+                        DynamicObject[] yfjkDynamicObjects = BusinessDataServiceHelper.load(nckd_er_prepaybill_ext,"id",new QFilter[] {nckd_yfjkFilter});
+                        //循环数组获取结算状态,已结算金额,未结算金额
+                        for (int d=0;d<yfjkDynamicObjects.length;d++) {
+                            //预付借款单头数据包
+                            DynamicObject yfjkInfo = BusinessDataServiceHelper.loadSingle(yfjkDynamicObjects[i].getPkValue(), yfjkDynamicObjects[i].getDynamicObjectType().getName());
+                            //循环预付借款单预付借款信息分录
+                            for (DynamicObject entryentity : yfjkInfo.getDynamicObjectCollection("expenseentryentity")) {
+                                //获取分录实付金额
+                                BigDecimal nckd_amountfield4 = yfjkMap.get(entryentity.getLong("id")) == null ? BigDecimal.ZERO:yfjkMap.get(entryentity.getLong("id"));
+                                //获取未结算金额
+                                BigDecimal nckd_amountfield3 = entryentity.getBigDecimal("nckd_amountfield3");
+                                nckd_amountfield3 = nckd_amountfield3.subtract(nckd_amountfield4);
+                                //反写分录已结算金额,未结算金额
+                                entryentity.set("nckd_amountfield4",nckd_amountfield4);
+                                entryentity.set("nckd_amountfield3",nckd_amountfield3);
+                            }
+                            yfjkInfo.set("billstatus", "G");
+                            SaveServiceHelper.save(new DynamicObject[]{yfjkInfo});
+                        }
                     }
-                    //结算字段赋值
-                    settleMethod(gzInfo,"settlestatus","settleamount","unsettleamount",totalSettledamt,totalUnsettledamt);
-                    SaveServiceHelper.save(new DynamicObject[]{gzInfo});
                 }
             }//应付方向的回写
             else if (bxDynamicObjects.length > 0) {
@@ -96,64 +114,7 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
                 for (int c=0;c<bxDynamicObjects.length;c++) {
                     //报销单头数据包
                     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");
-                    //已结算金额
-                    BigDecimal totalSettledamt = BigDecimal.ZERO;
-                    //未结算金额
-                    BigDecimal totalUnsettledamt = BigDecimal.ZERO;
-                    //循环报销单收款信息分录
-                    for (DynamicObject entryentity : bxInfo.getDynamicObjectCollection("accountentry")) {
-                        //获取分录收款金额
-                        BigDecimal settledamt = amountMap.get(entryentity.getString("id")) == null ? BigDecimal.ZERO:amountMap.get(entryentity.getString("id"));
-                        //获取未结算金额
-                        BigDecimal unsettledamt = entryentity.getBigDecimal("nckd_unsettleamount_et");
-                        unsettledamt = unsettledamt.subtract(settledamt);
-                        //反写分录已结算金额,未结算金额
-                        entryentity.set("nckd_settleamount_et",settledamt);
-                        entryentity.set("nckd_unsettleamount_et",unsettledamt);
-                        totalSettledamt = totalSettledamt.add(settledamt);
-                        totalUnsettledamt = totalUnsettledamt.add(unsettledamt);
-                    }
-                    if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) == 0) {
-                        bxInfo.set("nckd_settlestatus", SettlementStatusEnum.已结算.getValue());
-                        bxInfo.set("nckd_settleamount", totalSettledamt);
-                        bxInfo.set("nckd_unsettleamount", totalUnsettledamt);
-                    } else if (totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0 && totalSettledamt.compareTo(BigDecimal.ZERO) == 0) {
-                        bxInfo.set("nckd_settlestatus", SettlementStatusEnum.未结算.getValue());
-                        bxInfo.set("nckd_settleamount", totalSettledamt);
-                        bxInfo.set("nckd_unsettleamount", totalUnsettledamt);
-                    } else if (totalSettledamt.compareTo(BigDecimal.ZERO) > 0 && totalUnsettledamt.compareTo(BigDecimal.ZERO) > 0) {
-                        bxInfo.set("nckd_settlestatus", SettlementStatusEnum.部分结算.getValue());
-                        bxInfo.set("nckd_settleamount", totalSettledamt);
-                        bxInfo.set("nckd_unsettleamount", totalUnsettledamt);
-                    }
-                    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 (!StringUtils.isEmpty(nckd_sourcebillid)) {
                         //获取合同台账单id
@@ -164,34 +125,6 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
                         for (int j=0;j<htDynamicObjects.length;j++) {
                             //合同台账单头数据包
                             DynamicObject htInfo = BusinessDataServiceHelper.loadSingle(htDynamicObjects[i].getPkValue(), htDynamicObjects[i].getDynamicObjectType().getName());
-                            //未结算金额
-                            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", nckd_settleamount);
-                                htInfo.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", BigDecimal.ZERO);
-                                htInfo.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", nckd_settleamount);
-                                htInfo.set("nckd_unsettleamount", nckd_unsettleamount);
-                            }
-
                             //反写付款明细
                             DynamicObjectCollection entryEntity = htInfo.getDynamicObjectCollection("nckd_payentry");
                             DynamicObject entry1 = entryEntity.addNew();
@@ -199,7 +132,6 @@ public class PaymentProcessOpPlugin extends AbstractOperationServicePlugIn {
                             entry1.set("nckd_pay_id1", id);//付款处理单据id
                             entry1.set("nckd_amountfield1", actpayamt);//付款金额
                             entry1.set("nckd_timefield2", paydate);//付款日期
-
                             SaveServiceHelper.save(new DynamicObject[]{htInfo});
                         }
                     }

+ 1 - 0
src/main/java/fi/fa/opplugin/RealCardF7OpPlugin.java

@@ -50,6 +50,7 @@ public class RealCardF7OpPlugin extends AbstractFormPlugin implements BeforeF7Se
             QFilter qFilter = new QFilter("nckd_orgfield.id", QCP.equals, assetunit.getLong("id"));
             // 表过滤条件
             ListShowParameter showParameter = (ListShowParameter)arg0.getFormShowParameter();
+            showParameter.setShowApproved(false);
             showParameter.getListFilterParameter().setFilter(qFilter);
         }
     }