Ver Fonte

订单行一键出库

hu há 6 meses atrás
pai
commit
fbe9816e69

+ 10 - 0
src/custom/restcontroller/R.java

@@ -6766,6 +6766,16 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2025101815441503 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025101816382303 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 105 - 0
src/custom/restcontroller/webmanage/sale/order/Order.java

@@ -1498,7 +1498,109 @@ public class Order extends Controller {
 
         return getSucReturnObject().setData(rebateamount).toString();
     }
+    @API(title = "一键出库", apiversion = R.ID2025101815441503.v1.class)
+    public String oneClickcreateStockbill() throws YosException {
+        long sa_orderid =content.getLong("sa_orderid");
+        String outplace=content.getString("outplace");
+        JSONArray sa_orderitemsids=content.getJSONArray("sa_orderitemsids");
+        QuerySQL stockbillQuerySQL = SQLFactory.createQuerySQL(this, "st_stockbill_items");
+        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",sa_orderitemsids);
+        Rows stockbillRows =stockbillQuerySQL.query();
+        if(stockbillRows.isNotEmpty()){
+            return getErrReturnObject().setErrMsg("存在订单明细已生成销售出库单,无法一键出库").toString();
+        }
+        Rows rows = getOrderRows(this, sa_orderid);
+        if (rows.isEmpty()) {
+            return getErrReturnObject().setErrMsg("订单不存在").toString();
+        }
+        if(sa_orderitemsids.isEmpty()){
+            return getErrReturnObject().setErrMsg("未选择订单明细,无法一键出库").toString();
+        }
+        if(sa_orderitemsids.isEmpty()){
+            return getErrReturnObject().setErrMsg("未选择订单明细,无法一键出库").toString();
+        }
+        ArrayList<String> sqlList = new ArrayList<>();
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems","*");
+        stockbillQuerySQL.setTableAlias("t1");
+        stockbillQuerySQL.addJoinTable(JOINTYPE.inner, "plm_item", "t2", "t2.itemid=t1.itemid and t1.siteid=t2.siteid","skucontrol");
+        querySQL.setWhere("t1.siteid",siteid);
+        querySQL.setWhere("t1.sa_orderitemsid",sa_orderitemsids);
+        Rows rowsdetail = querySQL.query();
+        Row orderRow = rows.get(0);
 
+        long st_stockbillid = createTableID("st_stockbill");
+        InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
+        insertSQL.setUniqueid(st_stockbillid);
+        insertSQL.setSiteid(siteid);
+        insertSQL.setValue("sys_enterpriseid", orderRow.getLong("sys_enterpriseid"));
+        insertSQL.setValue("rec_contactsid",  orderRow.getLong("rec_contactsid"));
+        insertSQL.setValue("departmentid", 0);
+        insertSQL.setValue("stockid", 0);
+        insertSQL.setValue("type", "销售出库");
+        insertSQL.setValue("typemx", "");
+        insertSQL.setValue("sa_supplierid", 0);
+        insertSQL.setValue("rb", 1);
+        insertSQL.setValue("remarks", "");
+        insertSQL.setDateValue("billdate");
+        insertSQL.setValue("billno", createBillCode("stockbill"));
+
+        insertSQL.setValue("outplace", outplace);
+        insertSQL.setValue("delivery", orderRow.getString("delivery"));
+        insertSQL.setValue("invoice_enterprisename", "");
+        insertSQL.setValue("invoice_address", "");
+        insertSQL.setValue("invoice_taxno", "");
+        insertSQL.setValue("tracknumber", "");
+        insertSQL.setValue("isconfirm", 0);
+
+        insertSQL.setValue("period", getDate_Str().substring(0, 7));
+
+        insertSQL.setValue("createby", username);
+        insertSQL.setDateValue("createdate");
+        insertSQL.setValue("changeby", username);
+        insertSQL.setDateValue("changedate");
+        insertSQL.setValue("status", "新建");
+        insertSQL.setValue("payamount", 0);
+        insertSQL.setValue("paydiscountamount", 0);
+        sqlList.add(insertSQL.getSQL());
+
+        sqlList.add(DataContrlLog.createLog(this, "st_stockbill", st_stockbillid, "新增", "销售出库单新增成功").getSQL());
+
+        int i = 1;
+        BigDecimal payamount =BigDecimal.ZERO;
+        for (Row row : rowsdetail) {
+            payamount=payamount.add(row.getBigDecimal("undeliqty").multiply(row.getBigDecimal("price")));
+            insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
+            insertSQL.setUniqueid(createTableID("st_stockbill_items"));
+            insertSQL.setSiteid(siteid);
+            insertSQL.setValue("rowno",i);
+            insertSQL.setValue("st_stockbillid", st_stockbillid);
+            insertSQL.setValue("sa_orderitemsid", row.getLong("sa_orderitemsid"));
+            insertSQL.setValue("itemid", row.getLong("itemid"));
+            insertSQL.setValue("sa_orderid", row.getLong("sa_orderid"));
+            insertSQL.setValue("qty", row.getLong("undeliqty"));
+            insertSQL.setValue("discountrate", row.getBigDecimal("discountrate"));
+            insertSQL.setValue("sa_dispatch_itemsid", 0);
+            insertSQL.setValue("defaultprice", row.getBigDecimal("defaultprice"));
+            insertSQL.setValue("remarks", row.getString("remarks"));
+            insertSQL.setValue("itemno", row.getString("itemno"));
+            insertSQL.setValue("itemname", row.getString("itemname"));
+            insertSQL.setValue("model", row.getString("model"));
+            insertSQL.setValue("price", row.getBigDecimal("price"));
+            insertSQL.setValue("amount", row.getBigDecimal("undeliqty").multiply(row.getBigDecimal("price")));
+            insertSQL.setValue("untaxedprice", row.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP));
+            insertSQL.setValue("untaxedamount", row.getBigDecimal("undeliqty").multiply(row.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP)));
+            insertSQL.setValue("skucontrol", row.getBoolean("skucontrol"));
+            i++;
+            sqlList.add(insertSQL.getSQL());
+        }
+        dbConnect.runSqlUpdate(sqlList);
+        dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
+        content.put("st_stockbillid",st_stockbillid);
+        return getSucReturnObject().toString();
+    }
 
     @API(title = "提交", apiversion = R.ID20221108153402.v1.class, intervaltime = 5000)
     @CACHEING_CLEAN(apiClass = {Order.class, OrderItems.class, restcontroller.sale.order.Order.class, cashbill.class, promotion.class, restcontroller.webmanage.sale.promotion.promotion.class, accessoryorder.class})
@@ -2947,6 +3049,9 @@ public class Order extends Controller {
         return getSucReturnObject().setData(rows).toString();
     }
 
+
+
+
     @API(title = "查询订单进度", apiversion = R.ID20221229093602.v1.class)
     @CACHEING
     public String getOrderProcess() throws YosException {

+ 8 - 2
src/custom/restcontroller/webmanage/sale/stockbill/stockbill.java

@@ -775,7 +775,7 @@ public class stockbill extends Controller {
         } else if (sku.contains(";")) {
             ss = ";";
         }
-        String CODE[] = getDistinctArray(sku.split(ss));
+        String[] CODE = getDistinctArray(sku.split(ss));
 
         Rows rows = dbConnect.runSqlQuery("select t1.*,t2.stockno from st_stockbill t1 left join st_stock t2 on t1.stockid=t2.stockid where t1.st_stockbillid ='"
                 + st_stockbillid + "' and  t1.siteid='" + siteid + "'");
@@ -783,7 +783,13 @@ public class stockbill extends Controller {
                 + st_stockbillid + "' and  t1.siteid='" + siteid + "'");
         Rows stockbillitemskurows = dbConnect.runSqlQuery("select * from st_stockbill_items_sku where st_stockbillid ='"
                 + st_stockbillid + "' and  siteid='" + siteid + "'");
-        Rows skuRows = dbConnect.runSqlQuery("select t1.*,t2.itemno,t3.stockno from sa_itemsku t1 left join plm_item t2 on t1.itemid=t2.itemid left join st_stock t3 on t1.stockid=t3.stockid where t1.siteid='" + siteid + "'");
+        QuerySQL skuQuerySQL = SQLFactory.createQuerySQL(this, "sa_itemsku","*");
+        skuQuerySQL.setTableAlias("t1");
+        skuQuerySQL.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.itemid=t2.itemid","itemno");
+        skuQuerySQL.addJoinTable(JOINTYPE.left, "st_stock", "t3", "t1.stockid=t3.stockid","stockno");
+        skuQuerySQL.setWhere("t1.siteid",siteid);
+        skuQuerySQL.setWhere("t1.sku",CODE);
+        Rows skuRows =skuQuerySQL.query();
         RowsMap skuRowsMap = skuRows.toRowsMap("sku");
         if (rows.isEmpty()) {
             return getErrReturnObject().setErrMsg("该出入库单不存在")

+ 31 - 0
src/custom/restcontroller/webmanage/sale/stockbill/stockbillitemssku.java

@@ -1,5 +1,7 @@
 package restcontroller.webmanage.sale.stockbill;
 
+import beans.data.BatchDeleteErr;
+import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import common.Controller;
 import common.YosException;
@@ -8,6 +10,8 @@ import common.annotation.CACHEING;
 import common.data.*;
 import restcontroller.R;
 
+import java.util.ArrayList;
+
 public class stockbillitemssku extends Controller {
     public stockbillitemssku(JSONObject content) throws YosException {
         super(content);
@@ -50,5 +54,32 @@ public class stockbillitemssku extends Controller {
         return getSucReturnObject().setData(rows).toString();
     }
 
+    @API(title = "删除", apiversion = R.ID2025101816382303.v1.class)
+    public String deletemxsku() throws YosException {
+
+        JSONArray st_stockbill_items_skuids = content.getJSONArray("st_stockbill_items_skuids");
+        BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, st_stockbill_items_skuids.size());
+
+        for (Object o : st_stockbill_items_skuids) {
+            long st_stockbill_items_skuid = Long.parseLong(o.toString());
+            Rows RowsStatus = dbConnect.runSqlQuery("select t1.st_stockbill_items_skuid,t2.status,t1.st_stockbillid from st_stockbill_items_sku t1 left join st_stockbill t2 on t1.st_stockbillid=t2.st_stockbillid and t1.siteid=t2.siteid where t1.siteid='"
+                    + siteid + "' and t1.st_stockbill_items_skuid='" + st_stockbill_items_skuid + "'");
+
+            if (RowsStatus.isNotEmpty()) {
+
+                if (!RowsStatus.get(0).getString("status").equals("新建")) {
+                    batchDeleteErr.addErr(st_stockbill_items_skuid, "非新建状态的出库单序列号明细无法删除");
+                    continue;
+                }
+            }
+            ArrayList<String> list = new ArrayList<>();
+            list.add("delete from st_stockbill_items_sku where siteid='" + siteid
+                    + "' and st_stockbill_items_skuid=" + st_stockbill_items_skuid);
+
+            dbConnect.runSqlUpdate(list);
+        }
+        return batchDeleteErr.getReturnObject().toString();
+    }
+
 
 }