Procházet zdrojové kódy

优化凭证同步

wangjun před 1 měsícem
rodič
revize
bdf1f98c4a

+ 37 - 27
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/mservice/SyncSapFIUtils.java

@@ -74,14 +74,22 @@ public class SyncSapFIUtils {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
 
         //账套代码
-        String ZZTM = "FDZT";  //法定账套
+        //String ZZTM = "FDZT";  //法定账套
         //公司代码
-        String BUKRS = voucher.getString("org.number");
+        //String BUKRS = voucher.getString("org.number");
         //币制代码
         String WAERS = StringUtils.isEmpty(voucher.getString("entries.currency.number")) ? "" : voucher.getString("entries.currency.number");
-        //凭证摘要
-        String BKTXT = StringUtils.isEmpty(voucher.getString("description")) ?  "" :  voucher.getString("description");
-
+        //上游单据编号
+        String BKTXT = "";
+        String ZUONR = ""; 
+        String billtype = voucher.getString("sourcebilltype");
+        if(StringUtils.isNotEmpty(billtype)) {
+            String sourcebill = voucher.getString("sourcebill");
+            //上游单据编号
+            DynamicObject sourcebillDyn = BusinessDataServiceHelper.loadSingle(sourcebill, billtype);
+            BKTXT = sourcebillDyn.getString("billno");
+            ZUONR = BKTXT;
+        }
         String BUZEI = voucher.getString("entries.seq"); //凭证条目
         String HKONT = voucher.getString("entries.account.number"); //科目
         int entrydc = voucher.getInt("entries.entrydc"); //凭证方向  1 借贷方  -1 贷方
@@ -92,7 +100,10 @@ public class SyncSapFIUtils {
             DMBTR = voucher.getBigDecimal("entries.debitlocal"); //本币金额
         }else if((entrydc == -1)){
             WRBTR = voucher.getBigDecimal("entries.creditori");  //原币金额
-            DMBTR = voucher.getBigDecimal("entries.creditlocal"); //本币金额
+            DMBTR = voucher.getBigDecimal("entries.creditlocal"); //本币金额            
+        }
+        if(WRBTR.compareTo(BigDecimal.ZERO) == 0){
+            WRBTR = DMBTR;
         }
 
         String SGTXT = StringUtils.isEmpty(voucher.getString("entries.edescription")) ? "" : voucher.getString("entries.edescription"); //凭证行项目文本
@@ -103,11 +114,8 @@ public class SyncSapFIUtils {
         String RSTGR = ""; //现金流量项目
         String LIFNR = ""; //供应商
         String VBUND = "";
-        String ZFBDT = "";
-        Date expiredate = voucher.getDate("entries.expiredate");
-        if(expiredate != null){
-            ZFBDT = sdf.format(expiredate); //到期日
-        }
+        String ZFBDT = sdf.format(voucher.getDate(GlVoucherConstantInfo.BOOKEDDATE));  //到期日 取记账日期
+
         String XREF1 = getXREF1(HKONT);  //凭证辅助项1
         String XREF2 = "";
         String XREF3 = "";
@@ -140,8 +148,8 @@ public class SyncSapFIUtils {
 
         JSONObject ENTRYITEMINFO = new JSONObject();
 
-        ENTRYITEMINFO.put("BKTXT", BKTXT); //凭证摘要
-        ENTRYITEMINFO.put("ZZTM", ZZTM);   //账套代码
+        ENTRYITEMINFO.put("BKTXT", BKTXT); //上游单据编号
+        ENTRYITEMINFO.put("ZUONR", ZUONR); //凭证参考号
         ENTRYITEMINFO.put("BUZEI", BUZEI); //凭证条目
         ENTRYITEMINFO.put("HKONT", HKONT); //科目
         ENTRYITEMINFO.put("PRCTR", PRCTR); //成本中心
@@ -186,23 +194,25 @@ public class SyncSapFIUtils {
         String BLDAT = sdf.format(voucher.getDate(GlVoucherConstantInfo.BIZDATE));
         //凭证日期
         String BUDAT = sdf.format(voucher.getDate(GlVoucherConstantInfo.BOOKEDDATE));
-        //凭证摘要
-        //String BKTXT = StringUtils.isEmpty(voucher.getString("description")) ?  "" :  voucher.getString("description");
         //业务类型
         String BLART = "";
+        String BKTXT = "";
+        String sourcebill = "";
         String billtype = voucher.getString("sourcebilltype");
-        switch (billtype) {
-            case "er_publicreimbursebill":
-                BLART = "BX";
-                break;
-            default:
-                BLART = "BX";
-                break;
+        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");
         }
-        String sourcebill = voucher.getString("sourcebill");
-
-        DynamicObject sourcebillDyn = BusinessDataServiceHelper.loadSingle(sourcebill, billtype);
-        String BKTXT = sourcebillDyn.getString("billno");
 
         String XBLNR = StringUtils.isEmpty(voucher.getString("entries.edescription")) ? "" : voucher.getString("entries.edescription"); //凭证行项目文本
 
@@ -213,7 +223,7 @@ public class SyncSapFIUtils {
         HEADERITEMINFO.put(SAPParamHelper.WAERS, WAERS); //币种
         HEADERITEMINFO.put(SAPParamHelper.BLDAT, BLDAT); //业务日期
         HEADERITEMINFO.put(SAPParamHelper.BUDAT, BUDAT); //凭证日期
-        HEADERITEMINFO.put(SAPParamHelper.BKTXT, BKTXT); //凭证摘要
+        HEADERITEMINFO.put(SAPParamHelper.BKTXT, BKTXT); //上游单据编号
         HEADERITEMINFO.put(SAPParamHelper.USNAM, USNAM); //创建人
         HEADERITEMINFO.put(SAPParamHelper.BLART, BLART); //业务类型
         HEADERITEMINFO.put(SAPParamHelper.XBLNR, XBLNR); //外部凭证编号