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

Merge remote-tracking branch 'origin/develop' into develop

shenjingwei 5 месяцев назад
Родитель
Сommit
659e5d5de3

+ 2 - 1
src/custom/beans/accountbalance/Accountbalance.java

@@ -1,5 +1,6 @@
 package beans.accountbalance;
 
+import beans.datacontrllog.DataContrlLog;
 import beans.remind.Remind;
 import com.alibaba.fastjson2.JSONObject;
 import common.BaseClass;
@@ -236,7 +237,6 @@ public class Accountbalance extends BaseClass {
             sqlFactory.addParameter("status", "审核");
             sqlFactory.addParameter("checkby", userInfo.getUserName());
             sqlFactory.addParameter_SQL("checkdate", "CURRENT_TIME");
-
             // 审核逻辑判断
             Rows rowsaccountbalance = dbConnect.runSqlQuery("select sa_accountbalanceid,balance,creditquota,discountamount from sa_accountbalance where sys_enterpriseid ='" + sys_enterpriseid + "' and  sa_accountclassid='" + sa_accountclassid + "' and siteid='" + userInfo.getSiteId() + "'");
             if (rowsaccountbalance.isEmpty()) {
@@ -266,6 +266,7 @@ public class Accountbalance extends BaseClass {
                 String content = "您的" + accountclassrows.get(0).getString("accountname") + "已支出【" + cashbillEntity.getAmount() + "】元";
                 new Accountbalance().sendMsg(dbConnect, userInfo, content, cashbillEntity.getOwnerid(), sys_enterpriseid);
             }
+            sqlList.add(DataContrlLog.createLog(new Controller(new JSONObject()), "sa_cashbill", sa_cashbillid, "审核", cashbillEntity.getRemarks()).getSQL());
         } else {
             sqlFactory.addParameter("status", "新建");
             sqlFactory.addParameter("checkby", "");

+ 9 - 9
src/custom/beans/stockbill/bills/BasicBill.java

@@ -49,6 +49,7 @@ public abstract class BasicBill {
             case "生产入库":
             case "委外入库":
             case "返修入库":
+                return new FXRK(controller, st_stockbillid);
             case "其他入库":
                 return new QTRK(controller, st_stockbillid);
             default: {
@@ -108,16 +109,15 @@ public abstract class BasicBill {
                 Rows olditemRows = dbConnect.runSqlQuery("select * from st_stockbill_items where siteid='" + siteid + "' and st_stockbillid=" + billRow.getLong("sourceid"));
                 RowsMap olditemRowsMap = olditemRows.toRowsMap("st_stockbill_itemsid");
                 for (Row row : itemRows) {
-                    if (!row.getString("sourceobject").equals("st_stockbill_items")) {
-                        throw new YosException("行号为:" + row.getString("rowno") + "的物料不在原单中,不可进行红冲");
-                    }
-                    if (olditemRowsMap.containsKey(row.getString("sourceid"))) {
-                        Row row1 = olditemRowsMap.get(row.getString("sourceid")).get(0);
-                        if (row.getBigDecimal("qty").compareTo((row1.getBigDecimal("qty").subtract(row1.getBigDecimal("hongqty")))) > 0) {
-                            throw new YosException("行号为:" + row.getString("rowno") + "的商品红冲数量超过原单可红冲数量" + row1.getBigDecimal("qty").subtract(row1.getBigDecimal("hongqty")));
+                    if (StringUtils.isNotBlank(row.getString("sourceobject")) && row.getString("sourceobject").equals("st_stockbill_items")) {
+                        if (olditemRowsMap.containsKey(row.getString("sourceid"))) {
+                            Row row1 = olditemRowsMap.get(row.getString("sourceid")).get(0);
+                            if (row.getBigDecimal("qty").compareTo((row1.getBigDecimal("qty").subtract(row1.getBigDecimal("hongqty")))) > 0) {
+                                throw new YosException("行号为:" + row.getString("rowno") + "的商品红冲数量超过原单可红冲数量" + row1.getBigDecimal("qty").subtract(row1.getBigDecimal("hongqty")));
+                            }
+                        } else {
+                            throw new YosException("行号为:" + row.getString("rowno") + "的物料不在原单中,不可进行红冲");
                         }
-                    } else {
-                        throw new YosException("行号为:" + row.getString("rowno") + "的物料不在原单中,不可进行红冲");
                     }
                 }
             }

+ 59 - 0
src/custom/beans/stockbill/bills/FXRK.java

@@ -0,0 +1,59 @@
+package beans.stockbill.bills;
+
+import beans.datacontrllog.DataContrlLog;
+import common.Controller;
+import common.YosException;
+import common.data.SQLFactory;
+import common.data.UpdateSQL;
+
+import java.util.ArrayList;
+
+public class FXRK extends BasicBill {
+
+    public FXRK(Controller controller, long st_stockbillid) throws YosException {
+        super(controller, st_stockbillid);
+    }
+
+    @Override
+    public void checkValidate(boolean ischeck) throws YosException {
+        super.checkValidate(ischeck);
+    }
+
+    @Override
+    public ArrayList<String> getCheckSql(boolean ischeck) throws YosException {
+        ArrayList<String> sqlList = super.getCheckSql(ischeck);
+        if (ischeck) {
+            if(billRow.getString("sourceobject").equals("sa_aftersalesmag")){
+                UpdateSQL updateSQL = SQLFactory.createUpdateSQL(controller, "sa_aftersalesmag");
+                updateSQL.setValue("changeby", controller.username);
+                updateSQL.setValue("status","已入库");
+                updateSQL.setWhere("sa_aftersalesmagid", billRow.getLong("sourceid"));
+                updateSQL.setWhere("siteid", siteid);
+                sqlList.add(updateSQL.getSQL());
+                sqlList.add(DataContrlLog.createLog(controller, "sa_aftersalesmag", billRow.getLong("sourceid"), "入库", "返修退货入库成功").getSQL());
+            }
+
+
+        }else{
+            if(billRow.getString("sourceobject").equals("sa_aftersalesmag")){
+                UpdateSQL updateSQL = SQLFactory.createUpdateSQL(controller, "sa_aftersalesmag");
+                updateSQL.setValue("changeby", controller.username);
+                updateSQL.setValue("status","审核");
+                updateSQL.setWhere("sa_aftersalesmagid", billRow.getLong("sourceid"));
+                updateSQL.setWhere("siteid", siteid);
+                sqlList.add(updateSQL.getSQL());
+                sqlList.add(DataContrlLog.createLog(controller, "sa_aftersalesmag", billRow.getLong("sourceid"), "反入库", "返修退货反入库成功").getSQL());
+            }
+        }
+        return sqlList;
+    }
+
+
+    @Override
+    public boolean isInStock(boolean fischeck) {
+        if (fischeck && rb == 1 || !fischeck && rb == 0) {
+            return true;
+        }
+        return false;
+    }
+}

+ 19 - 5
src/custom/restcontroller/webmanage/sale/aftersalesmag/aftersalesmag.java

@@ -305,7 +305,7 @@ public class aftersalesmag extends Controller {
         Long sa_aftersalesmagid = content.getLong("sa_aftersalesmagid");
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_aftersalesmag", "*");
         querySQL.setTableAlias("t1");
-        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid", "enterprisename");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid", "enterprisename","abbreviation");
         querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid", "agentnum");
         querySQL.addJoinTable(JOINTYPE.left, "sa_aftersalesmag_items", "t4", "t1.sa_aftersalesmagid = t4.sa_aftersalesmagid AND t1.siteid = t4.siteid", "name", "phonenumber", "address",
                 "stockdate", "enddate", "model", "spec", "unitname", "itemname", "itemno", "duty", "demand", "machinecode", "qty", "itemid");
@@ -549,17 +549,19 @@ public class aftersalesmag extends Controller {
         }
         ArrayList<String> sqlList = new ArrayList<>();
         SQLFactory sqlFactoryupdate;
+        Rows departmenthrrows =dbConnect.runSqlQuery("select *from sys_departmenthrid where hrid="+hrid);
         if (ischeck) {
             InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
-            long st_stockbillid = createTableID("STOCKBILL8");
+            long st_stockbillid = createTableID("st_stockbill");
             insertSQL.setUniqueid(st_stockbillid);
             insertSQL.setSiteid(siteid);
-            insertSQL.setValue("billno", createBillCode("stockbill"));
+            insertSQL.setValue("billno", createBillCode("STOCKBILL8"));
             insertSQL.setValue("type", "返修入库");
 //            insertSQL.setValue("typemx", "");
             insertSQL.setValue("sys_enterpriseid", rows.get(0).getLong("sys_enterpriseid"));
             insertSQL.setValue("rb", 1);
             insertSQL.setValue("sourceobject", "sa_aftersalesmag");
+            insertSQL.setValue("departmentid", departmenthrrows.isNotEmpty()?departmenthrrows.get(0).getLong("departmentid"):0);
             insertSQL.setValue("sourceid", sa_aftersalesmagid);
             insertSQL.setValue("stockid", stockid);
             insertSQL.setValue("remarks", rows.get(0).getString("remarks"));
@@ -568,7 +570,8 @@ public class aftersalesmag extends Controller {
             insertSQL.setDateValue("createdate");
             insertSQL.setDateValue("billdate");
             sqlList.add(insertSQL.getSQL());
-
+            sqlList.add(
+                    DataContrlLog.createLog(this, "st_stockbill", st_stockbillid, "新增", "返修入库新增成功").getSQL());
             int i = 1;
             for (Row row : rowsdetail) {
                 insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
@@ -579,7 +582,7 @@ public class aftersalesmag extends Controller {
                 insertSQL.setValue("sa_dispatch_itemsid", 0);
                 insertSQL.setValue("sourceobject", "sa_aftersalesmag_items");
                 insertSQL.setValue("sourceid", row.getLong("sa_aftersalesmag_itemsid"));
-                insertSQL.setValue("stockid", row.getLong("outstockid"));
+                insertSQL.setValue("stockid", stockid);
                 insertSQL.setValue("itemid", row.getLong("itemid"));
                 insertSQL.setValue("itemno", row.getString("itemno"));
                 insertSQL.setValue("itemname", row.getString("itemname"));
@@ -590,6 +593,17 @@ public class aftersalesmag extends Controller {
                 insertSQL.setValue("st_stockbillid", st_stockbillid);
                 i++;
                 sqlList.add(insertSQL.getSQL());
+
+                insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
+                long st_stockbill_items_skuid = createTableID("st_stockbill_items_sku");
+                insertSQL.setUniqueid(st_stockbill_items_skuid);
+                insertSQL.setSiteid(siteid);
+                insertSQL.setValue("stockid",stockid);
+                insertSQL.setValue("itemid", row.getLong("itemid"));
+                insertSQL.setValue("sku", row.getString("machinecode"));
+                insertSQL.setValue("st_stockbillid", st_stockbillid);
+                insertSQL.setValue("st_stockbill_itemsid", st_stockbill_itemsid);
+                sqlList.add(insertSQL.getSQL());
             }
             sqlFactoryupdate = new SQLFactory(this, "返退单审核");
             sqlList.add(

+ 3 - 0
src/custom/restcontroller/webmanage/sale/item/Item.java

@@ -245,6 +245,7 @@ public class Item extends Controller {
         sqlFactory.addParameter("repairattribute", content.getStringValue("repairattribute"));
         sqlFactory.addParameter("shapesize", content.getStringValue("shapesize"));
         sqlFactory.addParameter("kw", content.getStringValue("kw"));
+        sqlFactory.addParameter("gysmc", content.getStringValue("gysmc"));
 
 
         String topclassnum="";
@@ -519,6 +520,7 @@ public class Item extends Controller {
         sqlFactory.addParameter("shapesize", item.getString("shapesize"));
         sqlFactory.addParameter("topclassnum", item.getString("topclassnum"));
         sqlFactory.addParameter("kw", item.getString("kw"));
+        sqlFactory.addParameter("gysmc", item.getString("gysmc"));
 
         sqlList.add(sqlFactory.getSQL());
         // 货品档案扩展属性字段表
@@ -1786,6 +1788,7 @@ public class Item extends Controller {
                     // 是否服务物料
                     sqlFactory.addParameter("isservice", row.getString("isservice").equals("是") ? 1 : 0);
                     sqlFactory.addParameter("kw", row.getString("kw"));
+                    sqlFactory.addParameter("gysmc", row.getString("gysmc"));
 
                     sqlList.add(sqlFactory.getSQL());
                     // 货品档案扩展属性字段表

+ 1 - 0
src/custom/restcontroller/webmanage/sale/item/SQL/货品档案列表.sql

@@ -65,6 +65,7 @@ SELECT t1.itemid,
        t1.shapesize,
        t1.topclassnum,
        t1.kw,
+       t1.gysmc,
        t6.auxunitid,
        t6.unitgroupname,
        t7.unitname axunitname,

+ 2 - 2
src/custom/restcontroller/webmanage/sale/item/SQL/货品档案新增.sql

@@ -6,7 +6,7 @@ insert into plm_item (siteid, itemid, createby, createdate, changeuserid, change
                       sa_customschemeid, cheek, delistingstatus, financeclasstype, stockno, volume, marketingcategory,
                       pricingmetod,cheekschemeid,colorschemeid,materialschemeid,cost,grossprofit,grossprofitmargin,saleprice,
                       rate,grade,custamount,safeqty,icaddqty,icminqty,iswriteoff,isnegative,ispartorderautocheck,islimitemparts,itemname_print,
-                      applicablegassource,hygienelicensenum,departmentid,executionstandards,itemclsnum,outplace,repairattribute,shapesize,topclassnum,aftersalesitemno,kw)
+                      applicablegassource,hygienelicensenum,departmentid,executionstandards,itemclsnum,outplace,repairattribute,shapesize,topclassnum,aftersalesitemno,kw,gysmc)
 values ($siteid$, $itemid$, $username$, CURRENT_TIME, $userid$, $username$, CURRENT_TIME, $itemno$, $unitid$,
         $isauxunit$, $unitgroupid$, $itemname$, $isonsale$, '新建', $model$, $spec$, $orderminqty$, $orderaddqty$,
         $orderminqty_auxunit$, $orderaddqty_auxunit$, $remarks$, $barcode$, $skucontrol$, $batchcontrol$, $grossweight$,
@@ -15,4 +15,4 @@ values ($siteid$, $itemid$, $username$, CURRENT_TIME, $userid$, $username$, CURR
         $iswoodproducts$, $sa_customschemeid$, $cheek$, $delistingstatus$, $financeclasstype$, $stockno$, $volume$,
         $marketingcategory$, $pricingmetod$,$cheekschemeid$,$colorschemeid$,$materialschemeid$,$cost$,$grossprofit$,$grossprofitmargin$,$saleprice$,
         $rate$,$grade$,$custamount$,$safeqty$,$icaddqty$,$icminqty$,$iswriteoff$,$isnegative$,$ispartorderautocheck$,$islimitemparts$,$itemname_print$,
-        $applicablegassource$,$hygienelicensenum$,$departmentid$,$executionstandards$,$itemclsnum$,$outplace$,$repairattribute$,$shapesize$,$topclassnum$,$aftersalesitemno$,$kw$)
+        $applicablegassource$,$hygienelicensenum$,$departmentid$,$executionstandards$,$itemclsnum$,$outplace$,$repairattribute$,$shapesize$,$topclassnum$,$aftersalesitemno$,$kw$,$gysmc$)

+ 2 - 1
src/custom/restcontroller/webmanage/sale/item/SQL/货品档案更新.sql

@@ -75,7 +75,8 @@ SET changeuserid=$userid$,
     shapesize=$shapesize$,
     topclassnum=$topclassnum$,
     aftersalesitemno=$aftersalesitemno$,
-    kw=$kw$
+    kw=$kw$,
+    gysmc=$gysmc$
 WHERE itemid = $itemid$
   and siteid = $siteid$
 

+ 157 - 11
src/custom/restcontroller/webmanage/sale/order/Order.java

@@ -28,6 +28,7 @@ import restcontroller.sale.promotion.promotion;
 import restcontroller.webmanage.executorService.Executor;
 import restcontroller.webmanage.sale.accessoryorder.accessoryorder;
 
+import javax.swing.*;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
@@ -1723,6 +1724,8 @@ public class Order extends Controller {
         querySQL.setWhere("t1.sa_orderitemsid",sa_orderitemsids);
         Rows rowsdetail = querySQL.query();
         Row orderRow = rows.get(0);
+        Rows departmenthrrows =dbConnect.runSqlQuery("select *from sys_departmenthrid where hrid="+hrid);
+        Rows accountbalancerows = dbConnect.runSqlQuery("select * from  sa_accountbalance t1 inner join sa_accountclass t2 on  t1.sa_accountclassid=t2.sa_accountclassid and t1.siteid=t2.siteid where t2.accountname='现金账户' and t1.sys_enterpriseid=" + orderRow.getLong("sys_enterpriseid"));
 
         long st_stockbillid = createTableID("st_stockbill");
         InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
@@ -1730,7 +1733,7 @@ public class Order extends Controller {
         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("departmentid", departmenthrrows.isNotEmpty()?departmenthrrows.get(0).getLong("departmentid"):0);
         insertSQL.setValue("stockid", 0);
         insertSQL.setValue("type", "销售出库");
         insertSQL.setValue("typemx", "");
@@ -1790,7 +1793,21 @@ public class Order extends Controller {
             sqlList.add(insertSQL.getSQL());
         }
         dbConnect.runSqlUpdate(sqlList);
-        dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
+        if(accountbalancerows.isNotEmpty()){
+            if(accountbalancerows.get(0).getBigDecimal("discountamount").compareTo(BigDecimal.ZERO)>0){
+                if(accountbalancerows.get(0).getBigDecimal("discountamount").compareTo(payamount)>0){
+                    dbConnect.runSqlUpdate("update st_stockbill set payamount=0,discountamount="+accountbalancerows.get(0).getBigDecimal("discountamount")+" where st_stockbillid="+st_stockbillid);
+                }else{
+                    dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount.subtract(accountbalancerows.get(0).getBigDecimal("discountamount"))+",discountamount="+accountbalancerows.get(0).getBigDecimal("discountamount")+" where st_stockbillid="+st_stockbillid);
+                }
+            }else{
+                dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
+            }
+
+        }else{
+            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();
     }
@@ -1807,12 +1824,74 @@ public class Order extends Controller {
         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!='随货'");
+        orderQuerySQL.setWhere("t1.status='审核' and t1.type='配件订单' and t2.undeliqty>0 and ifnull(t2.delivery,'')!='' and t2.delivery!='随货'");
         Rows orderRows =orderQuerySQL.query();
 
+        QuerySQL orderQuerySQL_jundge = SQLFactory.createQuerySQL(this, "sa_order","sa_orderid","status","sonum","type","delivery");
+        orderQuerySQL_jundge.setTableAlias("t1");
+        orderQuerySQL_jundge.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","rowno");
+        orderQuerySQL_jundge.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t4.sys_enterpriseid=t1.sys_enterpriseid and t4.siteid=t1.siteid", "agentnum");
+        orderQuerySQL_jundge.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t5.sys_enterpriseid=t4.sys_enterpriseid and t5.siteid=t4.siteid", "enterprisename", "abbreviation");
+        orderQuerySQL_jundge.setWhere("t1.siteid",siteid);
+        orderQuerySQL_jundge.setWhere("t1.sa_orderid",sa_orderids);
+        Rows orderRows_jundge =orderQuerySQL_jundge.query();
+        Rows errRows =new Rows();
+        for(Row row :orderRows_jundge){
+            Row errRow =new Row();
+            if(!row.getString("status").equals("审核")){
+                errRow.put("sa_orderid",row.getLong("sa_orderid"));
+                errRow.put("sonum",row.getString("sonum"));
+                errRow.put("agentnum",row.getString("agentnum"));
+                errRow.put("status",row.getString("status"));
+                errRow.put("abbreviation",row.getString("abbreviation"));
+                errRow.put("delivery",row.getString("delivery"));
+                errRow.put("errreason","非审核状态不可发货");
+                errRows.add(errRow);
+            }else if(!row.getString("type").equals("配件订单")){
+                errRow.put("sa_orderid",row.getLong("sa_orderid"));
+                errRow.put("sonum",row.getString("sonum"));
+                errRow.put("agentnum",row.getString("agentnum"));
+                errRow.put("status",row.getString("status"));
+                errRow.put("abbreviation",row.getString("abbreviation"));
+                errRow.put("delivery",row.getString("delivery"));
+                errRow.put("errreason","非配件申请单不可发货");
+                errRows.add(errRow);
+            }else if(row.getDouble("undeliqty")<=0){
+                errRow.put("sa_orderid",row.getLong("sa_orderid"));
+                errRow.put("sonum",row.getString("sonum"));
+                errRow.put("agentnum",row.getString("agentnum"));
+                errRow.put("status",row.getString("status"));
+                errRow.put("abbreviation",row.getString("abbreviation"));
+                errRow.put("delivery",row.getString("delivery"));
+                errRow.put("errreason","行号"+row.getString("rowno")+"的商品已发货,不可发货");
+                errRows.add(errRow);
+            }else if(StringUtils.isBlank(row.getString("delivery"))){
+                errRow.put("sa_orderid",row.getLong("sa_orderid"));
+                errRow.put("sonum",row.getString("sonum"));
+                errRow.put("agentnum",row.getString("agentnum"));
+                errRow.put("status",row.getString("status"));
+                errRow.put("abbreviation",row.getString("abbreviation"));
+                errRow.put("delivery",row.getString("delivery"));
+                errRow.put("errreason","行号"+row.getString("rowno")+"的商品发货方式为空,不可发货");
+                errRows.add(errRow);
+            }else if(row.getString("delivery").equals("随货")){
+                errRow.put("sa_orderid",row.getLong("sa_orderid"));
+                errRow.put("sonum",row.getString("sonum"));
+                errRow.put("agentnum",row.getString("agentnum"));
+                errRow.put("status",row.getString("status"));
+                errRow.put("abbreviation",row.getString("abbreviation"));
+                errRow.put("delivery",row.getString("delivery"));
+                errRow.put("errreason","行号"+row.getString("rowno")+"的商品发货方式为随货,不可发货");
+                errRows.add(errRow);
+            }
+        }
+
+
         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.addJoinTable(JOINTYPE.left, "sa_orderitems", "t4", "t4.sa_orderitemsid=t1.sa_orderitemsid and t4.siteid=t1.siteid", "sa_orderid");
         stockbillQuerySQL.setWhere("t1.siteid",siteid);
         if(orderRows.toArrayList("sa_orderitemsid").isEmpty()){
             stockbillQuerySQL.setWhere("1=2");
@@ -1820,24 +1899,73 @@ public class Order extends Controller {
             stockbillQuerySQL.setWhere("t1.sa_orderitemsid",orderRows.toArrayList("sa_orderitemsid"));
         }
         Rows stockbillRows =stockbillQuerySQL.query();
-        if(stockbillRows.isNotEmpty()){
-            return getErrReturnObject().setErrMsg("存在配件申请单明细已生成销售出库单,无法一键出库").toString();
+        RowsMap stockbillRowsMap =stockbillRows.toRowsMap("sa_orderitemsid");
+        RowsMap orderRows_jundgeMap =orderRows_jundge.toRowsMap("sa_orderid");
+        for(Row row :stockbillRows){
+            Row errRow =new Row();
+            if(orderRows_jundgeMap.containsKey(row.getString("sa_orderid"))){
+                errRow.put("sa_orderid",orderRows_jundgeMap.get(row.getString("sa_orderid")).get(0).getLong("sa_orderid"));
+                errRow.put("sonum",orderRows_jundgeMap.get(row.getString("sa_orderid")).get(0).getString("sonum"));
+                errRow.put("agentnum",orderRows_jundgeMap.get(row.getString("sa_orderid")).get(0).getString("agentnum"));
+                errRow.put("status",orderRows_jundgeMap.get(row.getString("sa_orderid")).get(0).getString("status"));
+                errRow.put("abbreviation",orderRows_jundgeMap.get(row.getString("sa_orderid")).get(0).getString("abbreviation"));
+                errRow.put("delivery",orderRows_jundgeMap.get(row.getString("sa_orderid")).get(0).getString("delivery"));
+                errRow.put("errreason","已存在出库单");
+                errRows.add(errRow);
+            }
+        }
+
+        RowsMap errRowsMap=errRows.toRowsMap("sa_orderid");
+        Set<String> errSet=errRowsMap.keySet();
+        for(String sa_orderid :errSet){
+            if(errRowsMap.get(sa_orderid).size()>1){
+                String errreason = String.join(", ", errRowsMap.get(sa_orderid).toArrayList("errreason"));
+                for(Row row : errRowsMap.get(sa_orderid)){
+                    row.put("errreason",errreason);
+                }
+            }
+        }
+        LinkedHashSet<Row> linkedSet = new LinkedHashSet<>(errRows);
+        Rows errRows_result = new Rows();
+        for(Row row :linkedSet){
+            errRows_result.add(row);
+        }
+
+        Rows orderRows_result = new Rows();
+        for(Row row :orderRows){
+            if(!stockbillRowsMap.containsKey(row.getString("sa_orderitemsid"))){
+                orderRows_result.add(row);
+            }
         }
+//        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);
+        enterprisefinanceQuerySQL.setWhere("t2.sa_orderid",orderRows_result.toArrayList("sa_orderid"));
         Rows enterprisefinancerows =enterprisefinanceQuerySQL.query();
 
 
         RowsMap enterprisefinancerowsMap =enterprisefinancerows.toRowsMap("sys_enterpriseid");
-        RowsMap enterpriserowsMap = orderRows.toRowsMap("sys_enterpriseid");
-        RowsMap deliveryrowsMap = orderRows.toRowsMap("delivery");
+        RowsMap enterpriserowsMap = orderRows_result.toRowsMap("sys_enterpriseid");
+        RowsMap deliveryrowsMap = orderRows_result.toRowsMap("delivery");
         Set<String> enterpriseSet = enterpriserowsMap.keySet();
         Set<String>  deliverySet = deliveryrowsMap.keySet();
         int stockbillcount=0;
+
+        QuerySQL accountbalanceQuerySQL = SQLFactory.createQuerySQL(this, "sa_accountbalance","*");
+        accountbalanceQuerySQL.setTableAlias("t1");
+        accountbalanceQuerySQL.addJoinTable(JOINTYPE.inner, "sa_accountclass", "t2", "t1.sa_accountclassid=t2.sa_accountclassid and t1.siteid=t2.siteid");
+        accountbalanceQuerySQL.setWhere("t1.siteid",siteid);
+        accountbalanceQuerySQL.setWhere("t2.accountname='现金账户'");
+        accountbalanceQuerySQL.setWhere("t1.sys_enterpriseid",orderRows_result.toArrayList("sys_enterpriseid"));
+        Rows accountbalancerows =accountbalanceQuerySQL.query();
+        RowsMap accountbalancerowsMap = accountbalancerows.toRowsMap("sys_enterpriseid");
+
+        Rows departmenthrrows =dbConnect.runSqlQuery("select *from sys_departmenthrid where hrid="+hrid);
         for(String sys_enterpriseid :enterpriseSet){
             for(String delivery:deliverySet){
                 if(enterpriserowsMap.get(sys_enterpriseid).toRowsMap("delivery").containsKey(delivery)){
@@ -1848,7 +1976,7 @@ public class Order extends Controller {
                     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("departmentid", departmenthrrows.isNotEmpty()?departmenthrrows.get(0).getLong("departmentid"):0);
                     insertSQL.setValue("stockid", 0);
                     insertSQL.setValue("type", "销售出库");
                     insertSQL.setValue("typemx", "");
@@ -1907,13 +2035,31 @@ public class Order extends Controller {
                         i++;
                         sqlList.add(insertSQL.getSQL());
                     }
-                    sqlList.add("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
+
+                    if(accountbalancerowsMap.containsKey(sys_enterpriseid)){
+                        if(accountbalancerowsMap.get(sys_enterpriseid).get(0).getBigDecimal("discountamount").compareTo(BigDecimal.ZERO)>0){
+                            if(accountbalancerowsMap.get(sys_enterpriseid).get(0).getBigDecimal("discountamount").compareTo(payamount)>0){
+                                sqlList.add("update st_stockbill set payamount=0,discountamount="+accountbalancerowsMap.get(sys_enterpriseid).get(0).getBigDecimal("discountamount")+" where st_stockbillid="+st_stockbillid);
+                            }else{
+                                sqlList.add("update st_stockbill set payamount="+payamount.subtract(accountbalancerowsMap.get(sys_enterpriseid).get(0).getBigDecimal("discountamount"))+",discountamount="+accountbalancerowsMap.get(sys_enterpriseid).get(0).getBigDecimal("discountamount")+" where st_stockbillid="+st_stockbillid);
+                            }
+                        }else{
+                            sqlList.add("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
+                        }
+                    }else{
+                        sqlList.add("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
+                    }
+//                    sqlList.add("update st_stockbill set payamount="+payamount+" where st_stockbillid="+st_stockbillid);
                     stockbillcount++;
                 }
             }
         }
         dbConnect.runSqlUpdate(sqlList);
-        return getSucReturnObject().setData("已生成"+enterpriseSet.size()+"家经销商,共"+stockbillcount+"张出库单").toString();
+        HashMap<String,Object> result=new HashMap<>();
+        String success= "已生成"+enterpriseSet.size()+" 家经销商,共"+stockbillcount+"张出库单;失败"+errRows_result.toRowsMap("agentnum").size()+"家经销商,共"+errRows_result.toRowsMap("sonum").size()+"张订单!";
+        result.put("success",success);
+        result.put("errinfo",errRows_result);
+        return getSucReturnObject().setData(result).toString();
     }
 
     @API(title = "提交", apiversion = R.ID20221108153402.v1.class, intervaltime = 5000)

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

@@ -60,8 +60,8 @@ public class OrderItems extends Controller {
         if (orderRows.isEmpty()) {
             return getErrReturnObject().setErrMsg("数据不存在,无法添加").toString();
         } else {
-            if (!orderRows.get(0).getString("status").equals("新建") && !orderRows.get(0).getString("status").equals("预提交")) {
-                return getErrReturnObject().setErrMsg("非新建或预提交状态无法操作").toString();
+            if (!orderRows.get(0).getString("status").equals("新建") && !orderRows.get(0).getString("status").equals("提交") && !orderRows.get(0).getString("status").equals("预提交")) {
+                return getErrReturnObject().setErrMsg("状态无法操作").toString();
             }
         }
 
@@ -494,8 +494,8 @@ public class OrderItems extends Controller {
         if (orderRows.isEmpty()) {
             return getErrReturnObject().setErrMsg("数据不存在,无法添加").toString();
         } else {
-            if (!orderRows.get(0).getString("status").equals("新建")) {
-                return getErrReturnObject().setErrMsg("非新建状态无法删除").toString();
+            if (!orderRows.get(0).getString("status").equals("新建") && !orderRows.get(0).getString("status").equals("提交")) {
+                return getErrReturnObject().setErrMsg("非新建提交状态无法删除").toString();
             }
         }
 

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

@@ -106,7 +106,7 @@ public class sendrepair extends Controller {
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid","enterprisename");
         querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid","agentnum");
         querySQL.addJoinTable(JOINTYPE.left, "sa_sendrepair_detail", "t4", "t1.sa_sendrepairid = t4.sa_sendrepairid AND t1.siteid = t4.siteid","newspec","newitemno","newitemname",
-                "newitemid","newsku","agentcost","practicalamount","instockdate","amount","logisticscost","logistics","idearemarks","disposition","demand","reason","duty",
+                "newitemid","newsku","agentcost","practicalamount","amount","logisticscost","logistics","idearemarks","disposition","demand","reason","duty",
                 "stockdate","enddate","phonenumber","name","qty","itemid","sku");
         querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t5", "t5.itemid = t4.itemid AND t5.siteid = t4.siteid","itemname","itemno","spec","model");
         querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t6", "t5.unitid = t6.unitid AND t5.siteid = t6.siteid","unitname");

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

@@ -712,8 +712,14 @@ public class serviceorder extends Controller {
             }
         }
 
-        sqlList.add("update sa_workorder set status='待接单' where sa_workorderid ='"
-                + sa_workorderid + "' and  siteid='" + siteid + "'");
+        if(rows.get(0).getString("status").equals("提交")){
+            sqlList.add("update sa_workorder set status='进行中' where sa_workorderid ='"
+                    + sa_workorderid + "' and  siteid='" + siteid + "'");
+        }else{
+            sqlList.add("update sa_workorder set status='待接单' where sa_workorderid ='"
+                    + sa_workorderid + "' and  siteid='" + siteid + "'");
+        }
+
         sqlList.add("delete from sys_datateam where ownertable='sa_workorder' and ownerid="
                 + sa_workorderid + " and siteid='" + siteid + "'");
         if (projectlearders != null && !projectlearders.isEmpty()) {

+ 9 - 6
src/custom/restcontroller/webmanage/sale/stockbill/stockbill.java

@@ -154,18 +154,21 @@ public class stockbill extends Controller {
                     updateSQL.setValue("invoice_taxno", content.getStringValue("invoice_taxno"));
                     updateSQL.setValue("tracknumber", tracknumber);
                     updateSQL.setValue("isconfirm", isconfirm);
-                    updateSQL.setValue("payamount", content.getBigDecimal("payamount"));
-                    updateSQL.setValue("paydiscountamount", content.getBigDecimal("paydiscountamount"));
+                    if(type.equals("销售出库")){
+                        updateSQL.setValue("payamount", content.getBigDecimal("payamount"));
+                        updateSQL.setValue("paydiscountamount", content.getBigDecimal("paydiscountamount"));
+                        if(content.getBigDecimal("payamount").compareTo(rows.get(0).getBigDecimal("payamount"))!=0
+                                || content.getBigDecimal("paydiscountamount").compareTo(rows.get(0).getBigDecimal("paydiscountamount"))!=0){
+                            sqlList.add(DataContrlLog.createLog(this, "st_stockbill", st_stockbillid, "金额更新变更", "销售出库单更支付金额:"+content.getBigDecimal("payamount")+",优惠金额:"+content.getBigDecimal("paydiscountamount")).getSQL());
+                        }
+                    }
+
                     updateSQL.setValue("period", content.getStringValue("period"));
 
                     updateSQL.setValue("changeby", username);
                     updateSQL.setDateValue("changedate");
                     sqlList.add(updateSQL.getSQL());
 
-                    if(content.getBigDecimal("payamount").compareTo(rows.get(0).getBigDecimal("payamount"))!=0
-                            || content.getBigDecimal("paydiscountamount").compareTo(rows.get(0).getBigDecimal("paydiscountamount"))!=0){
-                        sqlList.add(DataContrlLog.createLog(this, "st_stockbill", st_stockbillid, "金额更新变更", "销售出库单更支付金额:"+content.getBigDecimal("payamount")+",优惠金额:"+content.getBigDecimal("paydiscountamount")).getSQL());
-                    }
 
                     sqlList.add(DataContrlLog.createLog(this, "st_stockbill", st_stockbillid, "更新", "销售出库单更新成功").getSQL());
                 } else {

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

@@ -383,7 +383,7 @@ public class toolscode extends Controller {
     @API(title = "查询序列号使用记录", apiversion = R.ID2025101809551503.v1.class)
     public String querySkuUsedList() throws YosException {
         String sku = content.getString("sku");
-        Rows rows = dbConnect.runSqlQuery("select * from sku_use_view where sku='" + sku + "' order by checkdate asc");
+        Rows rows = dbConnect.runSqlQuery("select * from sku_use_view where sku='" + sku + "' order by checkdate desc");
         return getSucReturnObject().setData(rows).toString();
     }
 

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

@@ -167,6 +167,12 @@ public class tpartreimbursement extends Controller {
         querySQL.addJoinTable(JOINTYPE.left, "sa_salearea", "t5", "t5.sa_saleareaid = t4.sa_saleareaid AND t5.siteid = t4.siteid","areanum","areaname","areafullname");
         querySQL.setWhere("t1.siteid", siteid);
         querySQL.setWhere(where);
+        if(sys_enterpriseid <= 0){
+            querySQL.setWhere("((t1.createflag=0 and t1.status!='新建') or t1.createflag=1)");
+        }else{
+            querySQL.setWhere("((t1.createflag=1 and t1.status!='新建') or t1.createflag=0)");
+        }
+
         querySQL.setPage(pageSize, pageNumber);
         querySQL.setOrderBy("t1.sa_tpartreimbursementid desc");
         Rows rows = querySQL.query();

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

@@ -128,7 +128,7 @@ public class tpartreimbursementdetail extends Controller {
         orderitemsQuery.addQueryFields("qty", "t1.tobeoffqty-ifnull(t2.sumqty,0)");
         Rows rows = orderitemsQuery.query();
         RowsMap rowsMap = rows.toRowsMap("sa_orderitemsid");
-        if(!rowscount.get(0).getBoolean("createflag")){
+//        if(!rowscount.get(0).getBoolean("createflag")){
             for (int i = 0; i < iteminfos.size(); i++) {
                 if(rowsMap.containsKey(iteminfos.getJSONObject(i).getStringValue("sa_orderitemsid"))){
                     if(rowsMap.get(iteminfos.getJSONObject(i).getStringValue("sa_orderitemsid")).get(0).getBigDecimal("qty").compareTo(iteminfos.getJSONObject(i).getBigDecimal("qty"))<0){
@@ -136,7 +136,7 @@ public class tpartreimbursementdetail extends Controller {
                     }
                 }
             }
-        }
+//        }
 
         int i = 0;
         long[] sa_tpartreimbursementdetailid = createTableID("sa_tpartreimbursementdetail", iteminfos.size());

+ 4 - 11
src/custom/restcontroller/webmanage/sale/workorder/workorder.java

@@ -142,14 +142,7 @@ public class workorder extends Controller {
 
         sqlList.add(updateSQL.getSQL());
 
-        UpdateSQL updateSQLdetail = SQLFactory.createUpdateSQL(this, "sa_serviceorderitems");
-        updateSQLdetail.setUniqueid(sa_serviceorderid);
-        updateSQLdetail.setSiteid(siteid);
-        updateSQLdetail.setValue("itemid", itemid);
-        updateSQLdetail.setValue("sku", sku);
-        updateSQLdetail.setValue("cardno", cardno);
-
-        sqlList.add(updateSQLdetail.getSQL());
+        sqlList.add("update sa_serviceorderitems set itemid='"+itemid+"',sku='"+sku+"',cardno='"+cardno+"' where sa_serviceorderid="+sa_serviceorderid+" and  siteid ='"+siteid+"'");
         dbConnect.runSqlUpdate(sqlList);
         content.put("sa_workorderid", sa_workorderid);
 
@@ -652,7 +645,7 @@ public class workorder extends Controller {
             if (ordernode.getLong("parentid") == 0) {
 //                return getErrReturnObject().setErrMsg("该工序不是末级节点").toString();
             } else if (ordernode.getLong("status") == 1) {
-                return getErrReturnObject().setErrMsg("该工序已完成,无法修改").toString();
+                //return getErrReturnObject().setErrMsg("该工序已完成,无法修改").toString();
             }
             ordernode.put("workpresetjson", JSONObject.parseObject(ordernode.getString("workpresetjson"))); // 转化成json
             SQLFactory updateNodesqlFactory = new SQLFactory(this, "服务工单节点更新");
@@ -796,7 +789,7 @@ public class workorder extends Controller {
     @API(title = "查询工单所选新配件金额", apiversion = R.ID2025112114461803.v1.class)
     public String querynewitemamount() throws YosException {
         Long sa_workorderid = content.getLong("sa_workorderid");
-        Rows amountrows = dbConnect.runSqlQuery("select ROUND(t1.qty*ifnull(t2.marketprice,1), 2) amount from sa_workorder_node_items t1 inner join plm_item t2 on t1.itemid=t2.itemid where t1.isnew=1 and  t1.sa_workorderid="+sa_workorderid);
+        Rows amountrows = dbConnect.runSqlQuery("select ROUND(t1.qty*ifnull(t2.marketprice,0), 2) amount from sa_workorder_node_items t1 inner join plm_item t2 on t1.itemid=t2.itemid where t1.isnew=1 and  t1.sa_workorderid="+sa_workorderid);
         return getSucReturnObject().setData(amountrows.sum("amount")).toString();
     }
 
@@ -1103,7 +1096,7 @@ public class workorder extends Controller {
                 insertSQL.setUniqueid(createTableID("sa_warrantycard"));
                 insertSQL.setSiteid(siteid);
                 insertSQL.setValue("sa_agentsid", customeragentsid);
-                insertSQL.setValue("toagentnum", itemrows.get(0).getLong("toagentnum"));
+                insertSQL.setValue("toagentnum", itemrows.get(0).getString("toagentnum"));
                 insertSQL.setValue("sku", itemrows.get(0).getString("sku"));
                 insertSQL.setValue("cardno", createBillCode("warrantycard"));
                 insertSQL.setValue("sa_customersid", sa_customersid);