Browse Source

k3对接内容完善(待测试)

hu 2 years ago
parent
commit
0db334dd1d

+ 11 - 11
src/custom/restcontroller/sale/aftersalesmag/aftersalesmag.java

@@ -168,10 +168,10 @@ public class aftersalesmag extends Controller {
         ArrayList<String> sqlList = new ArrayList<>();
 
         for (Row row : sa_aftersalesmag_itemsRows) {
-            BigDecimal returnqty = row.getBigDecimal("qty");
-            if(rows.get(0).getString("type").equals("退货单")){
-                sqlList.add("update sa_orderitems set returnqty=returnqty+" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
-            }
+//            BigDecimal returnqty = row.getBigDecimal("qty");
+//            if(rows.get(0).getString("type").equals("退货单")){
+//                sqlList.add("update sa_orderitems set returnqty=returnqty+" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
+//            }
             Rows sumamountrows = dbConnect.runSqlQuery("select sum(amount) sumamount from sa_aftersalesmag_items where sa_aftersalesmagid=" + sa_aftersalesmagid + " and siteid = '" + siteid + "'");
             if (!sumamountrows.isEmpty()) {
                 sqlList.add("update sa_aftersalesmag set returnamount=" + sumamountrows.get(0).getBigDecimal("sumamount") + " where sa_aftersalesmagid=" + sa_aftersalesmagid);
@@ -210,13 +210,13 @@ public class aftersalesmag extends Controller {
         }
 
         ArrayList<String> sqlList = new ArrayList<>();
-        Rows sa_aftersalesmag_itemsRows = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t2.itemno,t2.itemname from sa_aftersalesmag_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_aftersalesmagid=" + sa_aftersalesmagid);
-        for (Row row : sa_aftersalesmag_itemsRows) {
-            BigDecimal returnqty = row.getBigDecimal("qty");
-            if(rows.get(0).getString("type").equals("退货单")){
-                sqlList.add("update sa_orderitems set returnqty=returnqty-" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
-            }
-        }
+//        Rows sa_aftersalesmag_itemsRows = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t2.itemno,t2.itemname from sa_aftersalesmag_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_aftersalesmagid=" + sa_aftersalesmagid);
+//        for (Row row : sa_aftersalesmag_itemsRows) {
+//            BigDecimal returnqty = row.getBigDecimal("qty");
+//            if(rows.get(0).getString("type").equals("退货单")){
+//                sqlList.add("update sa_orderitems set returnqty=returnqty-" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
+//            }
+//        }
         SQLFactory sqlFactoryupdate = new SQLFactory(this, "返退单反提交");
         sqlFactoryupdate.addParameter("siteid", siteid);
         sqlFactoryupdate.addParameter("sa_aftersalesmagid", sa_aftersalesmagid);

+ 3 - 2
src/custom/restcontroller/webmanage/lsak3/stockbill/SQL/销售出库单明细新增.sql

@@ -1,4 +1,4 @@
-insert into st_stockbill_items (siteid, st_stockbill_itemsid,st_stockbillid, sa_dispatch_itemsid, rowno, itemid, qty,amount,remarks)
+insert into st_stockbill_items (siteid, st_stockbill_itemsid,st_stockbillid, sa_dispatch_itemsid, rowno, itemid, qty,amount,remarks,price)
 select $siteid$,
        $st_stockbill_itemsid$,
        $st_stockbillid$,
@@ -7,4 +7,5 @@ select $siteid$,
        $itemid$,
        $qty$,
        $amount$,
-       $remarks$
+       $remarks$,
+       $price$

+ 142 - 127
src/custom/restcontroller/webmanage/lsak3/stockbill/stockbill.java

@@ -129,6 +129,9 @@ public class stockbill extends Controller {
                 RowsMap itemRowsMap =rows.toRowsMap("itemno");
                 Rows distiptchRows = dbConnect.runSqlQuery("select t2.price,t1.sa_dispatch_itemsid from sa_dispatch_items t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid inner join sa_dispatch t3 on t1.sa_dispatchid=t3.sa_dispatchid and t1.siteid=t3.siteid  where t3.status in('审核','复核','关闭') and  t1.siteid='lsa1986' and  t1.sa_dispatch_itemsid in "+sa_dispatch_itemsids.toString().replace("[", "(").replace("]", ")"));
                 RowsMap distiptchRowsMap =distiptchRows.toRowsMap("sa_dispatch_itemsid");
+
+                Rows aftersalesmagRows = dbConnect.runSqlQuery("select t1.price,t1.sa_aftersalesmag_itemsid from sa_aftersalesmag_items t1  where  t1.siteid='lsa1986' and  t1.sa_aftersalesmag_itemsid in "+sa_dispatch_itemsids.toString().replace("[", "(").replace("]", ")"));
+                RowsMap aftersalesmagRowsMap =distiptchRows.toRowsMap("sa_aftersalesmag_itemsid");
                 BigDecimal amountTotal=BigDecimal.ZERO;
                 for (Object object:detailarray) {
                     JSONObject jsonObject = (JSONObject)object;
@@ -156,68 +159,79 @@ public class stockbill extends Controller {
                     sqlFactorydetail.addParameter("remarks", fdetailnotes);
                     sqlFactorydetail.addParameter("qty", fqty);
 
-                    if(distiptchRowsMap.containsKey(String.valueOf(sainvoicedetailid)) && distiptchRowsMap.get(sainvoicedetailid).isNotEmpty()){
-                        sqlFactorydetail.addParameter("price", distiptchRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price"));
-                        sqlFactorydetail.addParameter("amount", fqty.multiply(distiptchRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price")));
-                        amountTotal=amountTotal.add(fqty.multiply(distiptchRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price")));
-                        System.out.println(amountTotal);
+                    if(frb.equals("蓝")){
+                        if(distiptchRowsMap.containsKey(String.valueOf(sainvoicedetailid)) && distiptchRowsMap.get(sainvoicedetailid).isNotEmpty()){
+                            sqlFactorydetail.addParameter("price", distiptchRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price"));
+                            amountTotal=amountTotal.add(fqty.multiply(distiptchRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price")));
+                            sqlFactorydetail.addParameter("amount", fqty.multiply(distiptchRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price")));
+                            System.out.println(amountTotal);
+                        }else{
+                            sqlFactorydetail.addParameter("price", 0);
+                            sqlFactorydetail.addParameter("amount", 0);
+                        }
                     }else{
-                        sqlFactorydetail.addParameter("price", 0);
-                        sqlFactorydetail.addParameter("amount", 0);
+                        if(aftersalesmagRowsMap.containsKey(String.valueOf(sainvoicedetailid)) && aftersalesmagRowsMap.get(sainvoicedetailid).isNotEmpty()){
+                            sqlFactorydetail.addParameter("price", aftersalesmagRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price"));
+                            sqlFactorydetail.addParameter("amount", fqty.multiply(aftersalesmagRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price")));
+                        }else{
+                            sqlFactorydetail.addParameter("price", 0);
+                            sqlFactorydetail.addParameter("amount", 0);
+                        }
                     }
 
                     sqlList.add(sqlFactorydetail.getSQL());
                 }
-               //销售出库单审核逻辑待添加
+                if(frb.equals("蓝")){
+                    BigDecimal billamount =BigDecimal.ZERO;
+                    //返利比例
+                    String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
+                    String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
+                    if(!StringUtils.isBlank(icstockbillrebateaccount) && !StringUtils.isBlank(icstockbillrebaterate1)){
+                        BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
+                        //经销商返利
+                        BigDecimal rebateamount = icstockbillrebaterate.multiply(amountTotal);
+                        System.out.println(rebateamount);
+                        CashbillEntity entity = new CashbillEntity();
+                        entity.setAmount(rebateamount);
+                        entity.setOwnerid(st_stockbillid);
+                        entity.setOwnertable("st_stockbill");
+                        entity.setSource("");
+                        entity.setRemarks("销售出库单" + fbillnum + "返利");
+                        sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
+                    }
+                }
+
+                sqlList.add("update st_stockbill set status='审核',checkby='"+checkby+"',checkdate=CURRENT_TIMESTAMP where st_stockbillid = "+st_stockbillid+" and siteid='lsa1986'");
 
-                BigDecimal billamount =BigDecimal.ZERO;
 
+            }else if (!stockbillRows.isEmpty() && "0".equals(isdelete) && "审核".equals(fstatus)) {
+                /**
+                 * DRP存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需将当前销售出库单先反审核,修改内容后再进行审核
+                 */
+                //销售出库单反审核逻辑待添加
+                if(frb.equals("蓝")){
+                    BigDecimal billamount =BigDecimal.ZERO;
+                    Rows stockbilldetails = dbConnect.runSqlQuery("select * from st_stockbill_items where st_stockbillid ='"
+                            + stockbillRows.get(0).getLong("st_stockbillid") + "' and  siteid='" + siteid + "'");
+                    for (Row row :stockbilldetails) {
+                        billamount=billamount.add(row.getBigDecimal("amount").abs().negate());
+                    }
 
-                //返利比例
-                String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
-                String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
-                if(!StringUtils.isBlank(icstockbillrebateaccount) && !StringUtils.isBlank(icstockbillrebaterate1)){
+                    //返利比例
+                    String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
+                    String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
                     BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
                     //经销商返利
-                    BigDecimal rebateamount = icstockbillrebaterate.multiply(amountTotal);
-                    System.out.println(rebateamount);
+                    BigDecimal rebateamount = icstockbillrebaterate.multiply(billamount);
+
                     CashbillEntity entity = new CashbillEntity();
                     entity.setAmount(rebateamount);
-                    entity.setOwnerid(st_stockbillid);
+                    entity.setOwnerid(stockbillRows.get(0).getLong("st_stockbillid"));
                     entity.setOwnertable("st_stockbill");
                     entity.setSource("");
-                    entity.setRemarks("销售出库单" + fbillnum + "返利");
+                    entity.setRemarks("销售出库单" + fbillnum + "返利");
                     sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
                 }
-                sqlList.add("update st_stockbill set status='审核',checkby='"+checkby+"',checkdate=CURRENT_TIMESTAMP where st_stockbillid = "+st_stockbillid+" and siteid='lsa1986'");
-
-
-            }else if (!stockbillRows.isEmpty() && "0".equals(isdelete) && "审核".equals(fstatus)) {
-                /**
-                 * DRP存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需将当前销售出库单先反审核,修改内容后再进行审核
-                 */
-                //销售出库单反审核逻辑待添加
-                BigDecimal billamount =BigDecimal.ZERO;
-                Rows stockbilldetails = dbConnect.runSqlQuery("select * from st_stockbill_items where st_stockbillid ='"
-                        + stockbillRows.get(0).getLong("st_stockbillid") + "' and  siteid='" + siteid + "'");
-                for (Row row :stockbilldetails) {
-                    billamount=billamount.add(row.getBigDecimal("amount").abs().negate());
-                }
-
-                //返利比例
-                String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
-                String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
-                BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
-                //经销商返利
-                BigDecimal rebateamount = icstockbillrebaterate.multiply(billamount);
-
-                CashbillEntity entity = new CashbillEntity();
-                entity.setAmount(rebateamount);
-                entity.setOwnerid(stockbillRows.get(0).getLong("st_stockbillid"));
-                entity.setOwnertable("st_stockbill");
-                entity.setSource("");
-                entity.setRemarks("销售出库单" + fbillnum + "反返利");
-                sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
 
                 sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = "+stockbillRows.get(0).getLong("st_stockbillid")+" and siteid='lsa1986'");
                 msg = "DRP单据状态为审核,现已反审核,下次同步时进行审核操作";
@@ -227,34 +241,34 @@ public class stockbill extends Controller {
                  * DRP存在收入凭证,且中间表状态为新建或在删除状态时,DRP中需将当前收入销售出库单先反审核
                  */
                 //销售出库单反审核逻辑待添加
-                BigDecimal billamount =BigDecimal.ZERO;
-                Rows stockbilldetails = dbConnect.runSqlQuery("select * from st_stockbill_items where st_stockbillid ='"
-                        + stockbillRows.get(0).getLong("st_stockbillid") + "' and  siteid='" + siteid + "'");
-                for (Row row :stockbilldetails) {
-                    billamount=billamount.add(row.getBigDecimal("amount").abs().negate());
+                if(frb.equals("蓝")){
+                    BigDecimal billamount =BigDecimal.ZERO;
+                    Rows stockbilldetails = dbConnect.runSqlQuery("select * from st_stockbill_items where st_stockbillid ='"
+                            + stockbillRows.get(0).getLong("st_stockbillid") + "' and  siteid='" + siteid + "'");
+                    for (Row row :stockbilldetails) {
+                        billamount=billamount.add(row.getBigDecimal("amount").abs().negate());
+                    }
+
+                    //返利比例
+                    String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
+                    String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
+                    BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
+                    //经销商返利
+                    BigDecimal rebateamount = icstockbillrebaterate.multiply(billamount);
+
+                    CashbillEntity entity = new CashbillEntity();
+                    entity.setAmount(rebateamount);
+                    entity.setOwnerid(stockbillRows.get(0).getLong("st_stockbillid"));
+                    entity.setOwnertable("st_stockbill");
+                    entity.setSource("");
+                    entity.setRemarks("销售出库单" + fbillnum + "反返利");
+                    sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
                 }
 
-                //返利比例
-                String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
-                String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
-                BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
-                //经销商返利
-                BigDecimal rebateamount = icstockbillrebaterate.multiply(billamount);
-
-                CashbillEntity entity = new CashbillEntity();
-                entity.setAmount(rebateamount);
-                entity.setOwnerid(stockbillRows.get(0).getLong("st_stockbillid"));
-                entity.setOwnertable("st_stockbill");
-                entity.setSource("");
-                entity.setRemarks("销售出库单" + fbillnum + "反返利");
-                sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
-                
                 sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = "+stockbillRows.get(0).getLong("st_stockbillid")+" and siteid='lsa1986'");
 
             }
 
-
-
             dbConnect.runSqlUpdate(sqlList);
             /**
              * 更新发货单数量
@@ -269,10 +283,10 @@ public class stockbill extends Controller {
                             sqldispatchitems.add("update sa_dispatch_items set outwarehousedate=CURRENT_TIME,outwarehouseqty=outwarehouseqty+"+row.getBigDecimal("qty")+" where siteid='lsa1986' and sa_dispatch_itemsid="+row.getLong("sa_dispatch_itemsid"));
                         }
                     }else{
-                        for (Row row :stockbilldetailrows) {
-                            sqldispatchitems.add("update sa_dispatch_items set outwarehousedate=CURRENT_TIME,outwarehouseqty=outwarehouseqty-"+row.getBigDecimal("qty")+" where siteid='lsa1986' and sa_dispatch_itemsid="+row.getLong("sa_dispatch_itemsid"));
-                            sqldispatchitems.add("update sa_dispatch set closedate=null,closeby='',status='复核' where siteid='lsa1986' and sa_dispatchid="+row.getLong("sa_dispatchid"));
-                        }
+//                        for (Row row :stockbilldetailrows) {
+//                            sqldispatchitems.add("update sa_dispatch_items set outwarehousedate=CURRENT_TIME,outwarehouseqty=outwarehouseqty-"+row.getBigDecimal("qty")+" where siteid='lsa1986' and sa_dispatch_itemsid="+row.getLong("sa_dispatch_itemsid"));
+//                            sqldispatchitems.add("update sa_dispatch set closedate=null,closeby='',status='复核' where siteid='lsa1986' and sa_dispatchid="+row.getLong("sa_dispatchid"));
+//                        }
                     }
 
                 }else{
@@ -282,75 +296,76 @@ public class stockbill extends Controller {
                             sqldispatchitems.add("update sa_dispatch set closedate=null,closeby='',status='复核' where siteid='lsa1986' and sa_dispatchid="+row.getLong("sa_dispatchid"));
                         }
                     }else{
-                        for (Row row :stockbilldetailrows) {
-                            sqldispatchitems.add("update sa_dispatch_items set outwarehousedate=CURRENT_TIME,outwarehouseqty=outwarehouseqty+"+row.getBigDecimal("qty")+" where siteid='lsa1986' and sa_dispatch_itemsid="+row.getLong("sa_dispatch_itemsid"));
-                        }
+//                        for (Row row :stockbilldetailrows) {
+//                            sqldispatchitems.add("update sa_dispatch_items set outwarehousedate=CURRENT_TIME,outwarehouseqty=outwarehouseqty+"+row.getBigDecimal("qty")+" where siteid='lsa1986' and sa_dispatch_itemsid="+row.getLong("sa_dispatch_itemsid"));
+//                        }
                     }
 
                 }
             }
             dbConnect.runSqlUpdate(sqldispatchitems);
 
+            if(frb.equals("蓝")){
+                //查询可关闭的发货单
+                Rows dispatchrows =dbConnect.runSqlQuery( "select t.sa_dispatchid from (select t2.sa_dispatchid,sum(t2.qty) sumqty,sum(outwarehouseqty) sumoutwarehouseqty from st_stockbill_items t1 inner join  sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid where t1.st_stockbillid = "+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986' group by t2.sa_dispatchid) t where t.sumqty=t.sumoutwarehouseqty");
+                Rows undispatchrows =dbConnect.runSqlQuery( "select t.sa_dispatchid from (select t2.sa_dispatchid,sum(t2.qty) sumqty,sum(outwarehouseqty) sumoutwarehouseqty from st_stockbill_items t1 inner join  sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid where t1.st_stockbillid = "+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986' group by t2.sa_dispatchid) t where t.sumqty!=t.sumoutwarehouseqty");
+                ArrayList<String>  sqldispatch =new ArrayList<>();
+                for (Row row:dispatchrows) {
+                    sqldispatch.add("update sa_dispatch set status='关闭',closedate=current_time,closeby='admin' where sa_dispatchid='" + row.getLong("sa_dispatchid") + "' and siteid='lsa1986'");
+                    SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
+                    sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
+                    sqlFactory.addParameter("ownertable", "sa_dispatch");
+                    sqlFactory.addParameter("ownerid", row.getLong("sa_dispatchid"));
+                    sqlFactory.addParameter("action", "自动关闭");
+                    sqlFactory.addParameter("remarks", "发货单自动关闭成功");
+                    sqlFactory.addParameter("actionuserid", "1");
+                    sqlFactory.addParameter("actionby", "admin");
+                    sqlFactory.addParameter("siteid", "lsa1986");
+                    sqldispatch.add(sqlFactory.getSQL());
+                }
+                for (Row row:undispatchrows) {
+                    sqldispatch.add("update sa_dispatch set status='复核',closedate=null,closeby='' where sa_dispatchid='" + row.getLong("sa_dispatchid") + "' and siteid='lsa1986'");
+                    sqldispatch.add("delete from sys_contrllog where ownertable='sa_dispatch' and action='自动关闭' and ownerid='" + row.getLong("sa_dispatchid") + "' and siteid='lsa1986'");
+                }
 
-            //查询可关闭的发货单
-            Rows dispatchrows =dbConnect.runSqlQuery( "select t.sa_dispatchid from (select t2.sa_dispatchid,sum(t2.qty) sumqty,sum(outwarehouseqty) sumoutwarehouseqty from st_stockbill_items t1 inner join  sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid where t1.st_stockbillid = "+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986' group by t2.sa_dispatchid) t where t.sumqty=t.sumoutwarehouseqty");
-            Rows undispatchrows =dbConnect.runSqlQuery( "select t.sa_dispatchid from (select t2.sa_dispatchid,sum(t2.qty) sumqty,sum(outwarehouseqty) sumoutwarehouseqty from st_stockbill_items t1 inner join  sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid where t1.st_stockbillid = "+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986' group by t2.sa_dispatchid) t where t.sumqty!=t.sumoutwarehouseqty");
-            ArrayList<String>  sqldispatch =new ArrayList<>();
-            for (Row row:dispatchrows) {
-                sqldispatch.add("update sa_dispatch set status='关闭',closedate=current_time,closeby='admin' where sa_dispatchid='" + row.getLong("sa_dispatchid") + "' and siteid='lsa1986'");
-                SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
-                sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
-                sqlFactory.addParameter("ownertable", "sa_dispatch");
-                sqlFactory.addParameter("ownerid", row.getLong("sa_dispatchid"));
-                sqlFactory.addParameter("action", "自动关闭");
-                sqlFactory.addParameter("remarks", "发货单自动关闭成功");
-                sqlFactory.addParameter("actionuserid", "1");
-                sqlFactory.addParameter("actionby", "admin");
-                sqlFactory.addParameter("siteid", "lsa1986");
-                sqldispatch.add(sqlFactory.getSQL());
-            }
-            for (Row row:undispatchrows) {
-                sqldispatch.add("update sa_dispatch set status='复核',closedate=null,closeby='' where sa_dispatchid='" + row.getLong("sa_dispatchid") + "' and siteid='lsa1986'");
-                sqldispatch.add("delete from sys_contrllog where ownertable='sa_dispatch' and action='自动关闭' and ownerid='" + row.getLong("sa_dispatchid") + "' and siteid='lsa1986'");
-            }
-
-            dbConnect.runSqlUpdate(sqldispatch);
-
-
-            //查询可关闭的订单
-            //订单出库总数量
-            Rows orderinstockrows =dbConnect.runSqlQuery( "select t1.sa_orderid,t1.siteid,sum(ifnull(t2.outwarehouseqty,0)) sumoutwarehouseqty from sa_orderitems t1 left join sa_dispatch_items t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid where  t1.sa_orderid in(select t3.sa_orderid from st_stockbill_items t1 inner join  sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid inner join sa_orderitems t3 on t2.sa_orderitemsid=t3.sa_orderitemsid and t2.siteid=t3.siteid  where t1.st_stockbillid ="+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986')   group by t1.sa_orderid,t1.siteid");
-            //订单总数量
-            Rows ordersumrows =dbConnect.runSqlQuery( "select t1.sa_orderid,t1.siteid,sum(qty) sumqty from sa_orderitems t1  where  t1.sa_orderid in(select t3.sa_orderid from st_stockbill_items t1 inner join  sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid inner join sa_orderitems t3 on t2.sa_orderitemsid=t3.sa_orderitemsid and t2.siteid=t3.siteid  where t1.st_stockbillid ="+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986')   group by t1.sa_orderid,t1.siteid");
-            RowsMap orderinstockRowsMap = orderinstockrows.toRowsMap("sa_orderid");
-
-
-            ArrayList<String>  sqlorder =new ArrayList<>();
-            for (Row row:ordersumrows) {
-                if(orderinstockRowsMap.containsKey(row.getString("sa_orderid"))){
-                    if(orderinstockRowsMap.get(row.getString("sa_orderid")).get(0).getBigDecimal("sumoutwarehouseqty").compareTo(row.getBigDecimal("sumqty"))==0){
-                        sqlorder.add("update sa_order set status='关闭',closedate=current_time,closeby='admin' where sa_orderid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
-                        SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
-                        sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
-                        sqlFactory.addParameter("ownertable", "sa_order");
-                        sqlFactory.addParameter("ownerid", row.getLong("sa_orderid"));
-                        sqlFactory.addParameter("action", "自动关闭");
-                        sqlFactory.addParameter("remarks", "订单自动关闭成功");
-                        sqlFactory.addParameter("actionuserid", "1");
-                        sqlFactory.addParameter("actionby", "admin");
-                        sqlFactory.addParameter("siteid", "lsa1986");
-                        sqlorder.add(sqlFactory.getSQL());
+                dbConnect.runSqlUpdate(sqldispatch);
+
+                //查询可关闭的订单
+                //订单出库总数量
+                Rows orderinstockrows =dbConnect.runSqlQuery( "select t1.sa_orderid,t1.siteid,sum(ifnull(t2.outwarehouseqty,0)) sumoutwarehouseqty from sa_orderitems t1 left join sa_dispatch_items t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid where  t1.sa_orderid in(select t3.sa_orderid from st_stockbill_items t1 inner join  sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid inner join sa_orderitems t3 on t2.sa_orderitemsid=t3.sa_orderitemsid and t2.siteid=t3.siteid  where t1.st_stockbillid ="+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986')   group by t1.sa_orderid,t1.siteid");
+                //订单总数量
+                Rows ordersumrows =dbConnect.runSqlQuery( "select t1.sa_orderid,t1.siteid,sum(qty) sumqty from sa_orderitems t1  where  t1.sa_orderid in(select t3.sa_orderid from st_stockbill_items t1 inner join  sa_dispatch_items t2 on t1.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t1.siteid=t2.siteid inner join sa_orderitems t3 on t2.sa_orderitemsid=t3.sa_orderitemsid and t2.siteid=t3.siteid  where t1.st_stockbillid ="+stockbillrows.get(0).getLong("st_stockbillid")+" and t1.siteid='lsa1986')   group by t1.sa_orderid,t1.siteid");
+                RowsMap orderinstockRowsMap = orderinstockrows.toRowsMap("sa_orderid");
+
+
+                ArrayList<String>  sqlorder =new ArrayList<>();
+                for (Row row:ordersumrows) {
+                    if(orderinstockRowsMap.containsKey(row.getString("sa_orderid"))){
+                        if(orderinstockRowsMap.get(row.getString("sa_orderid")).get(0).getBigDecimal("sumoutwarehouseqty").compareTo(row.getBigDecimal("sumqty"))==0){
+                            sqlorder.add("update sa_order set status='关闭',closedate=current_time,closeby='admin' where sa_orderid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
+                            SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
+                            sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
+                            sqlFactory.addParameter("ownertable", "sa_order");
+                            sqlFactory.addParameter("ownerid", row.getLong("sa_orderid"));
+                            sqlFactory.addParameter("action", "自动关闭");
+                            sqlFactory.addParameter("remarks", "订单自动关闭成功");
+                            sqlFactory.addParameter("actionuserid", "1");
+                            sqlFactory.addParameter("actionby", "admin");
+                            sqlFactory.addParameter("siteid", "lsa1986");
+                            sqlorder.add(sqlFactory.getSQL());
+                        }else {
+                            sqlorder.add("update sa_order set status='审核',closedate=null,closeby='' where sa_orderid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
+                            sqlorder.add("delete from sys_contrllog  where ownertable='sa_order' and action='自动关闭'  and  ownerid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
+                        }
                     }else {
                         sqlorder.add("update sa_order set status='审核',closedate=null,closeby='' where sa_orderid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
                         sqlorder.add("delete from sys_contrllog  where ownertable='sa_order' and action='自动关闭'  and  ownerid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
                     }
-                }else {
-                    sqlorder.add("update sa_order set status='审核',closedate=null,closeby='' where sa_orderid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
-                    sqlorder.add("delete from sys_contrllog  where ownertable='sa_order' and action='自动关闭'  and  ownerid='" + row.getLong("sa_orderid") + "' and siteid='lsa1986'");
+
                 }
+                dbConnect.runSqlUpdate(sqlorder);
 
             }
-            dbConnect.runSqlUpdate(sqlorder);
 
             /**
              * 如单据为新建状态,则,先把单据强行删除掉

+ 30 - 6
src/custom/restcontroller/webmanage/sale/aftersalesmag/aftersalesmag.java

@@ -406,16 +406,28 @@ public class aftersalesmag extends Controller {
                         .toString();
             }
         }
+        Rows stockbillRows = dbConnect.runSqlQuery("select * from st_stockbill_items t1 inner join st_stockbill t2 on t1.st_stockbillid=t2.st_stockbillid and t1.siteid=t2.siteid inner join sa_aftersalesmag_items t3 on  t1.sa_dispatch_itemsid=t3.sa_aftersalesmag_itemsid and t1.siteid=t3.siteid where t2.status='审核' and t2.rb=0 and t1.siteid='"+siteid+"' and t3.sa_aftersalesmagid="+sa_aftersalesmagid);
+        if(stockbillRows.isEmpty()){
+            return getErrReturnObject().setErrMsg("单号为:【" + rows.get(0).getString("billno") + "】的返退单在K3中还未退货,无法复核")
+                    .toString();
+        }
 
         ArrayList<String> sqlList = new ArrayList<>();
-        if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-            ERPDocking erpDocking =new ERPDocking();
-            String billno = rows.get(0).getString("billno");
-            String result =erpDocking.recheckErpSareturn(billno,false,this,sa_aftersalesmagid);
-            if(!result.equals("true")){
-                return getErrReturnObject().setErrMsg(result).toString();
+        Rows sa_aftersalesmag_itemsRows = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t2.itemno,t2.itemname,t2.skucontrol from sa_aftersalesmag_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_aftersalesmagid=" + sa_aftersalesmagid);
+        for (Row row : sa_aftersalesmag_itemsRows) {
+            BigDecimal returnqty = row.getBigDecimal("qty");
+            if(rows.get(0).getString("type").equals("退货单")){
+                sqlList.add("update sa_orderitems set returnqty=returnqty+" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
             }
         }
+//        if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
+//            ERPDocking erpDocking =new ERPDocking();
+//            String billno = rows.get(0).getString("billno");
+//            String result =erpDocking.recheckErpSareturn(billno,false,this,sa_aftersalesmagid);
+//            if(!result.equals("true")){
+//                return getErrReturnObject().setErrMsg(result).toString();
+//            }
+//        }
        if(rows.get(0).getString("type").equals("退货单")) {
            if (rows.get(0).getDouble("returnamount") > 0) {
                /******** 生成支出凭证 ********/
@@ -505,8 +517,20 @@ public class aftersalesmag extends Controller {
                         .toString();
             }
         }
+        Rows stockbillRows = dbConnect.runSqlQuery("select * from st_stockbill_items t1 inner join st_stockbill t2 on t1.st_stockbillid=t2.st_stockbillid and t1.siteid=t2.siteid inner join sa_aftersalesmag_items t3 on  t1.sa_dispatch_itemsid=t3.sa_aftersalesmag_itemsid and t1.siteid=t3.siteid where t2.status='审核' and t2.rb=0 and t1.siteid='"+siteid+"' and t3.sa_aftersalesmagid="+sa_aftersalesmagid);
+        if(stockbillRows.isNotEmpty()){
+            return getErrReturnObject().setErrMsg("单号为:【" + rows.get(0).getString("billno") + "】的返退单在K3中的红字出库单还未删除,无法复核")
+                    .toString();
+        }
 
         ArrayList<String> sqlList = new ArrayList<>();
+        Rows sa_aftersalesmag_itemsRows = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t2.itemno,t2.itemname from sa_aftersalesmag_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_aftersalesmagid=" + sa_aftersalesmagid);
+        for (Row row : sa_aftersalesmag_itemsRows) {
+            BigDecimal returnqty = row.getBigDecimal("qty");
+            if(rows.get(0).getString("type").equals("退货单")){
+                sqlList.add("update sa_orderitems set returnqty=returnqty-" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
+            }
+        }
 //        if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
 //            ERPDocking erpDocking =new ERPDocking();
 //            String billno = rows.get(0).getString("billno");

+ 17 - 0
src/custom/restcontroller/webmanage/sale/stockbill/SQL/出入库单明细列表查询(红).sql

@@ -0,0 +1,17 @@
+SELECT t1.*,
+       t2.itemno item_itemno,
+       t2.itemname item_itemname,
+       t2.model item_model,
+       t2.spec item_spec,
+       t3.unitname,
+       t7.sonum
+FROM st_stockbill_items t1
+         left join plm_item t2 on t1.itemid = t2.itemid and t1.siteid = t2.siteid
+         LEFT JOIN plm_unit t3 ON t3.unitid = t2.unitid AND t3.siteid = t2.siteid
+         LEFT JOIN st_stockbill t4 ON t4.st_stockbillid = t1.st_stockbillid AND t4.siteid = t1.siteid
+         left join sa_aftersalesmag_items t5 on t1.sa_dispatch_itemsid=t5.sa_aftersalesmag_itemsid and t1.siteid=t5.siteid
+         left join sa_orderitems t6 on t6.sa_orderitemsid=t5.sa_orderitemsid and t6.siteid=t5.siteid
+         left join sa_order t7 on t6.sa_orderid=t7.sa_orderid and t6.siteid=t7.siteid
+where $where$
+  and t1.siteid = $siteid$
+  and t1.st_stockbillid = $st_stockbillid$

+ 13 - 1
src/custom/restcontroller/webmanage/sale/stockbill/stockbill.java

@@ -271,7 +271,19 @@ public class stockbill extends Controller {
             }
         }
         Long st_stockbillid = content.getLong("st_stockbillid");
-        SQLFactory sqlFactory = new SQLFactory(this, "出入库单明细列表查询", pageSize, pageNumber, pageSorting);
+        Rows stockbillrows = dbConnect.runSqlQuery("select st_stockbillid,status,billno,rb from st_stockbill where st_stockbillid ='"
+                + st_stockbillid + "' and  siteid='" + siteid + "'");
+        boolean rb = false;
+        if(stockbillrows.isNotEmpty()){
+            rb=stockbillrows.get(0).getBoolean("rb");
+        }
+        SQLFactory sqlFactory;
+        if(rb){
+             sqlFactory = new SQLFactory(this, "出入库单明细列表查询", pageSize, pageNumber, pageSorting);
+        }else {
+             sqlFactory = new SQLFactory(this, "出入库单明细列表查询(红)", pageSize, pageNumber, pageSorting);
+        }
+
         sqlFactory.addParameter_SQL("where", where);
         sqlFactory.addParameter("st_stockbillid", st_stockbillid);
         sqlFactory.addParameter("siteid", siteid);