Browse Source

NPO问题处理

chenkang11 1 month ago
parent
commit
2ecf5d1483

+ 68 - 4
mjava-ts/src/main/java/com/malk/taisen/service/impl/NonPoServerImpl.java

@@ -368,6 +368,7 @@ public class NonPoServerImpl implements NonPoServer {
                 sapJson.put("ZINVOICE_AMT", dataForm.get("numberField_mejfoook_value").equals("") ? "0" : dataForm.get("numberField_mejfoook_value"));//发票总额
             }
 
+
             sapJson.put("BANKA", dataForm.get("textField_mejfoon9")); //开户行
             sapJson.put("BLDAT", CusutUtil.getFormatDate((Long) dataForm.get("dateField_l9nsavm3"))); //凭证日期ƒ   Date / 申请日期
             String uid = "TEST-CN001";
@@ -491,7 +492,7 @@ public class NonPoServerImpl implements NonPoServer {
 
                 }
                 sapJson.put("ITEM", itemArray);
-            } else if (dataForm.get("selectField_mejfoona").equals("100%清预付款") || dataForm.get("selectField_mejfoona").equals("100%清收据") ) {
+            } else if (dataForm.get("selectField_mejfoona").equals("100%清预付款")) {
                 String XREF1 = "";
                 String XREF2 = "";
                 /***
@@ -554,14 +555,77 @@ public class NonPoServerImpl implements NonPoServer {
                         itemObj.put("MWSKZ", String.valueOf(row.get("textField_l7a6bzpv")));///税码
                         itemObj.put("ZTAX_AMT", String.valueOf(row.get("numberField_memejxqp")).equals("") ? "0" : String.valueOf(row.get("numberField_memejxqp")));  //税额
                         itemObj.put("SGTXT", String.valueOf(row.get("textField_mejfoonz")));  //行项目文本
-
-
                         itemArray.put(itemObj);
                     }
 
 
                 }
 
+                sapJson.put("ITEM", itemArray);
+            } else if (dataForm.get("selectField_mejfoona").equals("100%清收据")) {
+                String XREF1 = "";
+                String XREF2 = "";
+                /***
+                 *  获取参考代码1 2
+                 */
+
+                List<Map<String, Object>> XREFlist = (List<Map<String, Object>>) dataForm.get("tableField_mi8q495e");
+
+                if (XREFlist != null && !XREFlist.isEmpty()) {
+                    if (XREFlist.size() == 1) {
+                        Map<String, Object> row = XREFlist.get(0);
+                        XREF1 = row.get("textField_mi8q495f") != null ? row.get("textField_mi8q495f").toString() : "";
+                    } else {
+                        // 多于一条,按时间戳降序排序
+                        XREFlist.sort((a, b) -> {
+                            Long timeA = a.get("dateField_mj13wpls") instanceof Number
+                                    ? ((Number) a.get("dateField_mj13wpls")).longValue()
+                                    : 0L;
+                            Long timeB = b.get("dateField_mj13wpls") instanceof Number
+                                    ? ((Number) b.get("dateField_mj13wpls")).longValue()
+                                    : 0L;
+                            return Long.compare(timeB, timeA); // 降序:最新在前
+                        });
+
+                        // 取前两条
+                        XREF1 = XREFlist.get(0).get("textField_mi8q495f") != null
+                                ? XREFlist.get(0).get("textField_mi8q495f").toString() : "";
+                        XREF2 = XREFlist.get(1).get("textField_mi8q495f") != null
+                                ? XREFlist.get(1).get("textField_mi8q495f").toString() : "";
+                    }
+                }
+
+                sapJson.put("BLART", "Z2");//凭证类型
+                JSONArray itemArray = new JSONArray();
+                int x = 1;//OA单据行号累计用
+                List<Map<String, Object>> tableFils = (List<Map<String, Object>>) dataForm.get("tableField_mi7c3wl9");
+                if (tableFils != null && tableFils.size() > 0) {
+                    for (int n = 0; n < tableFils.size(); n++) {
+                        Map<String, Object> row = new HashMap(tableFils.get(n));
+                        JSONObject itemObj = new JSONObject();
+                        itemObj.put("KOSTL", String.valueOf(row.get("textField_mi7c3wku"))); //成本中心
+                        itemObj.put("DMBTR", String.valueOf(row.get("numberField_mi7c3wky_value")));  //不含税金额
+                        itemObj.put("XREF1", XREF1);//参考码1
+                        itemObj.put("XREF2", XREF2);//参考码2
+                        String sjItemNo = "";
+                        if (x < 10) {
+                            sjItemNo += "00" + x;
+                        } else if (x < 100) {
+                            sjItemNo += "0" + x;
+                        } else {
+                            sjItemNo += x;
+                        }
+                        x++;
+                        itemObj.put("ZOA_ITEMNO", sjItemNo);//OA单据行号
+                        itemObj.put("HKONT", String.valueOf(row.get("textField_mi7c3wl5"))); //会计科目
+                        itemObj.put("ZTAXOUT_AMT", "0");//进项税转出金额  、、、 String.valueOf(row.get("numberField_l6bx7hqk_value"))
+                        itemObj.put("MWSKZ", "");///税码
+                        itemObj.put("ZTAX_AMT", "0");  //税额
+                        itemObj.put("SGTXT", String.valueOf(row.get("textField_mi7c3wkn")));  //行项目文本
+                        itemArray.put(itemObj);
+                    }
+
+                }
                 sapJson.put("ITEM", itemArray);
             }
 
@@ -601,7 +665,7 @@ public class NonPoServerImpl implements NonPoServer {
                             /**
                              * 执行勾选发票
                              */
-                            if (dataForm.get("selectField_mejfoona").equals("发票支付") || dataForm.get("selectField_mejfoona").equals("100%清预付款") ||dataForm.get("selectField_mejfoona").equals("100%清收据")) {
+                            if (dataForm.get("selectField_mejfoona").equals("发票支付") || dataForm.get("selectField_mejfoona").equals("100%清预付款")) {
                                 FPGX(InstanceId, voucherNumber, (String) dataForm.get("textField_mi73dy3n"));
                             }
                         } else {