Ver código fonte

凭证同步,当借方和贷方全部都是银行科目,默认值金流量项目999

turborao 4 dias atrás
pai
commit
0bb9445637

+ 15 - 19
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/mservice/SyncSapFIUtils.java

@@ -101,14 +101,16 @@ public class SyncSapFIUtils {
         String billtype = voucher.getString("sourcebilltype");
         if(StringUtils.isNotEmpty(billtype)) {
             String sourcebill = voucher.getString("sourcebill");
-            //上游单据编号
-            DynamicObject sourcebillDyn = BusinessDataServiceHelper.loadSingle(sourcebill, billtype);
-            BKTXT = sourcebillDyn.getString("billno");
-            //如果有上游单据有合同号,需要取出合同号  当单据类型为对公报错单,或者预付单 时
-            if (billtype.equals("er_publicreimbursebill") || billtype.equals("er_prepaybill")) {
-                String contractcode = sourcebillDyn.getString("contractsconn");
-                if(StringUtils.isNotEmpty(contractcode)) {
-                    ZUONR = contractcode;
+            if(StringUtils.isNotEmpty(sourcebill) && !sourcebill.equals("0")) {
+                //上游单据编号
+                DynamicObject sourcebillDyn = BusinessDataServiceHelper.loadSingle(sourcebill, billtype);
+                BKTXT = sourcebillDyn.getString("billno");
+                //如果有上游单据有合同号,需要取出合同号  当单据类型为对公报错单,或者预付单 时
+                if (billtype.equals("er_publicreimbursebill") || billtype.equals("er_prepaybill")) {
+                    String contractcode = sourcebillDyn.getString("contractsconn");
+                    if (StringUtils.isNotEmpty(contractcode)) {
+                        ZUONR = contractcode;
+                    }
                 }
             }
         }
@@ -226,18 +228,12 @@ public class SyncSapFIUtils {
         String sourcebill = "";
         String billtype = voucher.getString("sourcebilltype");
         if(StringUtils.isNotEmpty(billtype)) {
-//            switch (billtype) {
-//                case "er_publicreimbursebill":
-//                    BLART = "BX";
-//                    break;
-//                default:
-//                    BLART = "BX";
-//                    break;
-//            }
             sourcebill = voucher.getString("sourcebill");
-            //上游单据编号
-            DynamicObject sourcebillDyn = BusinessDataServiceHelper.loadSingle(sourcebill, billtype);
-            BKTXT = sourcebillDyn.getString("billno");
+            if(StringUtils.isNotEmpty(sourcebill) && !sourcebill.equals("0")) {
+                //上游单据编号
+                DynamicObject sourcebillDyn = BusinessDataServiceHelper.loadSingle(sourcebill, billtype);
+                BKTXT = sourcebillDyn.getString("billno");
+            }
 
         }
 

+ 19 - 2
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/mservice/impl/SynSapFIServiceImpl.java

@@ -17,6 +17,7 @@ import nckd.jimin.jyyy.fi.mservice.SynSapService;
 import nckd.jimin.jyyy.fi.mservice.SyncSapFIUtils;
 
 import java.util.*;
+import java.util.stream.Collectors;
 
 
 /**
@@ -57,7 +58,8 @@ public class SynSapFIServiceImpl implements SynSapService {
             String maincfitemNumber = "";
             String projectNumber = "";
             String voucherInfo = "";
-            //List<String> cashBillIDs =  new ArrayList<>();
+            List<String> accuntNumberList =  new ArrayList<>();
+            boolean isBankAccount = false;
             /**
              * 先循环凭证,取出现金流量项目编码,因为不知道他在哪一行,所以先循环凭证表头,取现金流量项目编码
              * SAP 现金流量项目编码 在现金科目行上,苍穹的不在现金科目行上
@@ -71,11 +73,26 @@ public class SynSapFIServiceImpl implements SynSapService {
                 if (StringUtils.isNotEmpty(auxpropertiesMap.get("bd_project"))) {
                     projectNumber = auxpropertiesMap.get("bd_project");
                 }
+
+                accuntNumberList.add(voucherRow.getString("entries.account.number"));
+
+            }
+            /**
+             * 当借方和贷方全部都是银行科目,星瀚是不用填写现金流量项目的
+             * 此处需要增加现金流量项目编码的默认值 999
+             */
+            if (StringUtils.isEmpty(maincfitemNumber)) {
+                // 检查每个字符串的前四位字符是否都等于指定的前缀
+                long count1 = accuntNumberList.stream().filter(s -> s.startsWith("1002")).count();
+
+               if (count1 == accuntNumberList.size()) {
+                   maincfitemNumber = "999";
+               }
             }
 
             //voucherDyns 凭证表头与分录平铺
             for (DynamicObject voucherRow : voucherDyns) {
-                String billid = voucherRow.getString("id");
+                //String billid = voucherRow.getString("id");
                 String companyCode = voucherRow.getString("org.number");
 
                 voucherInfo = companyCode + "|" + voucherRow.getString("vouchertype.name") + "|" + voucherRow.getString("billno");