Browse Source

发货单区分批次商品和非批次商品的库存

hu 1 year ago
parent
commit
7207559572

+ 5 - 4
src/custom/restcontroller/webmanage/sale/dispatch/SQL/商品发货数量汇总.sql

@@ -1,6 +1,7 @@
 SELECT  t3.itemno,
-        SUM(t1.qty-ifnull(t1.outwarehouseqty,0)) qty
+        ifnull(t1.batchno,'') batchno
+    SUM(t1.qty-ifnull(t1.outwarehouseqty,0)) qty
 FROM sa_dispatch_items t1
-         inner join sa_dispatch t2 on t1.siteid = t2.siteid and t1.sa_dispatchid = t2.sa_dispatchid
-         left join plm_item t3 on t1.siteid = t3.siteid and t1.itemid = t3.itemid
-WHERE t2.STATUS in ('审核','复核') and t1.siteid=$siteid$ and t3.itemno in $itemno$ group by t3.itemno
+    inner join sa_dispatch t2 on t1.siteid = t2.siteid and t1.sa_dispatchid = t2.sa_dispatchid
+    left join plm_item t3 on t1.siteid = t3.siteid and t1.itemid = t3.itemid
+WHERE t2.STATUS in ('审核','复核') and t1.siteid=$siteid$ and t3.itemno in $itemno$ group by t3.itemno,ifnull(t1.batchno,'')

+ 18 - 6
src/custom/restcontroller/webmanage/sale/dispatch/dispatch.java

@@ -721,7 +721,7 @@ public class dispatch extends Controller {
 
         Rows rowscurrentDispatchDetail = dbConnect.runSqlQuery("select sum(t1.qty) qty,t1.sa_orderitemsid,t1.siteid,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 + " group by t1.sa_orderitemsid,t1.siteid,t2.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");
+        Rows rowsDispatchDetailGroupByItem = dbConnect.runSqlQuery("select sum(t1.qty) qty,t2.itemno,ifnull(t1.batchno,'') batchno,0 invbalqty 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,ifnull(t1.batchno,'')");
         RowsMap rowsMapDispatchDetailGroupByItem = rowsDispatchDetailGroupByItem.toRowsMap("itemno");
 
         if (siteid.equalsIgnoreCase("lsa") && Parameter.get(siteid, "dispatchinstock").equals("1")) {
@@ -777,7 +777,7 @@ public class dispatch extends Controller {
             if (!erpDocking.getUrl().isEmpty()) {
                 JSONArray jsonArray = erpDocking.getErpIcinvbalRows(200000, 1, rowsDispatchDetail.toJsonArray("itemno"));
 
-                Rows rowsDispatchDetailBatchno = dbConnect.runSqlQuery("select t2.itemno,t1.batchno from sa_dispatch_items t1 inner join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.batchno!='' and t1.sa_dispatchid=" + sa_dispatchid);
+                Rows rowsDispatchDetailBatchno = dbConnect.runSqlQuery("select t2.itemno,t1.batchno from sa_dispatch_items t1 inner join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where ifnull(t1.batchno,'')!='' and t1.sa_dispatchid=" + sa_dispatchid);
 
                 for(Row row :rowsDispatchDetailBatchno){
                     JSONArray jsonArray1 =new JSONArray();
@@ -786,10 +786,20 @@ public class dispatch extends Controller {
                     if(jsonArrayBatch.isEmpty()){
                         return getErrReturnObject().setErrMsg(row.getString("itemno")+"批号有误,请重新选择!!")
                                 .toString();
+                    }else{
+                        if (rowsMapDispatchDetailGroupByItem.containsKey(row.getString("itemno"))) {
+                            if (rowsMapDispatchDetailGroupByItem.get(row.getString("fitemno")).isNotEmpty()) {
+                                for(Row row1 : rowsMapDispatchDetailGroupByItem.get(row.getString("fitemno"))){
+                                    if(row1.getString("batchno").equals(row.getString("batchno"))){
+                                        row1.put("invbalqty", ((JSONObject)jsonArrayBatch.get(0)).getBigDecimalValue("fqty"));
+                                    }
+                                }
+                            }
+                        }
                     }
 
 
-               }
+                }
 
                 SQLFactory sqlFactory1 = new SQLFactory(this, "商品发货数量汇总");
                 sqlFactory1.addParameter("siteid", siteid);
@@ -801,9 +811,11 @@ public class dispatch extends Controller {
                     JSONObject jsonObject = (JSONObject) obj;
                     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 {
-                            rowsMapDispatchDetailGroupByItem.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", 0);
+                            for(Row row : rowsMapDispatchDetailGroupByItem.get(jsonObject.getString("fitemno"))){
+                                if(StringUtils.isBlank(row.getString("batchno"))){
+                                    row.put("invbalqty", jsonObject.getBigDecimalValue("fqty"));
+                                }
+                            }
                         }
                     }
                 }

+ 34 - 4
src/custom/restcontroller/webmanage/sale/dispatch/dispatchItems.java

@@ -285,6 +285,20 @@ public class dispatchItems extends Controller {
         sqlFactory1.addParameter("siteid", siteid);
         sqlFactory1.addParameter_in("itemno", rows.toArrayList("itemno", new ArrayList<>()));
         Rows sumQtyRows = dbConnect.runSqlQuery(sqlFactory1);
+        if(!siteid.equalsIgnoreCase("lsa")){
+            for(Row row : sumQtyRows){
+                if(StringUtils.isNotBlank(row.getString("batchno"))){
+                    JSONArray jsonArray1 =new JSONArray();
+                    jsonArray1.add(row.getString("itemno"));
+                    JSONArray jsonArrayBatch = erpDocking.getErpIcinvbalBatchRowsforbatchno(20000, 1, jsonArray1,row.getString("batchno"));
+                    if(!jsonArrayBatch.isEmpty()){
+                        row.put("delinvbalqty", ((JSONObject)jsonArrayBatch.get(0)).getBigDecimalValue("fqty").subtract(row.getBigDecimal("qty")));
+                    }else{
+                        row.put("delinvbalqty", row.getBigDecimal("qty").negate());
+                    }
+                }
+            }
+        }
         RowsMap sumQtyRowsMap = sumQtyRows.toRowsMap("itemno");
 
         if (!jsonArray.isEmpty()) {
@@ -295,16 +309,32 @@ public class dispatchItems extends Controller {
                     if (rowsMap.get(jsonObject.getString("fitemno")).isNotEmpty()) {
                         if (sumQtyRowsMap.containsKey(jsonObject.getString("fitemno"))) {
                             if(siteid.equalsIgnoreCase("lsa")){
-                                rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("FQty").subtract(sumQtyRowsMap.get(jsonObject.getString("fitemno")).get(0).getBigDecimal("qty")));
+                                for(Row row :rowsMap.get(jsonObject.getString("fitemno"))){
+                                    row.put("delinvbalqty", jsonObject.getBigDecimalValue("FQty").subtract(row.getBigDecimal("qty")));
+                                }
+                                //rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("FQty").subtract(sumQtyRowsMap.get(jsonObject.getString("fitemno")).get(0).getBigDecimal("qty")));
                             }else{
-                                rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("fqty").subtract(sumQtyRowsMap.get(jsonObject.getString("fitemno")).get(0).getBigDecimal("qty")));
+                                for(Row row :rowsMap.get(jsonObject.getString("fitemno"))){
+                                    if(StringUtils.isBlank(row.getString("batchno"))){
+                                        row.put("delinvbalqty", jsonObject.getBigDecimalValue("fqty").subtract(row.getBigDecimal("qty")));
+                                    }
+                                }
+                                //rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("fqty").subtract(sumQtyRowsMap.get(jsonObject.getString("fitemno")).get(0).getBigDecimal("qty")));
                             }
 
                         } else {
                             if(siteid.equalsIgnoreCase("lsa")){
-                                rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("FQty"));
+                                for(Row row :rowsMap.get(jsonObject.getString("fitemno"))){
+                                    row.put("delinvbalqty", jsonObject.getBigDecimalValue("FQty"));
+                                }
+                                //rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("FQty"));
                             }else{
-                                rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("fqty"));
+                                for(Row row :rowsMap.get(jsonObject.getString("fitemno"))){
+                                    if(StringUtils.isBlank(row.getString("batchno"))){
+                                        row.put("delinvbalqty", jsonObject.getBigDecimalValue("fqty"));
+                                    }
+                                }
+                                //rowsMap.get(jsonObject.getString("fitemno")).get(0).put("delinvbalqty", jsonObject.getBigDecimalValue("fqty"));
                             }
 
                         }