ソースを参照

发货单复核增加判断条件,可用量(发货单复核需满足库存可用量的条件下)

hu 2 年 前
コミット
26f0d48de8
1 ファイル変更23 行追加23 行削除
  1. 23 23
      src/custom/restcontroller/webmanage/sale/dispatch/dispatch.java

+ 23 - 23
src/custom/restcontroller/webmanage/sale/dispatch/dispatch.java

@@ -740,7 +740,10 @@ public class dispatch extends Controller {
         Rows rowsOrderDetail = dbConnect.runSqlQuery("select t1.undeliqty,t1.deliedqty,t1.qty,t1.sa_orderitemsid from sa_orderitems t1 where t1.sa_orderitemsid in (select sa_orderitemsid from sa_dispatch_items where sa_dispatchid=" + sa_dispatchid + ")");
         RowsMap rowsMap = rowsOrderDetail.toRowsMap("sa_orderitemsid");
         Rows rowsDispatchDetail = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t1.rowno,t2.itemname,t2.itemno from sa_dispatch_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_dispatchid=" + sa_dispatchid);
-        RowsMap rowsMapDispatchDetail = rowsDispatchDetail.toRowsMap("itemno");
+
+
+        Rows rowsDispatchDetailGroupByItem = dbConnect.runSqlQuery("select sum(t1.qty) qty,t2.itemno from sa_dispatch_items t1 inner join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_dispatchid=" + sa_dispatchid+" group by t2.itemno");
+        RowsMap rowsMapDispatchDetailGroupByItem = rowsDispatchDetailGroupByItem.toRowsMap("itemno");
 
         JSONObject object = new JSONObject();
         object.put("classname", "getIcinvbal");
@@ -765,25 +768,33 @@ public class dispatch extends Controller {
 
         for (Object obj : jsonArray) {
             JSONObject jsonObject = (JSONObject) obj;
-            if (rowsMapDispatchDetail.containsKey(jsonObject.getString("fitemno"))) {
-                if (rowsMapDispatchDetail.get(jsonObject.getString("fitemno")).isNotEmpty()) {
-                    rowsMapDispatchDetail.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", jsonObject.getBigDecimalValue("FQty"));
+            if (rowsMapDispatchDetailGroupByItem.containsKey(jsonObject.getString("fitemno"))) {
+                if (rowsMapDispatchDetailGroupByItem.get(jsonObject.getString("fitemno")).isNotEmpty()) {
+                    rowsMapDispatchDetailGroupByItem.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", jsonObject.getBigDecimalValue("FQty"));
                 } else {
-                    rowsMapDispatchDetail.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", 0);
+                    rowsMapDispatchDetailGroupByItem.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", 0);
                 }
             }
         }
 
-
-        if (!rowsDispatchDetail.isEmpty()) {
-            for (Row row : rowsDispatchDetail) {
-                System.out.println(Parameter.get(siteid, "dispatchinstock"));
-                System.out.println(Parameter.get(siteid, "dispatchinstock").equals("1"));
-                if (sumQtyRowsMap.containsKey(row.getString("fitemno"))) {
-                   row.put("delinvbalqty", (row.containsKey("invbalqty")?row.getBigDecimal("invbalqty"):BigDecimal.ZERO).subtract(sumQtyRowsMap.get(row.getString("fitemno")).get(0).getBigDecimal("qty")));
+        if (Parameter.get(siteid, "dispatchinstock").equals("1")) {
+            for (Row row : rowsDispatchDetailGroupByItem) {
+                if (sumQtyRowsMap.containsKey(row.getString("itemno"))) {
+                    row.put("delinvbalqty", (row.containsKey("invbalqty")?row.getBigDecimal("invbalqty"):BigDecimal.ZERO).subtract(sumQtyRowsMap.get(row.getString("fitemno")).get(0).getBigDecimal("qty")));
                 } else {
                     row.put("delinvbalqty", row.containsKey("invbalqty")?row.getBigDecimal("invbalqty"):BigDecimal.ZERO);
                 }
+
+                if (row.getBigDecimal("qty").compareTo(row.getBigDecimal("delinvbalqty")) > 0) {
+                    return getErrReturnObject().setErrMsg("发货商品"+row.getString("itemno")+",库存不足,无法操作复核!")
+                            .toString();
+                }
+            }
+        }
+
+
+        if (!rowsDispatchDetail.isEmpty()) {
+            for (Row row : rowsDispatchDetail) {
                 if (rowsMap.get(row.getString("sa_orderitemsid")).isEmpty()) {
                     return getErrReturnObject().setErrMsg("行号为:【" + row.getString("rowno") + "】的发货单明细不存在对应得订单行,无法复核")
                             .toString();
@@ -792,17 +803,6 @@ public class dispatch extends Controller {
                     return getErrReturnObject().setErrMsg("行号为:【" + row.getString("rowno") + "】的发货单明细的数量大于对应订单行的未发货数量,无法复核")
                             .toString();
                 }
-
-                if (Parameter.get(siteid, "dispatchinstock").equals("1")) {
-
-
-                    if (row.getBigDecimal("qty").compareTo(row.getBigDecimal("delinvbalqty")) > 0) {
-                        return getErrReturnObject().setErrMsg("行号为:【" + row.getString("rowno") + "】的发货单明细的数量大于erp的库存数量,无法复核")
-                                .toString();
-                    }
-                }
-
-
                 sqlList.add("update sa_orderitems set undeliqty=" + rowsMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("undeliqty").subtract(row.getBigDecimal("qty")) + ",deliedqty=" + (row.getBigDecimal("qty").add(rowsMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("deliedqty"))) + " where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
             }
         } else {