Explorar o código

配件核销逻辑更新(测试完成)

hu hai 2 meses
pai
achega
1eed7bcc79

+ 0 - 1
src/custom/beans/stockbill/bills/XSCK.java

@@ -87,7 +87,6 @@ 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"));
 
                 }

+ 5 - 1
src/custom/restcontroller/webmanage/sale/order/Order.java

@@ -1795,7 +1795,11 @@ public class Order extends Controller {
         stockbillQuerySQL.setTableAlias("t1");
         stockbillQuerySQL.addJoinTable(JOINTYPE.inner, "st_stockbill", "t2", "t2.st_stockbillid=t1.st_stockbillid and t1.siteid=t2.siteid");
         stockbillQuerySQL.setWhere("t1.siteid",siteid);
-        stockbillQuerySQL.setWhere("t1.sa_orderitemsid",orderRows.toArrayList("sa_orderitemsid"));
+        if(orderRows.toArrayList("sa_orderitemsid").isEmpty()){
+            stockbillQuerySQL.setWhere("1=2");
+        }else{
+            stockbillQuerySQL.setWhere("t1.sa_orderitemsid",orderRows.toArrayList("sa_orderitemsid"));
+        }
         Rows stockbillRows =stockbillQuerySQL.query();
         if(stockbillRows.isNotEmpty()){
             return getErrReturnObject().setErrMsg("存在配件申请单明细已生成销售出库单,无法一键出库").toString();

+ 4 - 4
src/custom/restcontroller/webmanage/sale/tpartreimbursement/tpartreimbursement.java

@@ -229,7 +229,7 @@ public class tpartreimbursement extends Controller {
         }
         ArrayList<String> sqlList = new ArrayList<>();
         if (issubmit) {
-            Rows rowsdetail = dbConnect.runSqlQuery("select t1.sa_orderitemsid from sa_tpartreimbursement t1 where t1.sa_tpartreimbursementid ='"
+            Rows rowsdetail = dbConnect.runSqlQuery("select t1.sa_orderitemsid from sa_tpartreimbursementdetail t1 where t1.sa_tpartreimbursementid ='"
                     + sa_tpartreimbursementid + "' and  t1.siteid='" + siteid + "'");
 
             QuerySQL tpartreimbursementdetailQuery = SQLFactory.createQuerySQL(dbConnect, "sa_tpartreimbursementdetail", "sa_orderitemsid");
@@ -240,7 +240,7 @@ public class tpartreimbursement extends Controller {
 
             QuerySQL orderitemsQuery = SQLFactory.createQuerySQL(dbConnect, "sa_orderitems", "sa_orderitemsid");
             orderitemsQuery.setTableAlias("t1");
-            orderitemsQuery.addJoinTable(JOINTYPE.inner,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
+            orderitemsQuery.addJoinTable(JOINTYPE.left,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
             orderitemsQuery.setWhere("t1.sa_orderitemsid", rowsdetail.toArrayList("sa_orderitemsid"));
             orderitemsQuery.addQueryFields("qty", "t1.tobeoffqty-ifnull(t2.sumqty,0)");
             Rows orderitemsrows = orderitemsQuery.query();
@@ -370,7 +370,7 @@ public class tpartreimbursement extends Controller {
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.left, "sa_orderitems", "t2", "t1.sa_orderitemsid = t2.sa_orderitemsid AND t1.siteid = t2.siteid","price");
         querySQL.setSiteid(siteid);
-        querySQL.addQueryFields("amount","t1.qty*t2.price");
+        querySQL.addQueryFields("amount","ROUND(t1.qty*t2.price, 2)");
         querySQL.setWhere("t1.sa_tpartreimbursementdetailid", sa_tpartreimbursementdetailids);
         Rows rows = querySQL.query();
         return getSucReturnObject().setData(rows.sum("amount")).toString();
@@ -501,7 +501,7 @@ public class tpartreimbursement extends Controller {
                 insertDetailSQL.setValue("amount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
                 insertDetailSQL.setValue("untaxedprice", iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13), 2, BigDecimal.ROUND_HALF_UP));
                 insertDetailSQL.setValue("untaxedamount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13), 2, BigDecimal.ROUND_HALF_UP)));
-                insertDetailSQL.setValue("skucontrol", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("skucontrol"):iteminfo.getBoolean("skucontrol"));
+                insertDetailSQL.setValue("skucontrol", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("skucontrol"):iteminfo.getBooleanValue("skucontrol"));
                 i++;
                 sqllist.add(insertDetailSQL.getSQL());
                 totalamount = totalamount.add(iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));

+ 32 - 5
src/custom/restcontroller/webmanage/sale/tpartreimbursement/tpartreimbursementdetail.java

@@ -47,19 +47,46 @@ public class tpartreimbursementdetail extends Controller {
                 where.append(")");
             }
         }
-        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "itemid","qty","price","amount","rowno","sa_orderitemsid","sa_orderid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "itemid","price","amount","rowno","sa_orderitemsid","sa_orderid");
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.inner,"sa_order", "t2", "t1.sa_orderid = t2.sa_orderid AND t1.siteid = t2.siteid", "sonum");
         querySQL.addJoinTable(JOINTYPE.left,"plm_item", "t3", "t1.itemid = t3.itemid AND t1.siteid = t3.siteid", "itemno","itemname","model","spec");
         querySQL.setSiteid(siteid);
+        querySQL.setWhere("t1.billingstatus='保内收费'");
         if(!tpartreimbursementRows.get(0).getBoolean("createflag")){
-            querySQL.setWhere("t1.tobeoffqty>t1.verifiedqty and t1.tobeoffqty>0");
+            querySQL.setWhere("ifnull(t1.tobeoffqty,0)>ifnull(t1.verifiedqty,0) and ifnull(t1.tobeoffqty,0)>0");
         }
+
         querySQL.setWhere("t2.sys_enterpriseid",sys_enterpriseid);
         querySQL.setWhere(where.toString());
+        querySQL.addQueryFields("qty","ifnull(t1.tobeoffqty,0)");
         querySQL.setOrderBy("t1.rowno asc");
         querySQL.setPage(pageSize, pageNumber);
         Rows rows = querySQL.query();
+        if(rows.isNotEmpty()){
+            QuerySQL tpartreimbursementdetailQuery = SQLFactory.createQuerySQL(dbConnect, "sa_tpartreimbursementdetail", "sa_orderitemsid");
+            tpartreimbursementdetailQuery.addQueryFields("sumqty", "sum(qty)");
+            tpartreimbursementdetailQuery.setWhere("sa_orderitemsid", rows.toArrayList("sa_orderitemsid"));
+            tpartreimbursementdetailQuery.addGroupBy("sa_orderitemsid");
+
+
+            QuerySQL orderitemsQuery = SQLFactory.createQuerySQL(dbConnect, "sa_orderitems", "sa_orderitemsid");
+            orderitemsQuery.setTableAlias("t1");
+            orderitemsQuery.addJoinTable(JOINTYPE.left,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
+            orderitemsQuery.setWhere("t1.sa_orderitemsid", rows.toArrayList("sa_orderitemsid"));
+            orderitemsQuery.addQueryFields("qty", "t1.tobeoffqty-ifnull(t2.sumqty,0)");
+            Rows rows1 = orderitemsQuery.query();
+            RowsMap rowsMap= rows1.toRowsMap("sa_orderitemsid");
+            for(Row row :rows){
+                if(rowsMap.containsKey(row.getString("sa_orderitemsid"))){
+                    if(!tpartreimbursementRows.get(0).getBoolean("createflag")){
+                        row.put("qty",rowsMap.get(row.getString("sa_orderitemsid")).get(0).getBigDecimal("qty"));
+                    }
+
+                }
+            }
+        }
+
 
         return getSucReturnObject().setData(rows).toString();
     }
@@ -96,7 +123,7 @@ public class tpartreimbursementdetail extends Controller {
 
         QuerySQL orderitemsQuery = SQLFactory.createQuerySQL(dbConnect, "sa_orderitems", "sa_orderitemsid");
         orderitemsQuery.setTableAlias("t1");
-        orderitemsQuery.addJoinTable(JOINTYPE.inner,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
+        orderitemsQuery.addJoinTable(JOINTYPE.left,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
         orderitemsQuery.setWhere("t1.sa_orderitemsid", sa_orderitemsids);
         orderitemsQuery.addQueryFields("qty", "t1.tobeoffqty-ifnull(t2.sumqty,0)");
         Rows rows = orderitemsQuery.query();
@@ -165,9 +192,9 @@ public class tpartreimbursementdetail extends Controller {
         }
         Long sa_tpartreimbursementid = content.getLong("sa_tpartreimbursementid");
 
-        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail",  "sa_tpartreimbursementdetailid","remarks","sa_orderitemsid","sa_tpartreimbursementid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail",  "sa_tpartreimbursementdetailid","remarks","sa_orderitemsid","sa_tpartreimbursementid","qty");
         querySQL.setTableAlias("t1");
-        querySQL.addJoinTable(JOINTYPE.inner, "sa_orderitems", "t2", "t1.sa_orderitemsid = t2.sa_orderitemsid AND t1.siteid = t2.siteid","qty","price","amount","rowno","cardno","offstatus","billingstatus");
+        querySQL.addJoinTable(JOINTYPE.inner, "sa_orderitems", "t2", "t1.sa_orderitemsid = t2.sa_orderitemsid AND t1.siteid = t2.siteid","price","amount","rowno","cardno","billingstatus");
         querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t2.itemid = t3.itemid AND t2.siteid = t3.siteid","itemno","itemname","spec","model");
         querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t4", "t2.sa_orderid = t4.sa_orderid AND t2.siteid = t4.siteid","sonum");
         querySQL.addJoinTable(JOINTYPE.left, "sa_warrantycard", "t5", "t2.cardno = t5.cardno AND t2.siteid = t5.siteid","name","phonenumber");