Sfoglia il codice sorgente

【批量仓库确认】【批量仓库反确认】功能及bug修复

hu 1 mese fa
parent
commit
3bff49a9ff

+ 19 - 1
src/custom/beans/stockbill/bills/QTCK.java

@@ -2,6 +2,8 @@ package beans.stockbill.bills;
 
 import common.Controller;
 import common.YosException;
+import common.data.Row;
+import common.data.RowsMap;
 
 import java.util.ArrayList;
 
@@ -15,8 +17,24 @@ public class QTCK extends BasicBill {
 
     @Override
     public void checkValidate(boolean ischeck) throws YosException {
-        super.checkValidate(ischeck);
+        if(ischeck){
+            RowsMap codeRowsMap = codeRows.toRowsMap("st_stockbill_itemsid");
+            for(Row row:itemRows){
+                if(row.getBoolean("skucontrol")){
+                    if(codeRowsMap.containsKey(row.getString("st_stockbill_itemsid"))){
+                        if(codeRowsMap.get(row.getString("st_stockbill_itemsid")).size()!=row.getInteger("qty")){
+                            throw new YosException("行号:"+row.getString("rowno")+"序列号数量和出库数量不一致");
+                        }
+                    }else{
+                        throw new YosException("受序列号管控的商品,审核时必须有序列号");
+                    }
+                }
+
+            }
+        }
 
+
+        super.checkValidate(ischeck);
     }
 
     @Override

+ 7 - 2
src/custom/restcontroller/sale/serviceorder/serviceorder.java

@@ -171,11 +171,16 @@ public class serviceorder extends Controller {
             for(Row row :rowsdetails){
                 if(StringUtils.isNotBlank(row.getString("cardno"))){
                     Date date = new Date();
-                    if (date.before(row.getDate("enddate"))) {
-                        sqlList.add("update sa_serviceorderitems set warrantystatus='保内' where sa_serviceorderitemsid="+row.getLong("sa_serviceorderitemsid"));
+                    if(StringUtils.isNotBlank(row.getString("enddate"))){
+                        if (date.before(row.getDate("enddate"))) {
+                            sqlList.add("update sa_serviceorderitems set warrantystatus='保内' where sa_serviceorderitemsid="+row.getLong("sa_serviceorderitemsid"));
+                        }else{
+                            sqlList.add("update sa_serviceorderitems set warrantystatus='保外' where sa_serviceorderitemsid="+row.getLong("sa_serviceorderitemsid"));
+                        }
                     }else{
                         sqlList.add("update sa_serviceorderitems set warrantystatus='保外' where sa_serviceorderitemsid="+row.getLong("sa_serviceorderitemsid"));
                     }
+
                 }
             }
 

+ 1 - 5
src/custom/restcontroller/webmanage/sale/accessoryorder/SQL/查询可添加配件列表.sql

@@ -40,8 +40,4 @@ WHERE t1.siteid = $siteid$
   and t1.isonsale = 1
   and t1.isused = 1
   and t1.ismodule=1
-  and $where$
-  and t1.itemid not in (SELECT t1.itemid
-                    from sa_orderitems t1
-                    WHERE t1.siteid = $siteid$
-                      and t1.sa_orderid = $sa_orderid$)
+  and $where$

+ 31 - 1
src/custom/restcontroller/webmanage/sale/accessoryorder/accessoryorder.java

@@ -140,6 +140,23 @@ public class accessoryorder extends Controller {
         RowsMap OrderAmountRowsMap = beans.order.Order.getSumOrderAmount(this, ids);
 
         RowsMap ContactsRowsMap = beans.order.Order.getContactsRowsMap(this, rows.toArrayList("rec_contactsid", new ArrayList<>()));
+        //查询快递信息
+        QuerySQL expressformQuery = SQLFactory.createQuerySQL(this, "expressform", "*").setTableAlias("t1");
+        expressformQuery.addJoinTable(JOINTYPE.inner, "sa_expressform_stockbill", "t2", "t2.expressformid = t1.expressformid");
+        expressformQuery.addJoinTable(JOINTYPE.inner, "st_stockbill_items", "t3", "t3.st_stockbillid = t2.st_stockbillid","sa_orderid");
+        expressformQuery.setWhere("t3.sa_orderid", rows.toArrayList("sa_orderid"));
+        expressformQuery.setOrderBy("t1.createdate desc");
+        expressformQuery.setDistinct(true);
+        Rows expressformrows = expressformQuery.query();
+        RowsMap expressformrowsMap = expressformrows.toRowsMap("sa_orderid");
+        //查询区域信息
+        QuerySQL areaQuery = SQLFactory.createQuerySQL(this, "sa_salearea", "areanum","areaname","areafullname").setTableAlias("t1");
+        areaQuery.addJoinTable(JOINTYPE.inner, "sys_enterprise_tradefield ", "t2", "t2.sa_saleareaid = t1.sa_saleareaid");
+        areaQuery.setWhere("t2.sys_enterpriseid", rows.toArrayList("sys_enterpriseid"));
+        Rows arearows = areaQuery.query();
+        RowsMap arearowsrowsMap = arearows.toRowsMap("sys_enterpriseid");
+
+
 
         for (Row row : rows) {
             Long id = row.getLong("sa_orderid");
@@ -187,6 +204,19 @@ public class accessoryorder extends Controller {
             } else {
                 row.put("invoicestatus", "部分开票");
             }
+
+            if(expressformrowsMap.containsKey(row.getString("sa_orderid"))){
+                row.put("expressform",expressformrowsMap.get(row.getString("sa_orderid")).get(0));
+            }
+            if(arearowsrowsMap.containsKey(row.getString("sys_enterpriseid"))){
+                row.put("areaname",arearowsrowsMap.get(row.getString("sys_enterpriseid")).get(0).getString("areaname"));
+                row.put("areanum",arearowsrowsMap.get(row.getString("sys_enterpriseid")).get(0).getString("areanum"));
+                row.put("areafullname",arearowsrowsMap.get(row.getString("sys_enterpriseid")).get(0).getString("areafullname"));
+            }else{
+                row.put("areaname","");
+                row.put("areanum","");
+                row.put("areafullname","");
+            }
         }
         return getSucReturnObject().setData(rows).toString();
     }
@@ -360,7 +390,7 @@ public class accessoryorder extends Controller {
                 ,"invoicetaxno","invoicename","invoiceaddress","contact","address","phonenumber","province","city","county");
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t2.sys_enterpriseid = t1.sys_enterpriseid and t2.siteid = t1.siteid",
-                "enterprisename");
+                "enterprisename","abbreviation");
         querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t6", "t6.sys_enterpriseid=t1.sys_enterpriseid and t6.siteid = t1.siteid",
                 "agentnum");
         querySQL.addQueryFields("amount", "CAST(0 AS CHAR(20))");

+ 13 - 9
src/custom/restcontroller/webmanage/sale/sendplan/sendplandetail.java

@@ -76,6 +76,7 @@ public class sendplandetail extends Controller {
             insertSQL.setValue("sa_agentsid", row.getString("sa_agentsid"));
 
             BigDecimal canuseqty = BigDecimal.ZERO;
+            BigDecimal newcanuseqty = BigDecimal.ZERO;
             BigDecimal willoutqty = BigDecimal.ZERO;
             BigDecimal invbalqty = BigDecimal.ZERO;
             BigDecimal sendqty = BigDecimal.ZERO;
@@ -90,25 +91,28 @@ public class sendplandetail extends Controller {
             insertSQL.setValue("willoutqty", willoutqty);
             insertSQL.setValue("willinqty", 0);
             insertSQL.setValue("canuseqty", canuseqty);
-            if (canuseqty.compareTo(BigDecimal.ZERO) <= 0) {
+
+            if (row.getLong("itemid") == olditemid) {
+                insertSQL.setValue("canuseqty", (oldcanuseqty.compareTo(BigDecimal.ZERO) == 0 ? canuseqty : oldcanuseqty).subtract(oldsendqty));
+                newcanuseqty=(oldcanuseqty.compareTo(BigDecimal.ZERO) == 0 ? canuseqty : oldcanuseqty).subtract(oldsendqty);
+                oldcanuseqty = (oldcanuseqty.compareTo(BigDecimal.ZERO) == 0 ? canuseqty : oldcanuseqty).subtract(oldsendqty);
+            } else {
+                insertSQL.setValue("canuseqty", canuseqty);
+                newcanuseqty=canuseqty;
+            }
+
+            if (newcanuseqty.compareTo(BigDecimal.ZERO) <= 0) {
                 insertSQL.setValue("sendqty", 0);
                 insertSQL.setValue("colorflag", 0);
             } else {
                 sendqty = row.getBigDecimal("sendqty");
                 insertSQL.setValue("sendqty", sendqty);
-                if (canuseqty.compareTo(row.getBigDecimal("sendqty")) >= 0) {
+                if (newcanuseqty.compareTo(row.getBigDecimal("sendqty")) >= 0) {
                     insertSQL.setValue("colorflag", 2);
                 } else {
                     insertSQL.setValue("colorflag", 3);
                 }
             }
-
-            if (row.getLong("itemid") == olditemid) {
-                insertSQL.setValue("canuseqty", (oldcanuseqty.compareTo(BigDecimal.ZERO) == 0 ? canuseqty : oldcanuseqty).subtract(oldsendqty));
-                oldcanuseqty = (oldcanuseqty.compareTo(BigDecimal.ZERO) == 0 ? canuseqty : oldcanuseqty).subtract(oldsendqty);
-            } else {
-                insertSQL.setValue("canuseqty", canuseqty);
-            }
             if (row.getLong("itemid") != olditemid) {
                 oldcanuseqty = BigDecimal.ZERO;
             }

+ 30 - 24
src/custom/restcontroller/webmanage/sale/stockbill/stockbill.java

@@ -733,36 +733,42 @@ public class stockbill extends Controller {
 
     @API(title = "仓库确认", apiversion = R.ID2025050709505703.v1.class)
     public String confirm() throws YosException {
-        Long st_stockbillid = content.getLong("st_stockbillid");
+        JSONArray st_stockbillids = content.getJSONArray("st_stockbillid");
         boolean isconfirm = content.getBooleanValue("isconfirm");
-        Rows rows = dbConnect.runSqlQuery("select * from st_stockbill where st_stockbillid ='"
-                + st_stockbillid + "' and  siteid='" + siteid + "'");
-        if (rows.isEmpty()) {
-            return getErrReturnObject().setErrMsg("该出入库单不存在")
+        if (st_stockbillids.isEmpty()) {
+            return getErrReturnObject().setErrMsg("请选择需要操作的出入库单")
                     .toString();
-        } else {
-            if (!rows.get(0).getString("status").equals("审核")) {
-                return getErrReturnObject().setErrMsg("单号为:【" + rows.get(0).getString("billno") + "】的出入库单为非审核状态,无法进行仓库确认")
+        }
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "st_stockbill","*");
+        querySQL.setTableAlias("t1");
+        querySQL.setSiteid(siteid);
+        querySQL.setWhere("st_stockbillid",st_stockbillids);
+        Rows rows = querySQL.query();
+
+        ArrayList<String> sqllist= new ArrayList<>();
+        for(Row row :rows){
+            if (!row.getString("status").equals("审核")) {
+                return getErrReturnObject().setErrMsg("单号为:【" + row.getString("billno") + "】的出入库单为非审核状态,无法进行仓库确认")
                         .toString();
             }
-        }
+            UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "st_stockbill");
+            updateSQL.setUniqueid(row.getLong("st_stockbillid"));
+            updateSQL.setSiteid(siteid);
+            updateSQL.setValue("isconfirm", isconfirm);
+            updateSQL.setValue("confirmby", username);
+            updateSQL.setDateValue("confirmdate");
+
+            updateSQL.setValue("changeby", username);
+            updateSQL.setDateValue("changedate");
+            sqllist.add(updateSQL.getSQL());
+            if(isconfirm){
+                sqllist.add(DataContrlLog.createLog(this, "st_stockbill", row.getLong("st_stockbillid"), "仓库确认",  row.getString("type")+"单仓库确认成功").getSQL());
+            }else{
+                sqllist.add(DataContrlLog.createLog(this, "st_stockbill", row.getLong("st_stockbillid"), "仓库反确认",  row.getString("type")+"单仓库反确认成功").getSQL());
+            }
 
-        UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "st_stockbill");
-        updateSQL.setUniqueid(st_stockbillid);
-        updateSQL.setSiteid(siteid);
-        updateSQL.setValue("isconfirm", isconfirm);
-        updateSQL.setValue("confirmby", username);
-        updateSQL.setDateValue("confirmdate");
-
-        updateSQL.setValue("changeby", username);
-        updateSQL.setDateValue("changedate");
-        dbConnect.runSqlUpdate(updateSQL.getSQL());
-        if(isconfirm){
-            dbConnect.runSqlUpdate(DataContrlLog.createLog(this, "st_stockbill", st_stockbillid, "仓库确认",  rows.get(0).getString("type")+"单仓库确认成功").getSQL());
-        }else{
-            dbConnect.runSqlUpdate(DataContrlLog.createLog(this, "st_stockbill", st_stockbillid, "仓库反确认",  rows.get(0).getString("type")+"单仓库反确认成功").getSQL());
         }
-
+        dbConnect.runSqlUpdate(sqllist);
         return getSucReturnObject().toString();
     }
 

+ 1 - 0
src/custom/restcontroller/webmanage/sale/warrantycard/warrantycard.java

@@ -144,6 +144,7 @@ public class warrantycard extends Controller {
         // 加上一年
         LocalDate newDate = date.plusYears(warrantyday);
 
+        dbConnect.runSqlUpdate(DataContrlLog.createLog(this, "sa_warrantycard", sa_warrantycardid, "保修日期修改", "原日期为 ["+rows.get(0).getDate("begdate")+" - "+rows.get(0).getDate("enddate")+"],修改后日期为 ["+begindate+" - "+(StringUtils.isBlank(enddate) ? newDate.toString() : enddate)+"]。").getSQL());
         UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_warrantycard");
         updateSQL.setUniqueid(sa_warrantycardid);
         updateSQL.setSiteid(siteid);