Procházet zdrojové kódy

配件订单一键出库及批量出库

hu před 5 měsíci
rodič
revize
8df864b63c

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

@@ -6831,6 +6831,16 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2025110514571903 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025110515173403 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 1 - 1
src/custom/restcontroller/webmanage/sale/enterprise/enterprise.java

@@ -285,7 +285,7 @@ public class enterprise extends Controller {
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_enterprise", "siteid", "sys_enterpriseid",
                 "phonenumber", "contact", "enterprisename");
         querySQL.setTableAlias("t1");
-        querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid", "agentnum","signingstate");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid", "agentnum","signingstate","delivery");
         querySQL.setSiteid(siteid);
         querySQL.setWhere("t2.status='1'");
         if (ispj) {

+ 241 - 7
src/custom/restcontroller/webmanage/sale/order/Order.java

@@ -31,10 +31,7 @@ import restcontroller.webmanage.sale.accessoryorder.accessoryorder;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
+import java.util.*;
 
 import static beans.order.Order.*;
 
@@ -1509,6 +1506,12 @@ public class Order extends Controller {
         stockbillQuerySQL.setWhere("t1.siteid",siteid);
         stockbillQuerySQL.setWhere("t1.sa_orderitemsid",sa_orderitemsids);
         Rows stockbillRows =stockbillQuerySQL.query();
+
+        Row enterprisefinancerow =new Row();
+        Rows enterprisefinancerows = dbConnect.runSqlQuery("select t1.* from sys_enterprise_finance t1 inner join sa_order t2 on t1.sys_enterprise_financeid=t2.sys_enterprise_financeid where t2.sa_orderid="+sa_orderid);
+        if(enterprisefinancerows.isNotEmpty()){
+            enterprisefinancerow=enterprisefinancerows.get(0);
+        }
         if(stockbillRows.isNotEmpty()){
             return getErrReturnObject().setErrMsg("存在订单明细已生成销售出库单,无法一键出库").toString();
         }
@@ -1552,9 +1555,123 @@ public class Order extends Controller {
 
         insertSQL.setValue("outplace", outplace);
         insertSQL.setValue("delivery", orderRow.getString("delivery"));
-        insertSQL.setValue("invoice_enterprisename", "");
-        insertSQL.setValue("invoice_address", "");
-        insertSQL.setValue("invoice_taxno", "");
+        insertSQL.setValue("invoice_enterprisename", enterprisefinancerow.getString("enterprisename"));
+        insertSQL.setValue("invoice_address", enterprisefinancerow.getString("address"));
+        insertSQL.setValue("invoice_taxno", enterprisefinancerow.getString("taxno"));
+        insertSQL.setValue("tracknumber",enterprisefinancerow.getString(""));
+        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().setData(st_stockbillid).toString();
+    }
+
+    @API(title = "一键出库_配件", apiversion = R.ID2025110514571903.v1.class)
+    public String oneClickcreateStockbill_pj() 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();
+
+        Row enterprisefinancerow =new Row();
+        Rows enterprisefinancerows = dbConnect.runSqlQuery("select t1.* from sys_enterprise_finance t1 inner join sa_order t2 on t1.sys_enterprise_financeid=t2.sys_enterprise_financeid where t2.sa_orderid="+sa_orderid);
+        if(enterprisefinancerows.isNotEmpty()){
+            enterprisefinancerow=enterprisefinancerows.get(0);
+        }
+
+        if(stockbillRows.isNotEmpty()){
+            return getErrReturnObject().setErrMsg("存在配件申请单明细已生成销售出库单,无法一键出库").toString();
+        }
+        Rows rows = getOrderRows(this, sa_orderid);
+        if (rows.isEmpty()) {
+            return getErrReturnObject().setErrMsg("配件申请单不存在").toString();
+        }
+        if (!rows.get(0).getString("status").equals("审核")) {
+            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","*");
+        querySQL.setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.inner, "plm_item", "t2", "t2.itemid=t1.itemid and t1.siteid=t2.siteid","skucontrol","outplace");
+        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", rowsdetail.get(0).getString("outplace"));
+        insertSQL.setValue("delivery", orderRow.getString("delivery"));
+        insertSQL.setValue("invoice_enterprisename", enterprisefinancerow.getString("enterprisename"));
+        insertSQL.setValue("invoice_address", enterprisefinancerow.getString("address"));
+        insertSQL.setValue("invoice_taxno", enterprisefinancerow.getString("taxno"));
         insertSQL.setValue("tracknumber", "");
         insertSQL.setValue("isconfirm", 0);
 
@@ -1605,6 +1722,123 @@ public class Order extends Controller {
         return getSucReturnObject().setData(st_stockbillid).toString();
     }
 
+    @API(title = "批量一键出库_配件", apiversion = R.ID2025110515173403.v1.class)
+    public String oneClickcreateStockbills_pj() throws YosException {
+        JSONArray sa_orderids =content.getJSONArray("sa_orderids");
+//        String outplace=content.getString("outplace");
+        ArrayList<String> sqlList = new ArrayList<>();
+        QuerySQL orderQuerySQL = SQLFactory.createQuerySQL(this, "sa_order","sa_orderid","sys_enterpriseid","sys_enterprise_financeid","rec_contactsid");
+        orderQuerySQL.setTableAlias("t1");
+        orderQuerySQL.addJoinTable(JOINTYPE.inner, "sa_orderitems", "t2", "t2.sa_orderid=t1.sa_orderid and t1.siteid=t2.siteid",
+                "sa_orderitemsid","itemid","undeliqty","defaultprice","remarks","itemno","itemname","model","price","delivery");
+        orderQuerySQL.addJoinTable(JOINTYPE.inner, "plm_item", "t3", "t2.itemid=t3.itemid and t3.siteid=t2.siteid","skucontrol","outplace");
+        orderQuerySQL.setWhere("t1.siteid",siteid);
+        orderQuerySQL.setWhere("t1.sa_orderid",sa_orderids);
+        orderQuerySQL.setWhere("t1.status='审核' and t2.undeliqty>0 and ifnull(t2.delivery,'')!='' and t2.delivery!='随货'");
+        Rows orderRows =orderQuerySQL.query();
+
+        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",orderRows.toArrayList("sa_orderitemsid"));
+        Rows stockbillRows =stockbillQuerySQL.query();
+        if(stockbillRows.isNotEmpty()){
+            return getErrReturnObject().setErrMsg("存在配件申请单明细已生成销售出库单,无法一键出库").toString();
+        }
+
+        QuerySQL enterprisefinanceQuerySQL = SQLFactory.createQuerySQL(this, "sys_enterprise_finance","*");
+        enterprisefinanceQuerySQL.setTableAlias("t1");
+        enterprisefinanceQuerySQL.addJoinTable(JOINTYPE.inner, "sa_order", "t2", "t1.sys_enterprise_financeid=t2.sys_enterprise_financeid");
+        enterprisefinanceQuerySQL.setWhere("t1.siteid",siteid);
+        enterprisefinanceQuerySQL.setWhere("t2.sa_orderid",sa_orderids);
+        Rows enterprisefinancerows =enterprisefinanceQuerySQL.query();
+
+
+        RowsMap enterprisefinancerowsMap =enterprisefinancerows.toRowsMap("sys_enterpriseid");
+        RowsMap enterpriserowsMap = orderRows.toRowsMap("sys_enterpriseid");
+        RowsMap deliveryrowsMap = orderRows.toRowsMap("delivery");
+        Set<String> enterpriseSet = enterpriserowsMap.keySet();
+        Set<String>  deliverySet = deliveryrowsMap.keySet();
+        int stockbillcount=0;
+        for(String sys_enterpriseid :enterpriseSet){
+            for(String delivery:deliverySet){
+                if(enterpriserowsMap.get(sys_enterpriseid).toRowsMap("delivery").containsKey(delivery)){
+                    Rows orderdetailRows = enterpriserowsMap.get(sys_enterpriseid).toRowsMap("delivery").get(delivery);
+                    long st_stockbillid = createTableID("st_stockbill");
+                    InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
+                    insertSQL.setUniqueid(st_stockbillid);
+                    insertSQL.setSiteid(siteid);
+                    insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);
+                    insertSQL.setValue("rec_contactsid",  orderdetailRows.get(0).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", orderdetailRows.get(0).getString("outplace"));
+                    insertSQL.setValue("delivery", orderdetailRows.get(0).getString("delivery"));
+                    insertSQL.setValue("invoice_enterprisename",enterprisefinancerowsMap.containsKey(sys_enterpriseid)?enterprisefinancerowsMap.get(sys_enterpriseid).get(0).getString("enterprisename"):"");
+                    insertSQL.setValue("invoice_address",enterprisefinancerowsMap.containsKey(sys_enterpriseid)?enterprisefinancerowsMap.get(sys_enterpriseid).get(0).getString("address"):"");
+                    insertSQL.setValue("invoice_taxno",enterprisefinancerowsMap.containsKey(sys_enterpriseid)?enterprisefinancerowsMap.get(sys_enterpriseid).get(0).getString("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 : orderdetailRows) {
+                        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", 1);
+                        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());
+                    }
+                    sqlList.add("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
+                    stockbillcount++;
+                }
+            }
+        }
+        dbConnect.runSqlUpdate(sqlList);
+        return getSucReturnObject().setData("已生成"+enterpriseSet.size()+"家经销商,共"+stockbillcount+"张出库单").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})
     public String submit() throws YosException {