Просмотр исходного кода

配件申请单,【可核销数】计算逻辑修改

hu 5 месяцев назад
Родитель
Сommit
4763779649

+ 4 - 4
src/custom/beans/stockbill/bills/XSCK.java

@@ -87,7 +87,7 @@ public class XSCK extends BasicBill {
                 Rows rowsDispatchDetailGroup = dbConnect.runSqlQuery("select sum(t1.qty) qty,t1.sa_orderitemsid,t1.siteid from st_stockbill_items t1  where t1.sa_orderitemsid>0 and t1.st_stockbillid=" + st_stockbillid + " group by t1.sa_orderitemsid,t1.siteid");
                 for (Row row : rowsDispatchDetailGroup) {
                     sqlList.add("update sa_orderitems set undeliqty=undeliqty-" + row.getDouble("qty") + ",deliedqty=deliedqty+" + row.getDouble("qty") + ",offstatus=if(billingstatus='保内收费','待核销','不可核销'),offdate=CURRENT_TIME  where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
-                    sqlList.add("update sa_orderitems set tobeoffqty=case when tobeoffqty+" + row.getDouble("qty") + ">canoffqty then canoffqty else tobeoffqty+" + row.getDouble("qty") + " end where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
+                    sqlList.add("update sa_orderitems set tobeoffqty=case when tobeoffqty+" + row.getDouble("qty") + ">canoffqty then canoffqty else tobeoffqty+" + row.getDouble("qty") + " end where billingstatus='保内收费' and sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
 
                 }
                 for (Row row : itemRows) {
@@ -108,7 +108,7 @@ public class XSCK extends BasicBill {
                 for (Row row : rowsDispatchDetailGroup) {
                     sqlList.add("update sa_orderitems set undeliqty=" + rowsMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("undeliqty").add(row.getBigDecimal("qty")) + ",deliedqty=" + (rowsMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("deliedqty").subtract(row.getBigDecimal("qty"))) + " where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
 
-                    sqlList.add("update sa_orderitems set tobeoffqty=case when tobeoffqty-" + row.getDouble("qty") + ">0 then tobeoffqty-" + row.getDouble("qty")+" else 0 end where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
+                    sqlList.add("update sa_orderitems set tobeoffqty=case when tobeoffqty-" + row.getDouble("qty") + ">0 then tobeoffqty-" + row.getDouble("qty")+" else 0 end where billingstatus='保内收费' and sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
                 }
                 for (Row row : itemRows) {
                     if (row.getBoolean("skucontrol")) {
@@ -133,7 +133,7 @@ public class XSCK extends BasicBill {
                 for (Row row : rowsDispatchDetailGroup) {
                     sqlList.add("update sa_orderitems set undeliqty=" + rowsMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("undeliqty").add(row.getBigDecimal("qty")) + ",deliedqty=" + (rowsMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("deliedqty").subtract(row.getBigDecimal("qty"))) + " where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
 
-                    sqlList.add("update sa_orderitems set tobeoffqty=case when tobeoffqty-" + row.getDouble("qty") + ">0 then tobeoffqty-" + row.getDouble("qty")+" else 0 end where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
+                    sqlList.add("update sa_orderitems set tobeoffqty=case when tobeoffqty-" + row.getDouble("qty") + ">0 then tobeoffqty-" + row.getDouble("qty")+" else 0 end where billingstatus='保内收费' and sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
                 }
                 for (Row row : itemRows) {
                     if (row.getBoolean("skucontrol")) {
@@ -150,7 +150,7 @@ public class XSCK extends BasicBill {
                 Rows rowsDispatchDetailGroup = dbConnect.runSqlQuery("select sum(t1.qty) qty,t1.sa_orderitemsid,t1.siteid from st_stockbill_items t1  where t1.sa_orderitemsid>0 and t1.st_stockbillid=" + st_stockbillid + " group by t1.sa_orderitemsid,t1.siteid");
                 for (Row row : rowsDispatchDetailGroup) {
                     sqlList.add("update sa_orderitems set undeliqty=undeliqty-" + row.getDouble("qty") + ",deliedqty=deliedqty+" + row.getDouble("qty") + ",offstatus=if(billingstatus='保内收费','待核销','不可核销'),offdate=CURRENT_TIME  where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
-                    sqlList.add("update sa_orderitems set tobeoffqty=case when tobeoffqty+" + row.getDouble("qty") + ">canoffqty then canoffqty else tobeoffqty+" + row.getDouble("qty") + " end where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
+                    sqlList.add("update sa_orderitems set tobeoffqty=case when tobeoffqty+" + row.getDouble("qty") + ">canoffqty then canoffqty else tobeoffqty+" + row.getDouble("qty") + " end where billingstatus='保内收费' and sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
                 }
                 for (Row row : itemRows) {
                     if (row.getBoolean("skucontrol")) {

+ 42 - 5
src/custom/restcontroller/webmanage/sale/order/OrderItems.java

@@ -249,7 +249,38 @@ public class OrderItems extends Controller {
         if(type.equals("配件订单")){
             dbConnect.runSqlUpdate("UPDATE sa_order o JOIN (SELECT  sa_orderid,GROUP_CONCAT(DISTINCT delivery SEPARATOR '+') AS delivery FROM sa_orderitems where sa_orderid="+sa_orderid+" GROUP BY sa_orderid) od ON o.sa_orderid = od.sa_orderid SET  o.delivery = od.delivery ");
         }
-
+        sqlList=new ArrayList<>();
+        if (type.equals("配件订单")) {
+            Rows rowsdetails = dbConnect.runSqlQuery("select t1.price,t1.amount,t1.sa_orderitemsid,t1.itemid,ifnull(t2.iswriteoff,0) iswriteoff,t3.begdate,t3.enddate from sa_orderitems t1 " +
+                    "left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid " +
+                    "left join sa_warrantycard t3 on t1.cardno=t3.cardno and t1.siteid=t3.siteid and t3.isvoid=0 and t3.deleted=0 where t1.sa_orderid=" + sa_orderid);
+            for (Row rowsdetail : rowsdetails) {
+                String billingstatus = "";
+                BigDecimal price = rowsdetail.getBigDecimal("price");
+                BigDecimal amount = rowsdetail.getBigDecimal("amount");
+                String begdate = rowsdetail.getString("begdate");
+                String enddate = rowsdetail.getString("enddate");
+                if (StringUtils.isBlank(begdate) || StringUtils.isBlank(enddate)) {
+                    billingstatus = "保外收费";
+                } else {
+                    Date date = new Date();
+                    if (date.before(rowsdetail.getDate("enddate"))) {
+                        if (rowsdetail.getBoolean("iswriteoff")) {
+                            billingstatus = "保内收费";
+                        } else {
+                            billingstatus = "保内免费";
+                            price = BigDecimal.ZERO;
+                            amount = BigDecimal.ZERO;
+                        }
+                    }
+                }
+                if(!billingstatus.equals("保内收费")){
+                    sqlList.add("update sa_orderitems set canoffqty=0 where sa_orderitemsid=" + rowsdetail.getLong("sa_orderitemsid"));
+                }
+                sqlList.add("update sa_orderitems set price=" + price + ",amount=" + amount + ",billingstatus='" + billingstatus + "' where sa_orderitemsid=" + rowsdetail.getLong("sa_orderitemsid"));
+            }
+        }
+        dbConnect.runSqlUpdate(sqlList);
         return getSucReturnObject().toString();
     }
 
@@ -259,17 +290,23 @@ public class OrderItems extends Controller {
         Long sa_orderid = content.getLong("sa_orderid");
         Long sa_orderitemsid = content.getLong("sa_orderitemsid");
         BigDecimal canoffqty = content.getBigDecimal("canoffqty");
-        Rows orderRows = dbConnect.runSqlQuery("SELECT status,sonum from sa_order WHERE sa_orderid=" + sa_orderid + " and siteid='" + siteid + "'");
-        Rows orderitemsRows = dbConnect.runSqlQuery("SELECT sa_orderitemsid,qty from sa_orderitems WHERE sa_orderid=" + sa_orderid + " and sa_orderitemsid='" + sa_orderitemsid + "'");
+        Rows orderRows = dbConnect.runSqlQuery("SELECT status,sonum,type from sa_order WHERE sa_orderid=" + sa_orderid + " and siteid='" + siteid + "'");
+        Rows orderitemsRows = dbConnect.runSqlQuery("SELECT sa_orderitemsid,qty,billingstatus,rowno from sa_orderitems WHERE sa_orderid=" + sa_orderid + " and sa_orderitemsid='" + sa_orderitemsid + "'");
         if(orderRows.isEmpty()){
-            return getErrReturnObject().setErrMsg("订单不存在").toString();
+            return getErrReturnObject().setErrMsg("配件订单不存在").toString();
+        }
+        if(!orderRows.get(0).getString("type").equals("配件订单")){
+            return getErrReturnObject().setErrMsg("非配件订单无法更新可核销数").toString();
         }
         if(orderRows.get(0).getString("status").equals("审核")){
-            return getErrReturnObject().setErrMsg("订单【"+orderRows.get(0).getString("sonum")+"】已审核,无法更新可核销数").toString();
+            return getErrReturnObject().setErrMsg("配件订单【"+orderRows.get(0).getString("sonum")+"】已审核,无法更新可核销数").toString();
         }
         if(orderitemsRows.isEmpty()){
             return getErrReturnObject().setErrMsg("订单明细不存在").toString();
         }
+        if(!orderitemsRows.get(0).getString("billingstatus").equals("保内收费")){
+            return getErrReturnObject().setErrMsg("行号【"+orderitemsRows.get(0).getString("rowno")+"】为非保内收费配件,无法更新可核销数").toString();
+        }
         if(orderitemsRows.get(0).getBigDecimal("qty").compareTo(canoffqty)<0){
             return getErrReturnObject().setErrMsg("可核销数不可大于商品明细行数量").toString();
         }

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

@@ -163,6 +163,7 @@ public class tpartreimbursement extends Controller {
         querySQL.setWhere("t1.siteid", siteid);
         querySQL.setWhere(where);
         querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy("t1.sa_tpartreimbursementid desc");
         Rows rows = querySQL.query();
 
 //        QuerySQL querySQLdetail = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail", "sa_tpartreimbursementid", "sa_tpartreimbursementdetailid");