Преглед изворни кода

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

# Conflicts:
#	.gitignore
shenjingwei пре 4 месеци
родитељ
комит
1d1cfc5e4f
24 измењених фајлова са 912 додато и 532 уклоњено
  1. 5 0
      .gitignore
  2. 2 0
      src/custom/beans/stockbill/Stockbill.java
  3. 8 0
      src/custom/beans/stockbill/bills/BasicBill.java
  4. 109 20
      src/custom/beans/stockbill/bills/XSCK.java
  5. 25 0
      src/custom/restcontroller/R.java
  6. 75 61
      src/custom/restcontroller/sale/serviceorder/serviceorder.java
  7. 1 1
      src/custom/restcontroller/sale/shoppingcart/ShoppingCart.java
  8. 3 1
      src/custom/restcontroller/webmanage/sale/aftersalesmag/aftersalesmag.java
  9. 7 1
      src/custom/restcontroller/webmanage/sale/customer/Customer.java
  10. 25 13
      src/custom/restcontroller/webmanage/sale/order/Order.java
  11. 24 6
      src/custom/restcontroller/webmanage/sale/order/OrderItems.java
  12. 2 2
      src/custom/restcontroller/webmanage/sale/sendplan/SQL/销售出库单新增.sql
  13. 13 6
      src/custom/restcontroller/webmanage/sale/sendplan/sendplandetail.java
  14. 8 2
      src/custom/restcontroller/webmanage/sale/serviceorder/SQL/服务申请单列表查询.sql
  15. 2 2
      src/custom/restcontroller/webmanage/sale/serviceorder/SQL/服务申请单新增.sql
  16. 4 1
      src/custom/restcontroller/webmanage/sale/serviceorder/SQL/服务申请单更新.sql
  17. 7 1
      src/custom/restcontroller/webmanage/sale/serviceorder/SQL/服务申请单详情查询.sql
  18. 87 4
      src/custom/restcontroller/webmanage/sale/serviceorder/serviceorder.java
  19. 4 1
      src/custom/restcontroller/webmanage/sale/stock/Stock.java
  20. 327 289
      src/custom/restcontroller/webmanage/sale/stockbill/stockbill.java
  21. 105 101
      src/custom/restcontroller/webmanage/sale/stockbill/stockbillitems.java
  22. 39 6
      src/custom/restcontroller/webmanage/sale/stockbill/stockbillitemssku.java
  23. 29 1
      src/custom/restcontroller/webmanage/sale/toolscode/toolscode.java
  24. 1 13
      src/custom/restcontroller/webmanage/sale/workorder/workorder.java

+ 5 - 0
.gitignore

@@ -3,4 +3,9 @@
 /classes
 /YOS.iml
 /yos.war
+/src/resources
+.DS_Store
+._.DS_Store
+*.DS_Store
+**/.DS_Store
 /src/test/

+ 2 - 0
src/custom/beans/stockbill/Stockbill.java

@@ -20,5 +20,7 @@ public class Stockbill extends BaseClass {
 
     public static void check(Controller controller, long st_stockbillid, boolean ischeck) throws YosException {
         controller.dbConnect.runSqlUpdate(getCheckSql(controller, st_stockbillid, ischeck));
+        BasicBill basicBill = BasicBill.getBill(controller, st_stockbillid);
+        controller.dbConnect.runSqlUpdate(basicBill.getCheckSql_custamount(ischeck));
     }
 }

+ 8 - 0
src/custom/beans/stockbill/bills/BasicBill.java

@@ -163,6 +163,11 @@ public abstract class BasicBill {
         return sqlList;
     }
 
+    public ArrayList<String> getCheckSql_custamount(boolean ischeck) throws YosException {
+        ArrayList<String> sqlList = new ArrayList<>();
+        return sqlList;
+    }
+
     /**
      * 更新库存
      *
@@ -203,6 +208,9 @@ public abstract class BasicBill {
                     if (!issale) {
                         invbalInsert.setValue("cansaleqty", qty.doubleValue());//可销售数量
                         invbalInsert.setValue("candispatchqty", qty.doubleValue());//可发货数量
+                    }else{
+                        invbalInsert.setValue("cansaleqty", 0);//可销售数量
+                        invbalInsert.setValue("candispatchqty", 0);//可发货数量
                     }
                     invbalInsert.setValue("qty", qty.doubleValue());//库存数量
                     sqlList.add(invbalInsert.getSQL());

+ 109 - 20
src/custom/beans/stockbill/bills/XSCK.java

@@ -98,9 +98,9 @@ public class XSCK extends BasicBill {
         }
 
         if ((ischeck && rb == 1) || (!ischeck && rb == 0)) {
-            if (order_paymentnode.equals("3") && !Accountbalance.judgeBalance(dbConnect, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), itemRows.toRowsMap("sa_orderitemsidnum").get("0").sum("amount"))) {
-                //throw new YosException("账户余额不足,还差" + Accountbalance.InsufficientBalance(dbConnect, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), itemRows.toRowsMap("sa_orderitemsidnum").get("0").sum("amount")) + "元!");
-            }
+//            if (order_paymentnode.equals("3") && !Accountbalance.judgeBalance(dbConnect, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), itemRows.toRowsMap("sa_orderitemsidnum").get("0").sum("amount"))) {
+//                //throw new YosException("账户余额不足,还差" + Accountbalance.InsufficientBalance(dbConnect, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), itemRows.toRowsMap("sa_orderitemsidnum").get("0").sum("amount")) + "元!");
+//            }
             if(!billRow.getString("sourceobject").equals("tpartreimbursement")){
                 Rows rowsjudge = dbConnect.runSqlQuery("select * from (select sa_orderitemsid,sum(qty) qty from st_stockbill_items where st_stockbillid ='" + st_stockbillid + "' group by sa_orderitemsid) t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid where t1.qty>t2.undeliqty");
                 if (rowsjudge.isNotEmpty()) {
@@ -118,16 +118,18 @@ public class XSCK extends BasicBill {
 
     @Override
     public ArrayList<String> getCheckSql(boolean ischeck) throws YosException {
+
         ArrayList<String> sqlList = super.getCheckSql(ischeck);
+        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=" + sys_enterpriseid);
         if (ischeck) {
-            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=" + sys_enterpriseid);
-
             String order_paymentnode = Parameter.getString(siteid, "order_paymentnode");
             if (rb == 1) {
                 if (order_paymentnode.equals("3")) {
-                    CashbillEntity entity = getCashbillEntity(billRow.getBigDecimal("payamount"), billRow.getBigDecimal("paydiscountamount"), st_stockbillid, "销售出库单审核", billno, "由销售出库单" + billno + "审核时生成");
+                    CashbillEntity entity = getCashbillEntity(billRow.getBigDecimal("payamount"), billRow.getBigDecimal("paydiscountamount"), st_stockbillid, "销售出库单审核", billno, "由销售出库单" + billno + "审核时生成","货款");
                     JSONObject createCashbillPay = Accountbalance.createCashbillPay(dbConnect, userInfo, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), entity, true);
-                    sqlList.addAll(createCashbillPay.getJSONArray("sqlList").toJavaList(String.class));
+                    if(!(billRow.getBigDecimal("payamount").compareTo(BigDecimal.ZERO)==0 && billRow.getBigDecimal("paydiscountamount").compareTo(BigDecimal.ZERO)==0)){
+                        sqlList.addAll(createCashbillPay.getJSONArray("sqlList").toJavaList(String.class));
+                    }
                 }
                 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) {
@@ -140,6 +142,7 @@ public class XSCK extends BasicBill {
                         sqlList.add("update st_stockbill_items set wmsuploadflag2=1 where st_stockbill_itemsid=" + row.getLong("st_stockbill_itemsid"));
                     }
                 }
+                sqlList.addAll(updateAccountbalance_freez(isInStock(ischeck)));
                 //判断是否关闭订单
                 int orderautoclosepoint = Parameter.getInteger(siteid, "orderautoclosepoint");
                 if(orderautoclosepoint==2){
@@ -168,17 +171,23 @@ public class XSCK extends BasicBill {
                         }
                         if(orderrows.size()==count){
                             sqlList.add("update sa_order set status='关闭',closeby='"+controller.username+"',closedate=CURRENT_TIME where sa_orderid=" +sa_orderid);
+                            sqlList.add("UPDATE sa_accountbalance t1 " +
+                                    "INNER JOIN sa_accountbalance_freez t2 ON t1.sa_accountbalanceid = t2.sa_accountbalanceid " +
+                                    "SET t1.freezamount = case when ifnull(t1.freezamount,0)>t2.amount then t1.freezamount-t2.amount else 0 end " +
+                                    "WHERE t1.sa_accountbalanceid="+accountbalancerows.get(0).getLong("sa_accountbalanceid")+" and t2.sourcetable='sa_order' and t2.sourceid="+sa_orderid);
+                            sqlList.add("delete from sa_accountbalance_freez t1 WHERE t1.sourcetable='sa_order' and t1.sourceid="+sa_orderid);
                         }
                     }
 
                 }
-
-                sqlList.addAll(updateAccountbalance_freez(isInStock(ischeck)));
             } else {
                 if (order_paymentnode.equals("3")) {
-                    CashbillEntity entity = getCashbillEntity(billRow.getBigDecimal("payamount").negate(), billRow.getBigDecimal("paydiscountamount").negate(), st_stockbillid, "销售出库单审核", billno, "由销售出库单" + billno + "审核时生成");
+                    CashbillEntity entity = getCashbillEntity(billRow.getBigDecimal("payamount").negate(), billRow.getBigDecimal("paydiscountamount").negate(), st_stockbillid, "销售出库单审核", billno, "由销售出库单" + billno + "审核时生成","货款");
                     JSONObject createCashbillPay = Accountbalance.createCashbillPay(dbConnect, userInfo, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), entity, true);
-                    sqlList.addAll(createCashbillPay.getJSONArray("sqlList").toJavaList(String.class));
+                    if(!(billRow.getBigDecimal("payamount").compareTo(BigDecimal.ZERO)==0 && billRow.getBigDecimal("paydiscountamount").compareTo(BigDecimal.ZERO)==0)){
+                        sqlList.addAll(createCashbillPay.getJSONArray("sqlList").toJavaList(String.class));
+                    }
+
                 }
                 if(!billRow.getString("sourceobject").equals("tpartreimbursement")){
                     Rows rowsOrderDetail = dbConnect.runSqlQuery("select t1.undeliqty,t1.deliedqty,t1.qty,t1.sa_orderitemsid from sa_orderitems t1 where t1.sa_orderitemsid in (select sa_orderitemsid from st_stockbill_items where sa_orderitemsid>0 and st_stockbillid=" + st_stockbillid + ")");
@@ -232,13 +241,15 @@ public class XSCK extends BasicBill {
 
 
         } else {
-            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=" + sys_enterpriseid);
             String order_paymentnode = Parameter.getString(siteid, "order_paymentnode");
             if (rb == 1) {
                 if (order_paymentnode.equals("3")) {
-                    CashbillEntity entity = getCashbillEntity(billRow.getBigDecimal("payamount").negate(), billRow.getBigDecimal("paydiscountamount").negate(), st_stockbillid, "销售出库单反审核", billno, "由销售出库单" + billno + "反审核时生成");
+                    Rows cashbillRows =dbConnect.runSqlQuery("select amount,discountamount from sa_cashbill where ownerid="+st_stockbillid +" and ownertable='st_stockbill' and type=0 and class='货款'");
+                    CashbillEntity entity = getCashbillEntity(cashbillRows.sum("amount").negate(), cashbillRows.sum("discountamount").negate(), st_stockbillid, "销售出库单反审核", billno, "由销售出库单" + billno + "反审核时生成","货款");
                     JSONObject createCashbillPay = Accountbalance.createCashbillPay(dbConnect, userInfo, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), entity, true);
-                    sqlList.addAll(createCashbillPay.getJSONArray("sqlList").toJavaList(String.class));
+                    if(!(cashbillRows.sum("amount").negate().compareTo(BigDecimal.ZERO)==0 && cashbillRows.sum("discountamount").negate().compareTo(BigDecimal.ZERO)==0)){
+                        sqlList.addAll(createCashbillPay.getJSONArray("sqlList").toJavaList(String.class));
+                    }
                 }
                 Rows rowsOrderDetail = dbConnect.runSqlQuery("select t1.undeliqty,t1.deliedqty,t1.qty,t1.sa_orderitemsid from sa_orderitems t1 where t1.sa_orderitemsid in (select sa_orderitemsid from st_stockbill_items where sa_orderitemsid>0 and st_stockbillid=" + st_stockbillid + ")");
                 RowsMap rowsMap = rowsOrderDetail.toRowsMap("sa_orderitemsid");
@@ -264,9 +275,13 @@ public class XSCK extends BasicBill {
                 sqlList.addAll(updateAccountbalance_freez(isInStock(ischeck)));
             } else {
                 if (order_paymentnode.equals("3")) {
-                    CashbillEntity entity = getCashbillEntity(billRow.getBigDecimal("payamount"), billRow.getBigDecimal("paydiscountamount"), st_stockbillid, "销售出库单反审核", billno, "由销售出库单" + billno + "反审核时生成");
+                    Rows cashbillRows =dbConnect.runSqlQuery("select amount,discountamount from sa_cashbill where ownerid="+st_stockbillid +" and ownertable='st_stockbill' and type=0 and class='货款'");
+                    CashbillEntity entity = getCashbillEntity(cashbillRows.sum("amount").negate(), cashbillRows.sum("discountamount").negate(), st_stockbillid, "销售出库单反审核", billno, "由销售出库单" + billno + "反审核时生成","货款");
                     JSONObject createCashbillPay = Accountbalance.createCashbillPay(dbConnect, userInfo, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), entity, true);
-                    sqlList.addAll(createCashbillPay.getJSONArray("sqlList").toJavaList(String.class));
+                    if(!(cashbillRows.sum("amount").negate().compareTo(BigDecimal.ZERO)==0 && cashbillRows.sum("discountamount").negate().compareTo(BigDecimal.ZERO)==0)){
+                        sqlList.addAll(createCashbillPay.getJSONArray("sqlList").toJavaList(String.class));
+                    }
+
                 }
                 if(!billRow.getString("sourceobject").equals("tpartreimbursement")){
                     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");
@@ -332,6 +347,11 @@ public class XSCK extends BasicBill {
                         }
                         if(orderrows.size()==count){
                             sqlList.add("update sa_order set status='关闭',closeby='"+controller.username+"',closedate=CURRENT_TIME where sa_orderid=" +sa_orderid);
+                            sqlList.add("UPDATE sa_accountbalance t1 " +
+                                    "INNER JOIN sa_accountbalance_freez t2 ON t1.sa_accountbalanceid = t2.sa_accountbalanceid " +
+                                    "SET t1.freezamount = case when ifnull(t1.freezamount,0)>t2.amount then t1.freezamount-t2.amount else 0 end " +
+                                    "WHERE t1.sa_accountbalanceid="+accountbalancerows.get(0).getLong("sa_accountbalanceid")+" and t2.sourcetable='sa_order' and t2.sourceid="+sa_orderid);
+                            sqlList.add("delete from sa_accountbalance_freez t1 WHERE t1.sourcetable='sa_order' and t1.sourceid="+sa_orderid);
                         }
                     }
 
@@ -344,6 +364,68 @@ public class XSCK extends BasicBill {
     }
 
 
+    public ArrayList<String> getCheckSql_custamount(boolean ischeck) throws YosException {
+        ArrayList<String> sqlList = super.getCheckSql_custamount(ischeck);
+        if (ischeck) {
+            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=" + sys_enterpriseid);
+
+            String order_paymentnode = Parameter.getString(siteid, "order_paymentnode");
+            if (rb == 1) {
+                if (order_paymentnode.equals("3")) {
+                    BigDecimal custamount=BigDecimal.ZERO;
+                    for(Row row :itemRows){
+                        custamount=custamount.add(row.getBigDecimal("custamount").multiply(row.getBigDecimal("qty")));
+                    }
+
+                    CashbillEntity entity_custamount = getCashbillEntity(custamount, BigDecimal.ZERO, st_stockbillid, "销售出库单审核", billno, "由销售出库单" + billno + "审核时生成","客户档案资料费");
+                    JSONObject createCashbillPay_custamount = Accountbalance.createCashbillPay(dbConnect, userInfo, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), entity_custamount, true);
+                    if(custamount.compareTo(BigDecimal.ZERO)!=0){
+                        sqlList.addAll(createCashbillPay_custamount.getJSONArray("sqlList").toJavaList(String.class));
+                    }
+
+
+                }
+            } else {
+                if (order_paymentnode.equals("3")) {
+                    BigDecimal custamount=BigDecimal.ZERO;
+                    for(Row row :itemRows){
+                        custamount=custamount.add(row.getBigDecimal("custamount").multiply(row.getBigDecimal("qty")));
+                    }
+                    CashbillEntity entity_custamount = getCashbillEntity(custamount.negate(), BigDecimal.ZERO, st_stockbillid, "销售出库单审核", billno, "由销售出库单" + billno + "审核时生成","客户档案资料费");
+                    JSONObject createCashbillPay_custamount = Accountbalance.createCashbillPay(dbConnect, userInfo, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), entity_custamount, true);
+                    if(custamount.negate().compareTo(BigDecimal.ZERO)!=0){
+                        sqlList.addAll(createCashbillPay_custamount.getJSONArray("sqlList").toJavaList(String.class));
+                    }
+                }
+            }
+        } else {
+            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=" + sys_enterpriseid);
+            String order_paymentnode = Parameter.getString(siteid, "order_paymentnode");
+            if (rb == 1) {
+                if (order_paymentnode.equals("3")) {
+                    Rows cashbillRows_custamount =dbConnect.runSqlQuery("select amount,discountamount from sa_cashbill where ownerid="+st_stockbillid +" and ownertable='st_stockbill' and type=0 and class='客户档案资料费'");
+                    CashbillEntity entity_custamount = getCashbillEntity(cashbillRows_custamount.sum("amount").negate(), cashbillRows_custamount.sum("discountamount").negate(), st_stockbillid, "销售出库单反审核", billno, "由销售出库单" + billno + "反审核时生成","客户档案资料费");
+                    JSONObject createCashbillPay_custamount = Accountbalance.createCashbillPay(dbConnect, userInfo, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), entity_custamount, true);
+                    if(cashbillRows_custamount.sum("amount").negate().compareTo(BigDecimal.ZERO)!=0){
+                        sqlList.addAll(createCashbillPay_custamount.getJSONArray("sqlList").toJavaList(String.class));
+                    }
+                }
+            } else {
+                if (order_paymentnode.equals("3")) {
+                    Rows cashbillRows_custamount =dbConnect.runSqlQuery("select amount,discountamount from sa_cashbill where ownerid="+st_stockbillid +" and ownertable='st_stockbill' and type=0 and class='客户档案资料费'");
+                    CashbillEntity entity_custamount = getCashbillEntity(cashbillRows_custamount.sum("amount").negate(),cashbillRows_custamount.sum("discountamount").negate(), st_stockbillid, "销售出库单审核", billno, "由销售出库单" + billno + "审核时生成","客户档案资料费");
+                    JSONObject createCashbillPay_custamount = Accountbalance.createCashbillPay(dbConnect, userInfo, sys_enterpriseid, accountbalancerows.get(0).getLong("sa_accountclassid"), entity_custamount, true);
+                    if(cashbillRows_custamount.sum("amount").negate().compareTo(BigDecimal.ZERO)!=0){
+                        sqlList.addAll(createCashbillPay_custamount.getJSONArray("sqlList").toJavaList(String.class));
+                    }
+                }
+            }
+
+        }
+        return sqlList;
+    }
+
+
     /**
      * 账户余额冻结
      *
@@ -352,7 +434,7 @@ public class XSCK extends BasicBill {
     public ArrayList<String> updateAccountbalance_freez(boolean addorsub) throws YosException {
         ArrayList<String> sqllist = new ArrayList<>();
         /******** 冻结数据 ********/
-        Rows rows = dbConnect.runSqlQuery("select t4.sa_accountbalanceid,t3.sa_orderid,t3.sonum,t3.type,ROUND(sum(t1.qty*t2.price*ifnull(t2.pricerate,1)*ifnull(t2.rwpricerate,1)), 2) amount from st_stockbill_items t1 \n" +
+        Rows rows = dbConnect.runSqlQuery("select t4.sa_accountbalanceid,t3.sa_orderid,t3.sonum,t3.type,ROUND(sum(t1.qty*(t1.price+ifnull(t1.custamount,0))), 2) amount from st_stockbill_items t1 \n" +
                 "                   inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid\n" +
                 "                  inner join sa_order t3 on t2.sa_orderid=t3.sa_orderid and t2.siteid=t3.siteid\n" +
                 "\t\t\t\t\t\t\t\t\tleft join sa_accountbalance t4 on t4.sa_accountclassid=t3.sa_accountclassid and t4.sys_enterpriseid=t3.sys_enterpriseid and t4.siteid=t3.siteid\n" +
@@ -389,8 +471,14 @@ public class XSCK extends BasicBill {
                 BigDecimal amount = row.getBigDecimal("amount");
                 Rows accountbalancefreezrows = dbConnect.runSqlQuery("select sa_accountbalance_freezid,amount from sa_accountbalance_freez where sourceid=" + sa_orderid + " and sourcetable='sa_order' and siteid='" + siteid + "'");
                 if (accountbalancefreezrows.size() > 0) {
-                    sqllist.add("update sa_accountbalance set freezamount=ifnull(freezamount,0)-" + amount + " where sa_accountbalanceid=" + sa_accountbalanceid);
-                    sqllist.add("update sa_accountbalance_freez set amount=amount-" + amount + " where sa_accountbalance_freezid=" + accountbalancefreezrows.get(0).getLong("sa_accountbalance_freezid"));
+                    if(accountbalancefreezrows.get(0).getBigDecimal("amount").compareTo(amount)>0){
+                        sqllist.add("update sa_accountbalance set freezamount=ifnull(freezamount,0)-" + amount + " where sa_accountbalanceid=" + sa_accountbalanceid);
+                        sqllist.add("update sa_accountbalance_freez set amount=amount-" + amount + " where sa_accountbalance_freezid=" + accountbalancefreezrows.get(0).getLong("sa_accountbalance_freezid"));
+                    }else{
+                        sqllist.add("update sa_accountbalance set freezamount=ifnull(freezamount,0)-" + accountbalancefreezrows.get(0).getBigDecimal("amount") + " where sa_accountbalanceid=" + sa_accountbalanceid);
+                        sqllist.add("update sa_accountbalance_freez set amount=0 where sa_accountbalance_freezid=" + accountbalancefreezrows.get(0).getLong("sa_accountbalance_freezid"));
+                    }
+
                 }
             }
         }
@@ -398,7 +486,7 @@ public class XSCK extends BasicBill {
     }
 
 
-    public static CashbillEntity getCashbillEntity(BigDecimal amount, BigDecimal discountamount, Long ownerid, String source, String sourcenotes, String remarks) throws YosException {
+    public static CashbillEntity getCashbillEntity(BigDecimal amount, BigDecimal discountamount, Long ownerid, String source, String sourcenotes, String remarks,String type) throws YosException {
         CashbillEntity entity = new CashbillEntity();
         entity.setAmount(amount);
         entity.setDiscountamountamount(discountamount);
@@ -406,6 +494,7 @@ public class XSCK extends BasicBill {
         entity.setOwnertable("st_stockbill");
         entity.setSource(source);
         entity.setRemarks(remarks);
+        entity.setType(type);
         entity.setSourcenote(sourcenotes);
         return entity;
 

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

@@ -6941,6 +6941,31 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2025121316011603 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025121320093303 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025121515015903 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025121517474303 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025121519311203 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 75 - 61
src/custom/restcontroller/sale/serviceorder/serviceorder.java

@@ -140,7 +140,7 @@ public class serviceorder extends Controller {
         Long sa_serviceorderid = content.getLong("sa_serviceorderid");
         boolean issumbit = true;
         Rows rows = dbConnect
-                .runSqlQuery("select sa_serviceorderid,status,billno,sys_enterpriseid,province,city,county from sa_serviceorder where sa_serviceorderid ='"
+                .runSqlQuery("select sa_serviceorderid,status,billno,sys_enterpriseid,province,city,county,sys_enterpriseid_service from sa_serviceorder where sa_serviceorderid ='"
                         + sa_serviceorderid + "' and  siteid='" + siteid + "'");
         for (Row row : rows) {
             if (issumbit) {
@@ -201,18 +201,76 @@ public class serviceorder extends Controller {
 
         if (issumbit) {
             Rows agents = dbConnect.runSqlQuery("select * from sa_agents where status=1 and signingstate!='停用(已止)' and siteid='" + siteid + "' and sys_enterpriseid=" + rows.get(0).getLong("sys_enterpriseid"));
-            if (agents.isNotEmpty()) {
-                if (agents.get(0).getBoolean("isservice")) {
-                    sqlList.add("update sa_serviceorder set status='待受理',sys_enterpriseid_service=" + agents.get(0).getLong("sys_enterpriseid") + " where sa_serviceorderid=" + sa_serviceorderid);
-                } else {
-                    Rows serviceagents = dbConnect.runSqlQuery("select t1.sys_enterpriseid,t2.province,t2.city,t2.county from sa_agents t1 inner join sa_agents_salescope  t2  on  t1.sa_agentsid=t2.sa_agentsid and t1.siteid=t2.siteid where t1.siteid='" + siteid + "' and status=1 and signingstate!='停用(已止)' and t1.isservice=1");
+            Rows currentserviceagents = dbConnect.runSqlQuery("select * from sa_agents where status=1 and signingstate!='停用(已止)' and siteid='" + siteid + "' and sys_enterpriseid=" + rows.get(0).getLong("sys_enterpriseid_service"));
+            if(currentserviceagents.isEmpty()){
+                if (agents.isNotEmpty()) {
+                    if (agents.get(0).getBoolean("isservice")) {
+                        sqlList.add("update sa_serviceorder set status='待受理',sys_enterpriseid_service=" + agents.get(0).getLong("sys_enterpriseid") + " where sa_serviceorderid=" + sa_serviceorderid);
+                    } else {
+                        Rows serviceagents = dbConnect.runSqlQuery("select t1.sys_enterpriseid,t2.province,t2.city,t2.county from sa_agents t1 inner join sa_agents_salescope  t2  on  t1.sa_agentsid=t2.sa_agentsid and t1.siteid=t2.siteid where t1.siteid='" + siteid + "' and status=1 and signingstate!='停用(已止)' and t1.isservice=1");
+                        RowsMap countyRowsMap = serviceagents.toRowsMap("county");
+                        RowsMap cityRowsMap = serviceagents.toRowsMap("city");
+                        RowsMap provinceRowsMap = serviceagents.toRowsMap("province");
+                        if (countyRowsMap.containsKey(rows.get(0).getString("county"))) {
+                            for(Row row :countyRowsMap.get(rows.get(0).getString("county"))){
+                                if(row.getString("province").equals(rows.get(0).getString("province"))
+                                        && row.getString("city").equals(rows.get(0).getString("city"))){
+                                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_serviceorder");
+                                    updateSQL.setUniqueid(sa_serviceorderid);
+                                    updateSQL.setSiteid(siteid);
+                                    updateSQL.setValue("status", "待受理");
+                                    updateSQL.setValue("sys_enterpriseid_service", row.getLong("sys_enterpriseid"));
+                                    updateSQL.setDateValue("allocationdate");
+                                    updateSQL.setValue("allocationby", username);
+                                    sqlList.add(updateSQL.getSQL());
+                                    sqlList.add(
+                                            DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "自动分配", "服务申请单自动分配成功").getSQL());
+                                }
+                            }
+                        } else if (cityRowsMap.containsKey(rows.get(0).getString("city"))) {
+                            for(Row row :cityRowsMap.get(rows.get(0).getString("city"))){
+                                if(row.getString("province").equals(rows.get(0).getString("province"))
+                                        && StringUtils.isBlank(row.getString("county"))){
+                                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_serviceorder");
+                                    updateSQL.setUniqueid(sa_serviceorderid);
+                                    updateSQL.setSiteid(siteid);
+                                    updateSQL.setValue("status", "待受理");
+                                    updateSQL.setValue("sys_enterpriseid_service", row.getLong("sys_enterpriseid"));
+                                    updateSQL.setDateValue("allocationdate");
+                                    updateSQL.setValue("allocationby", username);
+                                    sqlList.add(updateSQL.getSQL());
+                                    sqlList.add(
+                                            DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "自动分配", "服务申请单自动分配成功").getSQL());
+                                }
+                            }
+
+                        } else if (provinceRowsMap.containsKey(rows.get(0).getString("province"))) {
+                            for(Row row :provinceRowsMap.get(rows.get(0).getString("province"))){
+                                if(StringUtils.isBlank(row.getString("city"))
+                                        && StringUtils.isBlank(row.getString("county"))){
+                                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_serviceorder");
+                                    updateSQL.setUniqueid(sa_serviceorderid);
+                                    updateSQL.setSiteid(siteid);
+                                    updateSQL.setValue("status", "待受理");
+                                    updateSQL.setValue("sys_enterpriseid_service", row.getLong("sys_enterpriseid"));
+                                    updateSQL.setDateValue("allocationdate");
+                                    updateSQL.setValue("allocationby", username);
+                                    sqlList.add(updateSQL.getSQL());
+                                    sqlList.add(
+                                            DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "自动分配", "服务申请单自动分配成功").getSQL());
+                                }
+                            }
+                        }
+                    }
+                }else {
+                    Rows serviceagents = dbConnect.runSqlQuery("select t1.sys_enterpriseid,t2.province,t2.city,t2.county from sa_agents t1 inner join sa_agents_salescope  t2  on  t1.sa_agentsid=t2.sa_agentsid and t1.siteid=t2.siteid where t1.siteid='" + siteid + "' and t1.isservice=1");
                     RowsMap countyRowsMap = serviceagents.toRowsMap("county");
                     RowsMap cityRowsMap = serviceagents.toRowsMap("city");
                     RowsMap provinceRowsMap = serviceagents.toRowsMap("province");
                     if (countyRowsMap.containsKey(rows.get(0).getString("county"))) {
                         for(Row row :countyRowsMap.get(rows.get(0).getString("county"))){
                             if(row.getString("province").equals(rows.get(0).getString("province"))
-                            && row.getString("city").equals(rows.get(0).getString("city"))){
+                                    && row.getString("city").equals(rows.get(0).getString("city"))){
                                 UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_serviceorder");
                                 updateSQL.setUniqueid(sa_serviceorderid);
                                 updateSQL.setSiteid(siteid);
@@ -260,61 +318,17 @@ public class serviceorder extends Controller {
                         }
                     }
                 }
-            }else {
-                Rows serviceagents = dbConnect.runSqlQuery("select t1.sys_enterpriseid,t2.province,t2.city,t2.county from sa_agents t1 inner join sa_agents_salescope  t2  on  t1.sa_agentsid=t2.sa_agentsid and t1.siteid=t2.siteid where t1.siteid='" + siteid + "' and t1.isservice=1");
-                RowsMap countyRowsMap = serviceagents.toRowsMap("county");
-                RowsMap cityRowsMap = serviceagents.toRowsMap("city");
-                RowsMap provinceRowsMap = serviceagents.toRowsMap("province");
-                if (countyRowsMap.containsKey(rows.get(0).getString("county"))) {
-                    for(Row row :countyRowsMap.get(rows.get(0).getString("county"))){
-                        if(row.getString("province").equals(rows.get(0).getString("province"))
-                                && row.getString("city").equals(rows.get(0).getString("city"))){
-                            UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_serviceorder");
-                            updateSQL.setUniqueid(sa_serviceorderid);
-                            updateSQL.setSiteid(siteid);
-                            updateSQL.setValue("status", "待受理");
-                            updateSQL.setValue("sys_enterpriseid_service", row.getLong("sys_enterpriseid"));
-                            updateSQL.setDateValue("allocationdate");
-                            updateSQL.setValue("allocationby", username);
-                            sqlList.add(updateSQL.getSQL());
-                            sqlList.add(
-                                    DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "自动分配", "服务申请单自动分配成功").getSQL());
-                        }
-                    }
-                } else if (cityRowsMap.containsKey(rows.get(0).getString("city"))) {
-                    for(Row row :cityRowsMap.get(rows.get(0).getString("city"))){
-                        if(row.getString("province").equals(rows.get(0).getString("province"))
-                                && StringUtils.isBlank(row.getString("county"))){
-                            UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_serviceorder");
-                            updateSQL.setUniqueid(sa_serviceorderid);
-                            updateSQL.setSiteid(siteid);
-                            updateSQL.setValue("status", "待受理");
-                            updateSQL.setValue("sys_enterpriseid_service", row.getLong("sys_enterpriseid"));
-                            updateSQL.setDateValue("allocationdate");
-                            updateSQL.setValue("allocationby", username);
-                            sqlList.add(updateSQL.getSQL());
-                            sqlList.add(
-                                    DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "自动分配", "服务申请单自动分配成功").getSQL());
-                        }
-                    }
 
-                } else if (provinceRowsMap.containsKey(rows.get(0).getString("province"))) {
-                    for(Row row :provinceRowsMap.get(rows.get(0).getString("province"))){
-                        if(StringUtils.isBlank(row.getString("city"))
-                                && StringUtils.isBlank(row.getString("county"))){
-                            UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_serviceorder");
-                            updateSQL.setUniqueid(sa_serviceorderid);
-                            updateSQL.setSiteid(siteid);
-                            updateSQL.setValue("status", "待受理");
-                            updateSQL.setValue("sys_enterpriseid_service", row.getLong("sys_enterpriseid"));
-                            updateSQL.setDateValue("allocationdate");
-                            updateSQL.setValue("allocationby", username);
-                            sqlList.add(updateSQL.getSQL());
-                            sqlList.add(
-                                    DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "自动分配", "服务申请单自动分配成功").getSQL());
-                        }
-                    }
-                }
+            }else{
+                UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_serviceorder");
+                updateSQL.setUniqueid(sa_serviceorderid);
+                updateSQL.setSiteid(siteid);
+                updateSQL.setValue("status", "待受理");
+                updateSQL.setDateValue("allocationdate");
+                updateSQL.setValue("allocationby", username);
+                sqlList.add(updateSQL.getSQL());
+                sqlList.add(
+                        DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "自动分配", "服务申请单自动分配成功").getSQL());
             }
             Rows workersRows = dbConnect.runSqlQuery(
                     "select  t3.phonenumber from sys_hr t1 left join sys_users t3 on t1.userid = t3.userid left join sys_hr t4 on t1.siteid = t4.siteid and t1.reporthrid = t4.hrid where t1.siteid = '"

+ 1 - 1
src/custom/restcontroller/sale/shoppingcart/ShoppingCart.java

@@ -362,7 +362,7 @@ public class ShoppingCart extends Controller {
                         row.put("gradeprice", itemPrice.getContractprice());
                     }
                 }
-                row.put("defaultprice", row.getBigDecimal("gradeprice").multiply(rwpricerate));
+                row.put("defaultprice", row.getBigDecimal("gradeprice"));
                 row.put("gradeprice", row.getBigDecimal("gradeprice").multiply(rwpricerate).add(row.getBigDecimal("custamount")));
 
 

+ 3 - 1
src/custom/restcontroller/webmanage/sale/aftersalesmag/aftersalesmag.java

@@ -130,6 +130,7 @@ public class aftersalesmag extends Controller {
         insertSQLdetail.setValue("machinecode", content.getStringValue("machinecode"));
         insertSQLdetail.setValue("qty", content.containsKey("qty") ? content.getIntValue("qty") : 1);
         insertSQLdetail.setValue("itemid", content.getLongValue("itemid"));
+        insertSQLdetail.setValue("remarks", content.getStringValue("remarksdetail"));
         sqlList.add(insertSQLdetail.getSQL());
 
         dbConnect.runSqlUpdate(sqlList);
@@ -207,7 +208,7 @@ public class aftersalesmag extends Controller {
         querySQL.addJoinTable(JOINTYPE.left, "sa_warrantycard", "t6", "t6.sku=t1.sku and t6.siteid=t1.siteid", "cardno", "begdate", "enddate");
 
         querySQL.setSiteid(siteid);
-        querySQL.setWhere("t1.sa_agentsid in (select sa_agentsid from sa_agents where  sys_enterpriseid=" + sys_enterpriseid + ")");
+        querySQL.setWhere("(t1.sa_agentsid in (select sa_agentsid from sa_agents where  sys_enterpriseid=" + sys_enterpriseid + ") or t1.sys_enterpriseid="+sys_enterpriseid+")");
         querySQL.setWhere("t1.sku not in (select distinct machinecode from sa_aftersalesmag_items where siteid='" + siteid + "' and ifnull(machinecode,'')!='')");
         querySQL.setWhere(where.toString());
         querySQL.addQueryFields("cardname","t6.name");
@@ -381,6 +382,7 @@ public class aftersalesmag extends Controller {
         querySQL.setWhere(where.toString());
         querySQL.setWhere("t1.createflag=1 or t1.status !='新建'");
         querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy("t1.sa_aftersalesmagid desc");
         Rows rows = querySQL.query();
 
 //        ArrayList<Long> ids = rows.toArrayList("sa_aftersalesmagid", new ArrayList<>());

+ 7 - 1
src/custom/restcontroller/webmanage/sale/customer/Customer.java

@@ -990,17 +990,23 @@ public class Customer extends Controller {
                 where.append("t1.phonenumber ='").append(whereObject.getString("phonenumber")).append("' ");
                 where.append(")");
             }
+            if (whereObject.containsKey("sa_customersid") && !"".equals(whereObject.getString("sa_customersid"))) {
+                where.append(" and(");
+                where.append("t1.sa_customersid ='").append(whereObject.getLong("sa_customersid")).append("' ");
+                where.append(")");
+            }
         }
         QuerySQL querySQL;
         querySQL = SQLFactory.createQuerySQL(this, "sa_customers", "sa_customersid","name","phonenumber","province","city","county","address","createdate","sa_agentsid","sa_agentsid_to");
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t2", "t1.sa_agentsid = t2.sa_agentsid AND t1.siteid = t2.siteid","agentnum");
-        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t2.sys_enterpriseid = t3.sys_enterpriseid AND t2.siteid = t3.siteid","enterprisename","abbreviation");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t2.sys_enterpriseid = t3.sys_enterpriseid AND t2.siteid = t3.siteid","sys_enterpriseid","enterprisename","abbreviation");
         querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t1.sa_agentsid_to = t4.sa_agentsid AND t1.siteid = t4.siteid");
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t4.sys_enterpriseid = t5.sys_enterpriseid AND t4.siteid = t3.siteid");
         querySQL.addQueryFields("agentnum_to","t4.agentnum");
         querySQL.addQueryFields("enterprisename_to","t5.enterprisename");
         querySQL.addQueryFields("abbreviation_to","t5.abbreviation");
+        querySQL.addQueryFields("sys_enterpriseid_to","t5.sys_enterpriseid");
         querySQL.setSiteid(siteid);
         querySQL.setWhere(where.toString());
         querySQL.setWhere("(ifnull(t1.sa_agentsid,0)!=0 or ifnull(t1.sa_agentsid_to,0)!=0)");

+ 25 - 13
src/custom/restcontroller/webmanage/sale/order/Order.java

@@ -998,8 +998,8 @@ public class Order extends Controller {
         }
 
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_order",
-                "sa_orderid", "sonum", "type", "status", "submitdate", "checkdate", "remarks", "createby", "checkby", "billdate", "tradefield", "rec_contactsid", "delivery", "tracknumber", "mailno");
-
+                "sa_orderid", "sonum", "type", "status", "submitdate", "checkdate", "remarks", "createby", "checkby", "billdate", "tradefield", "rec_contactsid", "delivery","logisticsmethod", "tracknumber", "mailno"
+                ,"invoicetaxno","invoicename","invoiceaddress","contact","address","phonenumber","province","city","county");
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t2.sys_enterpriseid = t1.sys_enterpriseid and t2.siteid = t1.siteid",
                 "enterprisename", "abbreviation");
@@ -1645,6 +1645,10 @@ public class Order extends Controller {
         insertSQL.setValue("name", orderRow.getString("contact"));
         insertSQL.setValue("phonenumber", orderRow.getString("phonenumber"));
         insertSQL.setValue("address", orderRow.getString("address"));
+        insertSQL.setValue("province", orderRow.getString("province"));
+        insertSQL.setValue("city", orderRow.getString("city"));
+        insertSQL.setValue("county", orderRow.getString("county"));
+
 
         insertSQL.setValue("tracknumber",enterprisefinancerow.getString(""));
         insertSQL.setValue("isconfirm", 0);
@@ -1669,7 +1673,8 @@ public class Order extends Controller {
 
 
         for (Row row : rowsdetail) {
-            payamount=payamount.add(row.getBigDecimal("undeliqty").multiply(row.getBigDecimal("price")));
+            BigDecimal defaultprice = row.getBigDecimal("price").subtract(row.getBigDecimal("custamount"));
+            payamount=payamount.add(row.getBigDecimal("undeliqty").multiply(defaultprice));
             insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
             insertSQL.setUniqueid(createTableID("st_stockbill_items"));
             insertSQL.setSiteid(siteid);
@@ -1679,17 +1684,18 @@ public class Order extends Controller {
             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("discountrate", 1);
             insertSQL.setValue("sa_dispatch_itemsid", 0);
-            insertSQL.setValue("defaultprice", row.getBigDecimal("defaultprice"));
+            insertSQL.setValue("defaultprice", 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("price",defaultprice);
+            insertSQL.setValue("amount", row.getBigDecimal("undeliqty").multiply(defaultprice));
+            insertSQL.setValue("untaxedprice", defaultprice.divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP));
+            insertSQL.setValue("untaxedamount", row.getBigDecimal("undeliqty").multiply(defaultprice.divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP)));
+            insertSQL.setValue("custamount",row.getBigDecimal("custamount"));
             insertSQL.setValue("skucontrol", row.getBoolean("skucontrol"));
             if(itemRowsMap.containsKey(row.getString("itemid"))){
                 if(itemRowsMap.get(row.getString("itemid")).get(0).getBoolean("ismodule")){
@@ -1804,6 +1810,9 @@ public class Order extends Controller {
         insertSQL.setValue("name", orderRow.getString("contact"));
         insertSQL.setValue("phonenumber", orderRow.getString("phonenumber"));
         insertSQL.setValue("address", orderRow.getString("address"));
+        insertSQL.setValue("province", orderRow.getString("province"));
+        insertSQL.setValue("city", orderRow.getString("city"));
+        insertSQL.setValue("county", orderRow.getString("county"));
         insertSQL.setValue("tracknumber", "");
         insertSQL.setValue("isconfirm", 0);
 
@@ -1837,9 +1846,9 @@ public class Order extends Controller {
             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("discountrate", 1);
             insertSQL.setValue("sa_dispatch_itemsid", 0);
-            insertSQL.setValue("defaultprice", row.getBigDecimal("defaultprice"));
+            insertSQL.setValue("defaultprice", row.getBigDecimal("price"));
             insertSQL.setValue("remarks", row.getString("remarks"));
             insertSQL.setValue("itemno", row.getString("itemno"));
             insertSQL.setValue("itemname", row.getString("itemname"));
@@ -1894,7 +1903,7 @@ public class Order extends Controller {
         JSONArray noneeddeliverys =content.getJSONArray("noneeddeliverys");
 //        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","logisticsmethod","invoicetaxno","invoicename","invoiceaddress","contact","address","phonenumber","remarks");
+        QuerySQL orderQuerySQL = SQLFactory.createQuerySQL(this, "sa_order","sa_orderid","sys_enterpriseid","sys_enterprise_financeid","rec_contactsid","logisticsmethod","invoicetaxno","invoicename","invoiceaddress","contact","address","phonenumber","province","city","county","remarks");
         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","itemno","itemname","model","price","delivery");
@@ -2081,6 +2090,9 @@ public class Order extends Controller {
                     insertSQL.setValue("name", orderdetailRows.get(0).getString("contact"));
                     insertSQL.setValue("phonenumber", orderdetailRows.get(0).getString("phonenumber"));
                     insertSQL.setValue("address", orderdetailRows.get(0).getString("address"));
+                    insertSQL.setValue("province", orderdetailRows.get(0).getString("province"));
+                    insertSQL.setValue("city", orderdetailRows.get(0).getString("city"));
+                    insertSQL.setValue("county", orderdetailRows.get(0).getString("county"));
 
                     insertSQL.setValue("tracknumber", "");
                     insertSQL.setValue("isconfirm", 0);
@@ -2117,7 +2129,7 @@ public class Order extends Controller {
                         insertSQL.setValue("qty", row.getLong("undeliqty"));
                         insertSQL.setValue("discountrate", 1);
                         insertSQL.setValue("sa_dispatch_itemsid", 0);
-                        insertSQL.setValue("defaultprice", row.getBigDecimal("defaultprice"));
+                        insertSQL.setValue("defaultprice", row.getBigDecimal("price"));
                         insertSQL.setValue("remarks", row.getString("remarksdetail"));
                         insertSQL.setValue("itemno", row.getString("itemno"));
                         insertSQL.setValue("itemname", row.getString("itemname"));

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

@@ -354,7 +354,7 @@ public class OrderItems extends Controller {
             if (price.compareTo(BigDecimal.ZERO) < 0) {
                 return getErrReturnObject().setErrMsg("价格不可小于0").toString();
             }
-            defaultprice = price.multiply(rwpricerate);
+            defaultprice = price;
             if (isInsert) {
                 sa_orderitemsids_insert.add(sa_orderitemsid);
                 price = price.multiply(rwpricerate).add(custamount);
@@ -364,9 +364,9 @@ public class OrderItems extends Controller {
                 }
             } else {
                 price = price.multiply(rwpricerate).add(item.getBigDecimal("custamount"));
-                if (item.containsKey("defaultprice")) {
-                    defaultprice = item.getBigDecimal("defaultprice");
-                    price = defaultprice.multiply(pricerate).add(custamount);
+                if(item.containsKey("defaultprice")){
+                    defaultprice=item.getBigDecimal("defaultprice");
+                    price = defaultprice.multiply(rwpricerate).add(custamount);
                 }
                 sqlList.add(orderItemsHelper.getUpdateSQL(sa_orderitemsid, item, itemRow, type, defaultprice, price, saleprice, width, length).getSQL());
             }
@@ -463,6 +463,18 @@ public class OrderItems extends Controller {
         return getSucReturnObject().toString();
     }
 
+    @API(title = "一键设置发货方式", apiversion = R.ID2025121316011603.v1.class)
+    public String oneclickchangedelivery() throws YosException {
+        String delivery= content.getString("delivery");
+        long sa_orderid= content.getLong("sa_orderid");
+        ArrayList<String> sqlList = new ArrayList<>();
+        sqlList.add("update sa_orderitems set delivery='"+delivery+"' where sa_orderid="+sa_orderid);
+        sqlList.add("update sa_order set delivery='"+delivery+"' where sa_orderid="+sa_orderid);
+        dbConnect.runSqlUpdate(sqlList);
+        return getSucReturnObject().toString();
+    }
+
+
     @API(title = "更新可核销数", apiversion = R.ID2025111710122903.v1.class)
     @CACHEING_CLEAN(apiClass = {Order.class, OrderItems.class, restcontroller.sale.order.Order.class, ToolBill.class, accessoryorder.class})
     public String updatecanoffqty() throws YosException {
@@ -1667,8 +1679,14 @@ public class OrderItems extends Controller {
         }
         dbConnect.runSqlUpdate(sqlList);
         if (isclose) {
-            if (dbConnect.runSqlQuery("select * from sa_orderitems where isclose=0 and undeliqty!=0 and sa_orderid=" + sa_orderid).isEmpty()) {
-                dbConnect.runSqlUpdate("update sa_order set status='关闭',closeby='" + username + "',closedate=CURRENT_TIME where sa_orderid=" + sa_orderid);
+            if(dbConnect.runSqlQuery("select * from sa_orderitems where isclose=0 and undeliqty!=0 and sa_orderid="+sa_orderid).isEmpty()){
+                dbConnect.runSqlUpdate("update sa_order set status='关闭',closeby='"+username+"',closedate=CURRENT_TIME where sa_orderid=" +sa_orderid);
+                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=" + row.getLong("sys_enterpriseid"));
+                dbConnect.runSqlUpdate("UPDATE sa_accountbalance t1 " +
+                        "INNER JOIN sa_accountbalance_freez t2 ON t1.sa_accountbalanceid = t2.sa_accountbalanceid " +
+                        "SET t1.freezamount = case when ifnull(t1.freezamount,0)>t2.amount then t1.freezamount-t2.amount else 0 end " +
+                        "WHERE t1.sa_accountbalanceid="+accountbalancerows.get(0).getLong("sa_accountbalanceid")+" and t2.sourcetable='sa_order' and t2.sourceid="+sa_orderid);
+                dbConnect.runSqlUpdate("delete from sa_accountbalance_freez t1 WHERE t1.sourcetable='sa_order' and t1.sourceid="+sa_orderid);
             }
         } else {
             dbConnect.runSqlUpdate("update sa_order set status='审核',closeby='',closedate=null where sa_orderid=" + sa_orderid);

+ 2 - 2
src/custom/restcontroller/webmanage/sale/sendplan/SQL/销售出库单新增.sql

@@ -1,6 +1,6 @@
 insert into st_stockbill (siteid, st_stockbillid,createby, createdate, billno,billdate,changeby, changedate,checkby,checkdate,sys_enterpriseid,
                           rb,type,remarks,status,departmentid,outplace,rec_contactsid,delivery,logisticsmethod,invoice_enterprisename,invoice_address,
-                          invoice_taxno,name,phonenumber,address)
+                          invoice_taxno,name,phonenumber,address,province,city,county)
 values ($siteid$, $st_stockbillid$,$createby$, $createdate$, $billno$,$billdate$, $changeby$, $changedate$,$checkby$,$checkdate$,$sys_enterpriseid$,
         $rb$,$type$,$remarks$,'新建',$departmentid$,$outplace$,$rec_contactsid$,$delivery$,$logisticsmethod$,$invoice_enterprisename$,$invoice_address$,
-        $invoice_taxno$,$name$,$phonenumber$,$address$);
+        $invoice_taxno$,$name$,$phonenumber$,$address$,$province$,$city$,$county$);

+ 13 - 6
src/custom/restcontroller/webmanage/sale/sendplan/sendplandetail.java

@@ -383,6 +383,9 @@ public class sendplandetail extends Controller {
                     sqlFactory.addParameter("name", firstItem.getStringValue("contact"));
                     sqlFactory.addParameter("phonenumber", firstItem.getStringValue("phonenumber"));
                     sqlFactory.addParameter("address", firstItem.getStringValue("address"));
+                    sqlFactory.addParameter("province", firstItem.getString("province"));
+                    sqlFactory.addParameter("city", firstItem.getString("city"));
+                    sqlFactory.addParameter("county", firstItem.getString("county"));
                     sqlFactory.addParameter("remarks", mergeStrings(senddetailpaoit1,";"));
                 } else {
                     sqlFactory.addParameter("outplace", "");
@@ -395,6 +398,9 @@ public class sendplandetail extends Controller {
                     sqlFactory.addParameter("name", "");
                     sqlFactory.addParameter("phonenumber", "");
                     sqlFactory.addParameter("address", "");
+                    sqlFactory.addParameter("province","");
+                    sqlFactory.addParameter("city","");
+                    sqlFactory.addParameter("county", "");
                     sqlFactory.addParameter("remarks", "");
                 }
 
@@ -422,11 +428,12 @@ public class sendplandetail extends Controller {
                     sqlFactorydetail.addParameter("st_stockbillid", st_stockbillid);
 
                     if (orderdetailsRowsMap.containsKey(jsonObject.getLongValue("sa_orderitemsid"))) {
+                        BigDecimal defaultprice = orderdetailsRowsMap.get(jsonObject.getLongValue("sa_orderitemsid")).get(0).getBigDecimal("price").subtract(orderdetailsRowsMap.get(jsonObject.getLongValue("sa_orderitemsid")).get(0).getBigDecimal("custamount"));
                         sqlFactorydetail.addParameter("remarks", orderdetailsRowsMap.get(jsonObject.getLongValue("sa_orderitemsid")).get(0).getString("remarks"));
-                        sqlFactorydetail.addParameter("price", orderdetailsRowsMap.get(jsonObject.getLongValue("sa_orderitemsid")).get(0).getBigDecimal("price"));
-                        sqlFactorydetail.addParameter("amount", orderdetailsRowsMap.get(jsonObject.getLongValue("sa_orderitemsid")).get(0).getBigDecimal("price").multiply(qty));
-                        sqlFactorydetail.addParameter("defaultprice", orderdetailsRowsMap.get(jsonObject.getLongValue("sa_orderitemsid")).get(0).getBigDecimal("defaultprice"));
-                        sqlFactorydetail.addParameter("custamount", orderdetailsRowsMap.get(jsonObject.getLongValue("sa_orderitemsid")).get(0).getString("custamount"));
+                        sqlFactorydetail.addParameter("price", defaultprice);
+                        sqlFactorydetail.addParameter("amount", defaultprice.multiply(qty));
+                        sqlFactorydetail.addParameter("defaultprice", defaultprice);
+                        sqlFactorydetail.addParameter("custamount", orderdetailsRowsMap.get(jsonObject.getLongValue("sa_orderitemsid")).get(0).getBigDecimal("custamount"));
                     } else {
                         sqlFactorydetail.addParameter("remarks", "");
                         sqlFactorydetail.addParameter("price", 0);
@@ -481,8 +488,8 @@ public class sendplandetail extends Controller {
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_sendplandetail", "sa_sendplanid", "sa_sendplandetailid", "colorflag", "outplace", "sendqty", "willoutqty", "willinqty", "canuseqty");
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t2", "t1.siteid = t2.siteid and t1.sa_orderid = t2.sa_orderid", "sonum", "checkdate", "sys_enterpriseid", "sa_orderid", "rec_contactsid", "delivery","logisticsmethod"
-                , "invoicename", "invoiceaddress","invoicetaxno","contact","phonenumber","address","remarks");
-        querySQL.addJoinTable(JOINTYPE.left, "sa_orderitems", "t3", "t3.siteid = t1.siteid and t3.sa_orderitemsid = t1.sa_orderitemsid", "rowno", "sa_orderitemsid");
+                , "invoicename", "invoiceaddress","invoicetaxno","contact","phonenumber","address","province","city","county","remarks");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_orderitems", "t3", "t3.siteid = t1.siteid and t3.sa_orderitemsid = t1.sa_orderitemsid", "rowno", "sa_orderitemsid","custamount");
         querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t4.siteid = t1.siteid and t4.sa_agentsid = t1.sa_agentsid", "agentnum");
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t5.siteid = t4.siteid and t5.sys_enterpriseid = t4.sys_enterpriseid", "enterprisename", "abbreviation");
         querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t6", "t6.siteid = t3.siteid and t6.itemid = t3.itemid", "itemno", "itemname", "model", "itemid", "topclassnum");

+ 8 - 2
src/custom/restcontroller/webmanage/sale/serviceorder/SQL/服务申请单列表查询.sql

@@ -16,7 +16,11 @@ SELECT
     t9.itemno,
     t9.itemname,
     t9.model,
-    t9.spec
+    t9.spec,
+    t12.sys_enterpriseid sys_enterpriseid_initiate,
+    t12.agentnum agentnum_initiate,
+    t12.enterprisename enterprisename_initiate,
+    t12.abbreviation abbreviation_initiate
 FROM
     sa_serviceorder t1
         LEFT JOIN sys_enterprise t2 ON t1.sys_enterpriseid = t2.sys_enterpriseid
@@ -31,4 +35,6 @@ FROM
         left join (SELECT * FROM (SELECT *,ROW_NUMBER() OVER (PARTITION BY sa_serviceorderid ORDER BY sa_serviceorderitemsid ASC) AS rowno FROM sa_serviceorderitems) t WHERE rowno = 1) t8 on t8.sa_serviceorderid=t1.sa_serviceorderid and t8.siteid=t1.siteid
         left join plm_item t9 on t9.itemid=t8.itemid and t9.siteid=t8.siteid
         left join sa_workorder t10 on t10.sa_serviceorderid=t1.sa_serviceorderid and t10.siteid=t1.siteid and t10.status !='作废'
-	where t1.siteid=$siteid$ and $where$
+        left join sys_enterprise_hr t11 on t11.userid=t1.createuserid  AND t11.siteid = t1.siteid
+        left join sv_agents t12 on t12.sys_enterpriseid=t11.sys_enterpriseid  AND t12.siteid = t11.siteid
+where t1.siteid=$siteid$ and $where$

+ 2 - 2
src/custom/restcontroller/webmanage/sale/serviceorder/SQL/服务申请单新增.sql

@@ -1,4 +1,4 @@
 insert into sa_serviceorder (siteid, sa_serviceorderid,createuserid,createby, createdate, billno,billdate,changeuserid,changeby, changedate,
-                                sys_enterpriseid,sa_orderid,reason,remarks,servicetype,class1,class2,province,city,county,address,scenecontact,scenecontactrole,scenecontactphonenumber,begdate,enddate, status,saler_hrid,name,phonenumber,sa_customersid)
+                                sys_enterpriseid,sa_orderid,reason,remarks,servicetype,class1,class2,province,city,county,address,scenecontact,scenecontactrole,scenecontactphonenumber,begdate,enddate, status,saler_hrid,name,phonenumber,sa_customersid,isonlinesales,isallowance,sys_enterpriseid_service,initiator)
 values ($siteid$, $sa_serviceorderid$,$userid$,$username$, CURRENT_TIME, $billno$,$billdate$,$userid$, $username$, CURRENT_TIME, $sys_enterpriseid$,$sa_orderid$,$reason$,$remarks$,$servicetype$,$class1$,$class2$,
-        $province$,$city$,$county$,$address$,$scenecontact$,$scenecontactrole$,$scenecontactphonenumber$,$begdate$,$enddate$,'新建',$saler_hrid$,$name$,$phonenumber$,$sa_customersid$);
+        $province$,$city$,$county$,$address$,$scenecontact$,$scenecontactrole$,$scenecontactphonenumber$,$begdate$,$enddate$,'新建',$saler_hrid$,$name$,$phonenumber$,$sa_customersid$,$isonlinesales$,$isallowance$,$sys_enterpriseid_service$,$initiator$);

+ 4 - 1
src/custom/restcontroller/webmanage/sale/serviceorder/SQL/服务申请单更新.sql

@@ -22,7 +22,10 @@ SET
     saler_hrid=$saler_hrid$,
     name=$name$,
     phonenumber=$phonenumber$,
-    sa_customersid=$sa_customersid$
+    sa_customersid=$sa_customersid$,
+    isonlinesales=$isonlinesales$,
+    isallowance=$isallowance$,
+    sys_enterpriseid_service=$sys_enterpriseid_service$
 WHERE sa_serviceorderid = $sa_serviceorderid$ and siteid=$siteid$
 
 

+ 7 - 1
src/custom/restcontroller/webmanage/sale/serviceorder/SQL/服务申请单详情查询.sql

@@ -18,7 +18,11 @@ SELECT
     t9.model,
     t9.spec,
     t10.begdate cardbegdate,
-    t10.enddate cardenddate
+    t10.enddate cardenddate,
+    t12.sys_enterpriseid sys_enterpriseid_initiate,
+    t12.agentnum agentnum_initiate,
+    t12.enterprisename enterprisename_initiate,
+    t12.abbreviation abbreviation_initiate
 FROM
     sa_serviceorder t1
         LEFT JOIN sys_enterprise t2 ON t1.sys_enterpriseid = t2.sys_enterpriseid
@@ -33,4 +37,6 @@ FROM
         left join (SELECT * FROM (SELECT *,ROW_NUMBER() OVER (PARTITION BY sa_serviceorderid ORDER BY sa_serviceorderitemsid ASC) AS rowno FROM sa_serviceorderitems) t WHERE rowno = 1) t8 on t8.sa_serviceorderid=t1.sa_serviceorderid and t8.siteid=t1.siteid
         left join plm_item t9 on t9.itemid=t8.itemid and t9.siteid=t8.siteid
         left join sa_warrantycard t10 on t8.cardno=t10.cardno
+        left join sys_enterprise_hr t11 on t11.userid=t1.createuserid  AND t11.siteid = t1.siteid
+        left join sv_agents t12 on t12.sys_enterpriseid=t11.sys_enterpriseid  AND t12.siteid = t11.siteid
 	where t1.siteid=$siteid$  and t1.sa_serviceorderid=$sa_serviceorderid$

+ 87 - 4
src/custom/restcontroller/webmanage/sale/serviceorder/serviceorder.java

@@ -14,10 +14,12 @@ import common.YosException;
 import common.annotation.API;
 import common.annotation.CACHEING;
 import common.annotation.CACHEING_CLEAN;
+import common.crm.bean.warrantycard;
 import common.data.*;
 
 import org.apache.commons.lang.StringUtils;
 import org.apache.cxf.configuration.security.DNConstraintsType;
+import org.glassfish.grizzly.utils.StringFilter;
 import restcontroller.R;
 import restcontroller.webmanage.executorService.Executor;
 import restcontroller.webmanage.sale.serviceorder.tools.HttpURLRest;
@@ -68,6 +70,10 @@ public class serviceorder extends Controller {
         String begdate = content.getStringValue("begdate");
         String enddate = content.getStringValue("enddate");
         long saler_hrid = content.getLongValue("saler_hrid");
+        boolean isonlinesales = content.getBooleanValue("isonlinesales");
+        boolean isallowance = content.getBooleanValue("isallowance");
+
+        long sys_enterpriseid_service = content.getLongValue("sys_enterpriseid_service");
 
         String sku = content.getStringValue("sku");
         String cardno = content.getStringValue("cardno");
@@ -85,7 +91,20 @@ public class serviceorder extends Controller {
                 }
             }
         }
+        String initiator="";
+        Rows userrows = dbConnect.runSqlQuery("select t2.usertype,t1.phonenumber from  sys_users t1 inner join sys_usersite t2 on t1.userid = t2.userid where t2.siteid = '" + siteid + "' and t1.userid=" + userid);
+        long usertype = 0;
 
+        if (userrows.isNotEmpty()) {
+            usertype = userrows.get(0).getLong("usertype");
+        }
+        if(usertype==99){
+            initiator="消费者";
+        }else if(usertype==21 || usertype==22){
+            initiator="经销商";
+        }else{
+            initiator="总部";
+        }
         if (sa_serviceorderid <= 0 || dbConnect.runSqlQuery(
                         "select sa_serviceorderid from sa_serviceorder where sa_serviceorderid=" + sa_serviceorderid)
                 .isEmpty()) {
@@ -149,6 +168,15 @@ public class serviceorder extends Controller {
         sqlFactory.addParameter("name", content.getStringValue("name"));
         sqlFactory.addParameter("phonenumber", content.getStringValue("phonenumber"));
         sqlFactory.addParameter("sa_customersid", content.getStringValue("sa_customersid"));
+        sqlFactory.addParameter("isonlinesales",isonlinesales);
+        sqlFactory.addParameter("isallowance",isallowance);
+
+        sqlFactory.addParameter("initiator",initiator);
+
+
+
+        sqlFactory.addParameter("sys_enterpriseid_service",sys_enterpriseid_service);
+
 
         sqlList.add(sqlFactory.getSQL());
 
@@ -171,6 +199,15 @@ public class serviceorder extends Controller {
         return queryserviceorderMain();
     }
 
+    @API(title = "更新是否补贴", apiversion = R.ID2025121517474303.v1.class)
+    public String cheangeisallowance() throws YosException {
+        Long sa_serviceorderid = content.getLong("sa_serviceorderid");
+        boolean isallowance = content.getBooleanValue("isallowance");
+        dbConnect.runSqlUpdate("update sa_serviceorder set isallowance="+isallowance+" where sa_serviceorderid="+sa_serviceorderid);
+        return getSucReturnObject().toString();
+    }
+
+
     /**
      * 服务分类查询
      **/
@@ -221,6 +258,11 @@ public class serviceorder extends Controller {
                 where.append("t1.sku ='").append(whereObject.getString("sku")).append("' ");
                 where.append(")");
             }
+            if (whereObject.containsKey("isvoid") && !"".equals(whereObject.getString("isvoid"))) {
+                where.append(" and(");
+                where.append("t6.isvoid ='").append(whereObject.getString("isvoid")).append("' ");
+                where.append(")");
+            }
         }
 //		String hrid = content.getString("hrid");
 //        SQLFactory sqlFactory = new SQLFactory(this, "审核订单列表查询", pageSize, pageNumber, pageSorting);
@@ -228,22 +270,23 @@ public class serviceorder extends Controller {
 //        sqlFactory.addParameter("siteid", siteid);
 //        sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
 //        Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL(false));
-        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_itemsku", "sku");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_itemsku", "sku","sa_itemskuid");
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.itemid=t2.itemid and t1.siteid=t2.siteid", "itemid", "itemno", "itemname", "model", "spec");
         querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t3", "t3.unitid=t2.unitid and t3.siteid=t2.siteid", "unitname");
-        querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t4.sa_agentsid=t1.sa_agentsid and t4.siteid=t1.siteid", "agentnum");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t4.sys_enterpriseid=t1.sys_enterpriseid and t4.siteid=t1.siteid", "agentnum");
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t5.sys_enterpriseid=t4.sys_enterpriseid and t5.siteid=t4.siteid", "contact", "phonenumber", "address");
-        querySQL.addJoinTable(JOINTYPE.left, "sa_warrantycard", "t6", "t6.sku=t1.sku and t6.siteid=t1.siteid", "cardno", "begdate", "enddate");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_warrantycard", "t6", "t6.sku=t1.sku and t6.siteid=t1.siteid", "cardno", "begdate", "enddate","isvoid");
         querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t7", "t6.sa_customersid=t7.sa_customersid and t6.siteid=t7.siteid", "sa_customersid");
         querySQL.addQueryFields("customername", "t7.name");
         querySQL.addQueryFields("customerphonenumber", "t7.phonenumber");
 
         querySQL.setSiteid(siteid);
-        querySQL.setWhere("t1.sa_agentsid in (select sa_agentsid from sa_agents where  sys_enterpriseid=" + sys_enterpriseid + ")");
+        querySQL.setWhere("(t1.sa_agentsid in (select sa_agentsid from sa_agents where  sys_enterpriseid=" + sys_enterpriseid + ") or t1.sys_enterpriseid="+sys_enterpriseid+")");
         querySQL.setWhere(where.toString());
         querySQL.setPage(pageSize, pageNumber);
         Rows rows = querySQL.query();
+        System.err.println(querySQL.getSQL());
         // 默认商品图片
         Rows defaultImageRows = beans.Item.Item.getItemdefaultImage(this);
         // 附件
@@ -482,6 +525,9 @@ public class serviceorder extends Controller {
             if (whereObject.containsKey("sa_customersid") && !"".equals(whereObject.getString("sa_customersid"))) {
                 where.append(" and t1.sa_customersid ='").append(whereObject.getString("sa_customersid")).append("'");
             }
+            if (whereObject.containsKey("isonlinesales") && !"".equals(whereObject.getString("isonlinesales"))) {
+                where.append(" and t1.isonlinesales ='").append(whereObject.getString("isonlinesales")).append("' ");
+            }
             if (whereObject.containsKey("createuserid") && !"".equals(whereObject.getString("createuserid"))) {
                 where.append(" and t1.createuserid ='").append(whereObject.getString("createuserid")).append("'");
             }
@@ -529,8 +575,12 @@ public class serviceorder extends Controller {
         querySQL.setTableAlias("t0");
         querySQL.addJoinTable(JOINTYPE.right, sqlFactory, "t1", "t0.siteid='111'", "*");
         querySQL.setPage(pageSize, pageNumber);
+
         Rows rows = querySQL.query();
 
+
+
+
         ArrayList<Long> ids = rows.toArrayList("sa_serviceorderid", new ArrayList<>());
         HashMap<Long, ArrayList<String>> tagRows = DataTag.queryTag(this, "sa_serviceorder", ids, true);
         for (Row row : rows) {
@@ -806,6 +856,39 @@ public class serviceorder extends Controller {
 
     }
 
+    @API(title = "作废服务申请单", apiversion = R.ID2025121519311203.v1.class)
+    @CACHEING_CLEAN(apiClass = {workorder.class, serviceorder.class, warrantycard.class})
+    public String cancelServiceOrder() throws YosException {
+        long sa_serviceorderid = content.getLong("sa_serviceorderid");
+        String voidreason =content.getStringValue("voidreason");
+        ArrayList<String> sqllist = new ArrayList<>();
+        Rows workorderrows = dbConnect.runSqlQuery("select sa_workorderid from sa_workorder where sa_serviceorderid ='"
+                + sa_serviceorderid + "' and  siteid='" + siteid + "' and status!='作废'");
+        sqllist.add("update sa_serviceorder set voidreason='"+voidreason+"',status='作废' where sa_serviceorderid="+sa_serviceorderid);
+        sqllist.add(DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "作废", "服务申请单作废成功")
+                .getSQL());
+        if(workorderrows.isNotEmpty()){
+            long sa_workorderid= workorderrows.get(0).getLong("sa_workorderid");
+            voidreason="【服务申请单作废】"+voidreason;
+            sqllist.add("update sa_workorder set voidreason='"+voidreason+"',status='作废' where sa_workorderid="+sa_workorderid);
+            sqllist.add(DataContrlLog.createLog(this, "sa_workorder", sa_serviceorderid, "作废", "工单作废成功")
+                    .getSQL());
+            Rows warrantycardrows = dbConnect.runSqlQuery("select sa_warrantycardid from sa_warrantycard where sa_workorderid ='"
+                    + sa_workorderid + "' and  siteid='" + siteid + "' and isvoid=0");
+            if(warrantycardrows.isNotEmpty()){
+                sqllist.add("update sa_warrantycard set voiddate=CURRENT_TIME,voidreason='"+voidreason+"',isvoid=1 where sa_warrantycardid="+warrantycardrows.get(0).getLong("sa_warrantycardid"));
+                sqllist.add(DataContrlLog.createLog(this, "sa_warrantycard", warrantycardrows.get(0).getLong("sa_warrantycardid"), "作废", "保修卡作废成功")
+                        .getSQL());
+            }
+
+        }
+
+        dbConnect.runSqlUpdate(sqllist);
+
+        return getSucReturnObject().toString();
+    }
+
+
     @API(title = "发送手机验证码", apiversion = R.ID20230215173103.v1.class, accesstoken = false)
     public String sendMessage() throws YosException {
         String customerphone = "";

+ 4 - 1
src/custom/restcontroller/webmanage/sale/stock/Stock.java

@@ -29,7 +29,10 @@ public class Stock extends Controller {
         if (content.containsKey("where")) {
             JSONObject whereObject = content.getJSONObject("where");
             if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
-                where.append("and stockname like '%").append(whereObject.getString("condition")).append("%'");
+                where.append(" and(");
+                where.append("stockname like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or stockno like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
             }
         }
         SQLFactory sqlFactory = new SQLFactory(this, "仓库列表查询");

Разлика између датотеке није приказан због своје велике величине
+ 327 - 289
src/custom/restcontroller/webmanage/sale/stockbill/stockbill.java


+ 105 - 101
src/custom/restcontroller/webmanage/sale/stockbill/stockbillitems.java

@@ -1,7 +1,6 @@
 package restcontroller.webmanage.sale.stockbill;
 
 import beans.brand.Brand;
-import beans.customscheme.CustomScheme;
 import beans.data.BatchDeleteErr;
 import beans.datacontrllog.DataContrlLog;
 import beans.itemprice.ItemPrice;
@@ -54,7 +53,7 @@ public class stockbillitems extends Controller {
                 where.append(" and t3.checkdate >='").append(whereObject.getString("begindate")).append("' ");
             }
             if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
-                where.append(" and t3.checkdate <='").append(getDate_Str(whereObject.getDate("enddate"),1)).append("' ");
+                where.append(" and t3.checkdate <='").append(getDate_Str(whereObject.getDate("enddate"), 1)).append("' ");
             }
             if (whereObject.containsKey("type") && !"".equals(whereObject.getString("type"))) {
                 where.append(" and t3.type ='").append(whereObject.getString("type")).append("' ");
@@ -68,15 +67,15 @@ public class stockbillitems extends Controller {
 //
 //        Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "sa_orderitemsid", "sa_orderid",
-                "itemid","unit","undeliqty","remarks","rowno","customproperties","price","defaultprice");
+                "itemid", "unit", "undeliqty", "remarks", "rowno", "customproperties", "price", "defaultprice", "custamount");
         querySQL.setTableAlias("t1");
-        querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.siteid = t2.siteid and t1.itemid = t2.itemid","itemno","itemname","model","spec","batchcontrol","icaddqty","icminqty","outplace");
-        querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t3", "t1.siteid=t3.siteid and t1.sa_orderid=t3.sa_orderid","sonum","billdate","createdate","submitdate","checkdate","typemx","abstract","delivery","invoicename","invoicetaxno","invoiceaddress");
-        querySQL.addQueryFields("orderremarks","t3.remarks");
+        querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.siteid = t2.siteid and t1.itemid = t2.itemid", "itemno", "itemname", "model", "spec", "batchcontrol", "icaddqty", "icminqty", "outplace");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t3", "t1.siteid=t3.siteid and t1.sa_orderid=t3.sa_orderid", "sonum", "billdate", "createdate", "submitdate", "checkdate", "typemx", "abstract", "delivery", "invoicename", "invoicetaxno", "invoiceaddress");
+        querySQL.addQueryFields("orderremarks", "t3.remarks");
         querySQL.setSiteid(siteid);
         querySQL.setWhere("t3.STATUS = '审核' and ifnull(t1.undeliqty, 0) !=0 and ifnull(t1.isfreeze, 0) =0 AND ifnull( t1.isclose, 0 )= 0");
-        querySQL.setWhere("t3.sys_enterpriseid",content.getLongValue("sys_enterpriseid"));
-        querySQL.setWhere("if(ifnull(t2.batchcontrol,0)!=0,1=1,not EXISTS(select 1 from st_stockbill_items where st_stockbillid='"+content.getLongValue("st_stockbillid")+"' and sa_orderitemsid=t1.sa_orderitemsid))");
+        querySQL.setWhere("t3.sys_enterpriseid", content.getLongValue("sys_enterpriseid"));
+        querySQL.setWhere("if(ifnull(t2.batchcontrol,0)!=0,1=1,not EXISTS(select 1 from st_stockbill_items where st_stockbillid='" + content.getLongValue("st_stockbillid") + "' and sa_orderitemsid=t1.sa_orderitemsid))");
         //querySQL.setWhere("t1.sa_orderitemsid not in(select t1.sa_orderitemsid from (select t1.sa_orderitemsid,t1.siteid,SUM(t1.qty) qty from sa_dispatch_items t1 inner join sa_dispatch t2 on t1.sa_dispatchid=t2.sa_dispatchid and t1.siteid=t2.siteid where t2.status in('新建','提交') group by t1.sa_orderitemsid,t1.siteid) t1 inner join  sa_orderitems t3 on t1.sa_orderitemsid=t3.sa_orderitemsid and t1.siteid=t3.siteid where t3.undeliqty=t1.qty)");
         querySQL.setWhere(where.toString());
         querySQL.setPage(pageSize, pageNumber);
@@ -89,7 +88,7 @@ public class stockbillitems extends Controller {
     public String queryItemList() throws YosException {
         long st_stockbillid = content.getLong("st_stockbillid");
         Rows stockbillrows = dbConnect.runSqlQuery("select sys_enterpriseid from st_stockbill where st_stockbillid=" + st_stockbillid);
-        if(stockbillrows.isEmpty()){
+        if (stockbillrows.isEmpty()) {
             return getErrReturnObject().setErrMsg("该出入库单不存在").toString();
         }
         /*
@@ -108,13 +107,13 @@ public class stockbillitems extends Controller {
 
         }
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "plm_item",
-                "itemid","itemno","itemname","model","spec","batchcontrol","outplace","icaddqty","icminqty");
+                "itemid", "itemno", "itemname", "model", "spec", "batchcontrol", "outplace", "icaddqty", "icminqty");
         querySQL.setTableAlias("t1");
-        querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t2", "t1.siteid = t2.siteid and t1.unitid = t2.unitid","unitname");
+        querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t2", "t1.siteid = t2.siteid and t1.unitid = t2.unitid", "unitname");
         querySQL.setSiteid(siteid);
-        querySQL.addQueryFields("qty","t1.icminqty");
+        querySQL.addQueryFields("qty", "t1.icminqty");
         querySQL.setWhere("t1.STATUS = '审核' and t1.isused=1");
-        querySQL.setWhere("t1.itemid not in (select itemid from st_stockbill_items where st_stockbillid='"+st_stockbillid+"')");
+        querySQL.setWhere("t1.itemid not in (select itemid from st_stockbill_items where st_stockbillid='" + st_stockbillid + "')");
         //querySQL.setWhere("t1.sa_orderitemsid not in(select t1.sa_orderitemsid from (select t1.sa_orderitemsid,t1.siteid,SUM(t1.qty) qty from sa_dispatch_items t1 inner join sa_dispatch t2 on t1.sa_dispatchid=t2.sa_dispatchid and t1.siteid=t2.siteid where t2.status in('新建','提交') group by t1.sa_orderitemsid,t1.siteid) t1 inner join  sa_orderitems t3 on t1.sa_orderitemsid=t3.sa_orderitemsid and t1.siteid=t3.siteid where t3.undeliqty=t1.qty)");
         querySQL.setWhere(where.toString());
         querySQL.setPage(pageSize, pageNumber);
@@ -157,10 +156,10 @@ public class stockbillitems extends Controller {
             if (!rowscount.get(0).getString("status").equals("新建")) {
                 return getErrReturnObject().setErrMsg("非新建状态的出库单无法新增修改").toString();
             }
-            if(rowscount.get(0).getString("sourceobject").equals("tpartreimbursement")){
+            if (rowscount.get(0).getString("sourceobject").equals("tpartreimbursement")) {
                 return getErrReturnObject().setErrMsg("由核销生成的出入库单无法新增修改").toString();
             }
-        }else{
+        } else {
             return getErrReturnObject().setErrMsg("出入库单不存在").toString();
         }
         int i = 0;
@@ -177,14 +176,17 @@ public class stockbillitems extends Controller {
         List<Long> list = new ArrayList<>();
 
         for (Object object : iteminfos) {
-            list.add(((JSONObject)object).getLong("itemid"));
+            list.add(((JSONObject) object).getLong("itemid"));
         }
 
-        RowsMap itemRowsMap = SQLFactory.createQuerySQL(this, "plm_item", "*").setTableAlias("t1").addJoinTable(JOINTYPE.left, "st_stock", "t2", "t1.siteid = t2.siteid and t1.stockno = t2.stockno","stockid").setWhere("itemid", list).query().toRowsMap("itemid");
+        RowsMap itemRowsMap = SQLFactory.createQuerySQL(this, "plm_item", "*").setTableAlias("t1").addJoinTable(JOINTYPE.left, "st_stock", "t2", "t1.siteid = t2.siteid and t1.stockno = t2.stockno", "stockid").setWhere("itemid", list).query().toRowsMap("itemid");
         RowsMap stockRowsMap = SQLFactory.createQuerySQL(this, "st_stock", "stockid", "stockno").query().toRowsMap("stockno");
 
         for (Object obj : iteminfos) {
             JSONObject iteminfo = (JSONObject) obj;
+            if (!iteminfo.containsKey("custamount")) {
+                iteminfo.put("custamount", 0);
+            }
             if (iteminfo.getLong("st_stockbill_itemsid") <= 0 || dbConnect
                     .runSqlQuery("select st_stockbill_itemsid from st_stockbill_items where st_stockbill_itemsid="
                             + iteminfo.getLong("st_stockbill_itemsid"))
@@ -195,63 +197,64 @@ public class stockbillitems extends Controller {
                 insertSQL.setValue("rowno", maxid + i + 1);
                 insertSQL.setValue("st_stockbillid", st_stockbillid);
                 insertSQL.setValue("sa_orderitemsid", iteminfo.getLong("sa_orderitemsid"));
-                if(rowscount.get(0).getString("type").equals("其他入库")){
-                    if(rowscount.get(0).getLong("stockid")!=0){
+                if (rowscount.get(0).getString("type").equals("其他入库")) {
+                    if (rowscount.get(0).getLong("stockid") != 0) {
                         insertSQL.setValue("stockid", rowscount.get(0).getLong("stockid"));
-                    }else{
-                        insertSQL.setValue("stockid",itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getLong("stockid"):iteminfo.getLongValue("stockid"));
+                    } else {
+                        insertSQL.setValue("stockid", itemRowsMap.containsKey(iteminfo.getStringValue("itemid")) ? itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getLong("stockid") : iteminfo.getLongValue("stockid"));
                     }
-                }else if(rowscount.get(0).getString("type").equals("销售出库")){
-                    if(itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))){
-                        if(itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("ismodule")){
+                } else if (rowscount.get(0).getString("type").equals("销售出库")) {
+                    if (itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))) {
+                        if (itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("ismodule")) {
                             insertSQL.setValue("stockid", stockRowsMap.get("105").get(0).getLong("stockid"));
-                        }else{
+                        } else {
                             insertSQL.setValue("stockid", stockRowsMap.get("101").get(0).getLong("stockid"));
                         }
                     }
-                }else if(rowscount.get(0).getString("type").equals("其他出库")){
-                    if(rowscount.get(0).getLong("stockid")!=0){
+                } else if (rowscount.get(0).getString("type").equals("其他出库")) {
+                    if (rowscount.get(0).getLong("stockid") != 0) {
                         insertSQL.setValue("stockid", rowscount.get(0).getLong("stockid"));
-                    }else{
-                        insertSQL.setValue("stockid",itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getLong("stockid"):iteminfo.getLongValue("stockid"));
+                    } else {
+                        insertSQL.setValue("stockid", itemRowsMap.containsKey(iteminfo.getStringValue("itemid")) ? itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getLong("stockid") : iteminfo.getLongValue("stockid"));
                     }
-                }else{
+                } else {
                     insertSQL.setValue("stockid", iteminfo.getLong("stockid"));
                 }
 
                 insertSQL.setValue("itemid", iteminfo.getStringValue("itemid"));
                 insertSQL.setValue("sa_orderid", iteminfo.getLongValue("sa_orderid"));
                 insertSQL.setValue("qty", iteminfo.getStringValue("qty"));
-                insertSQL.setValue("discountrate", iteminfo.getBigDecimal("discountrate"));
+                insertSQL.setValue("discountrate", 1);
                 insertSQL.setValue("sa_dispatch_itemsid", 0);
-                insertSQL.setValue("defaultprice", iteminfo.getStringValue("defaultprice"));
+                insertSQL.setValue("defaultprice", iteminfo.getBigDecimal("price").subtract(iteminfo.getBigDecimal("custamount")));
                 insertSQL.setValue("remarks", iteminfo.getStringValue("remarks"));
-                insertSQL.setValue("itemno", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getString("itemno"):iteminfo.getString("itemno"));
-                insertSQL.setValue("itemname", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getString("itemname"):iteminfo.getString("itemname"));
-                insertSQL.setValue("model", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getString("model"):iteminfo.getString("model"));
-                insertSQL.setValue("price", iteminfo.getBigDecimal("price"));
-                insertSQL.setValue("amount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
-                insertSQL.setValue("untaxedprice", iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP));
-                insertSQL.setValue("untaxedamount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP)));
-                insertSQL.setValue("skucontrol", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("skucontrol"):iteminfo.getBoolean("skucontrol"));
+                insertSQL.setValue("itemno", itemRowsMap.containsKey(iteminfo.getStringValue("itemid")) ? itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getString("itemno") : iteminfo.getString("itemno"));
+                insertSQL.setValue("itemname", itemRowsMap.containsKey(iteminfo.getStringValue("itemid")) ? itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getString("itemname") : iteminfo.getString("itemname"));
+                insertSQL.setValue("model", itemRowsMap.containsKey(iteminfo.getStringValue("itemid")) ? itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getString("model") : iteminfo.getString("model"));
+                insertSQL.setValue("price", iteminfo.getBigDecimal("price").subtract(iteminfo.getBigDecimal("custamount")));
+                insertSQL.setValue("amount", iteminfo.getBigDecimal("qty").multiply((iteminfo.getBigDecimal("price").subtract(iteminfo.getBigDecimal("custamount")))));
+                insertSQL.setValue("custamount", iteminfo.getBigDecimal("custamount"));
+                insertSQL.setValue("untaxedprice", iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13), 2, BigDecimal.ROUND_HALF_UP));
+                insertSQL.setValue("untaxedamount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13), 2, BigDecimal.ROUND_HALF_UP)));
+                insertSQL.setValue("skucontrol", itemRowsMap.containsKey(iteminfo.getStringValue("itemid")) ? itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("skucontrol") : iteminfo.getBoolean("skucontrol"));
                 i++;
-                if(StringUtils.isBlank(rowscount.get(0).getString("name"))
+                if (StringUtils.isBlank(rowscount.get(0).getString("name"))
                         || StringUtils.isBlank(rowscount.get(0).getString("phonenumber"))
-                        ||  StringUtils.isBlank(rowscount.get(0).getString("address"))){
-                    Rows orderRows =dbConnect.runSqlQuery("select * from sa_order where sa_orderid="+iteminfo.getLongValue("sa_orderid"));
-                    if(orderRows.isNotEmpty()){
-                        sqlList.add("update st_stockbill set name='"+orderRows.get(0).getString("contact")+"',phonenumber='"+orderRows.get(0).getString("phonenumber")+"',address='"+orderRows.get(0).getString("address")+"' where st_stockbillid="+st_stockbillid);
+                        || StringUtils.isBlank(rowscount.get(0).getString("address"))) {
+                    Rows orderRows = dbConnect.runSqlQuery("select * from sa_order where sa_orderid=" + iteminfo.getLongValue("sa_orderid"));
+                    if (orderRows.isNotEmpty()) {
+                        sqlList.add("update st_stockbill set name='" + orderRows.get(0).getString("contact") + "',phonenumber='" + orderRows.get(0).getString("phonenumber") + "',address='" + orderRows.get(0).getString("address") + "' where st_stockbillid=" + st_stockbillid);
                     }
-                }else{
-                    String depname="";
+                } else {
+                    String depname = "";
                     Rows departmentrows = dbConnect.runSqlQuery("select depname from sys_department where departmentid=" + rowscount.get(0).getLong("departmentid"));
-                    if(departmentrows.isNotEmpty()){
-                        depname=departmentrows.get(0).getString("depname");
+                    if (departmentrows.isNotEmpty()) {
+                        depname = departmentrows.get(0).getString("depname");
                     }
-                    if(depname.equals("售后部")){
-                        Rows orderRows =dbConnect.runSqlQuery("select * from sa_order where sa_orderid="+iteminfo.getLongValue("sa_orderid"));
-                        if(orderRows.isNotEmpty()){
-                            sqlList.add("update st_stockbill set name='"+orderRows.get(0).getString("contact")+"',phonenumber='"+orderRows.get(0).getString("phonenumber")+"',address='"+orderRows.get(0).getString("address")+"' where st_stockbillid="+st_stockbillid);
+                    if (depname.equals("售后部")) {
+                        Rows orderRows = dbConnect.runSqlQuery("select * from sa_order where sa_orderid=" + iteminfo.getLongValue("sa_orderid"));
+                        if (orderRows.isNotEmpty()) {
+                            sqlList.add("update st_stockbill set name='" + orderRows.get(0).getString("contact") + "',phonenumber='" + orderRows.get(0).getString("phonenumber") + "',address='" + orderRows.get(0).getString("address") + "' where st_stockbillid=" + st_stockbillid);
                         }
                     }
 
@@ -278,16 +281,16 @@ public class stockbillitems extends Controller {
                         updateSQL.setValue("model", iteminfo.getString("model"));
                         updateSQL.setValue("price", iteminfo.getString("price"));
                         updateSQL.setValue("amount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
-                        updateSQL.setValue("untaxedprice", iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP));
-                        updateSQL.setValue("untaxedamount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP)));
+                        updateSQL.setValue("untaxedprice", iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13), 2, BigDecimal.ROUND_HALF_UP));
+                        updateSQL.setValue("untaxedamount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13), 2, BigDecimal.ROUND_HALF_UP)));
                         updateSQL.setValue("batchno", iteminfo.getString("batchno"));
                         updateSQL.setValue("stockid", iteminfo.getString("stockid"));
-                        updateSQL.setValue("skucontrol",itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("skucontrol"):iteminfo.getBoolean("skucontrol"));
-                        if(detailRowsMap.containsKey(iteminfo.getString("st_stockbill_itemsid"))){
-                            if(iteminfo.getBigDecimal("discountrate").compareTo(detailRowsMap.get(iteminfo.getString("st_stockbill_itemsid")).get(0).getBigDecimal("discountrate"))!=0
-                                    || iteminfo.getBigDecimal("defaultprice").compareTo(detailRowsMap.get(iteminfo.getString("st_stockbill_itemsid")).get(0).getBigDecimal("defaultprice"))!=0
-                                    || iteminfo.getBigDecimal("price").compareTo(detailRowsMap.get(iteminfo.getString("st_stockbill_itemsid")).get(0).getBigDecimal("price"))!=0){
-                                sqlList.add(DataContrlLog.createLog(this, "st_stockbill", st_stockbillid, "明细金额变更", "行号【"+detailRowsMap.get(iteminfo.getString("st_stockbill_itemsid")).get(0).getString("rowno")+"】原价:"+iteminfo.getBigDecimal("defaultprice")+",折后价:"+iteminfo.getBigDecimal("price")+",折扣率:"+iteminfo.getBigDecimal("discountrate")).getSQL());
+                        updateSQL.setValue("skucontrol", itemRowsMap.containsKey(iteminfo.getStringValue("itemid")) ? itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("skucontrol") : iteminfo.getBoolean("skucontrol"));
+                        if (detailRowsMap.containsKey(iteminfo.getString("st_stockbill_itemsid"))) {
+                            if (iteminfo.getBigDecimal("discountrate").compareTo(detailRowsMap.get(iteminfo.getString("st_stockbill_itemsid")).get(0).getBigDecimal("discountrate")) != 0
+                                    || iteminfo.getBigDecimal("defaultprice").compareTo(detailRowsMap.get(iteminfo.getString("st_stockbill_itemsid")).get(0).getBigDecimal("defaultprice")) != 0
+                                    || iteminfo.getBigDecimal("price").compareTo(detailRowsMap.get(iteminfo.getString("st_stockbill_itemsid")).get(0).getBigDecimal("price")) != 0) {
+                                sqlList.add(DataContrlLog.createLog(this, "st_stockbill", st_stockbillid, "明细金额变更", "行号【" + detailRowsMap.get(iteminfo.getString("st_stockbill_itemsid")).get(0).getString("rowno") + "】原价:" + iteminfo.getBigDecimal("defaultprice") + ",折后价:" + iteminfo.getBigDecimal("price") + ",折扣率:" + iteminfo.getBigDecimal("discountrate")).getSQL());
                             }
                         }
 
@@ -307,27 +310,27 @@ public class stockbillitems extends Controller {
 
 
         Rows rowsdetail = dbConnect.runSqlQuery("select amount,qty from st_stockbill_items where st_stockbillid=" + st_stockbillid);
-        Rows stockbillrows= dbConnect.runSqlQuery("select t1.sys_enterpriseid,t1.paydiscountamount,t2.depname from st_stockbill t1 left join sys_department t2 on t1.departmentid=t2.departmentid where t1.st_stockbillid=" + st_stockbillid);
+        Rows stockbillrows = dbConnect.runSqlQuery("select t1.sys_enterpriseid,t1.paydiscountamount,t2.depname from st_stockbill t1 left join sys_department t2 on t1.departmentid=t2.departmentid where t1.st_stockbillid=" + st_stockbillid);
         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=" + stockbillrows.get(0).getLong("sys_enterpriseid"));
-        String depname= stockbillrows.get(0).getString("depname");
-        BigDecimal payamount=rowsdetail.sum("amount");
-        if(depname.equals("售后部")){
-            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,paydiscountamount="+payamount+" where st_stockbillid="+st_stockbillid);
-                    }else{
-                        dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount.subtract(accountbalancerows.get(0).getBigDecimal("discountamount"))+",paydiscountamount="+accountbalancerows.get(0).getBigDecimal("discountamount")+" where st_stockbillid="+st_stockbillid);
+        String depname = stockbillrows.get(0).getString("depname");
+        BigDecimal payamount = rowsdetail.sum("amount");
+        if (depname.equals("售后部")) {
+            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,paydiscountamount=" + payamount + " where st_stockbillid=" + st_stockbillid);
+                    } else {
+                        dbConnect.runSqlUpdate("update st_stockbill set payamount=" + payamount.subtract(accountbalancerows.get(0).getBigDecimal("discountamount")) + ",paydiscountamount=" + accountbalancerows.get(0).getBigDecimal("discountamount") + " where st_stockbillid=" + st_stockbillid);
                     }
-                }else{
-                    dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount+",paydiscountamount=0 where st_stockbillid="+st_stockbillid);
+                } else {
+                    dbConnect.runSqlUpdate("update st_stockbill set payamount=" + payamount + ",paydiscountamount=0 where st_stockbillid=" + st_stockbillid);
                 }
 
-            }else{
-                dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount+",paydiscountamount=0 where st_stockbillid="+st_stockbillid);
+            } else {
+                dbConnect.runSqlUpdate("update st_stockbill set payamount=" + payamount + ",paydiscountamount=0 where st_stockbillid=" + st_stockbillid);
             }
-        }else{
-            dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount+",paydiscountamount=0 where st_stockbillid="+st_stockbillid);
+        } else {
+            dbConnect.runSqlUpdate("update st_stockbill set payamount=" + payamount + ",paydiscountamount=0 where st_stockbillid=" + st_stockbillid);
         }
         return querStcokbillItemsList();
     }
@@ -369,19 +372,19 @@ public class stockbillitems extends Controller {
         sqlFactory.addParameter("st_stockbillid", st_stockbillid);
         sqlFactory.addParameter("siteid", siteid);
 //        Rows rows = dbConnect.runSqlQuery(sqlFactory);
-        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_site_parameter",  "sys_site_parameterid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_site_parameter", "sys_site_parameterid");
         querySQL.setTableAlias("t0");
-        querySQL.addJoinTable(JOINTYPE.right, sqlFactory, "t1", "t0.siteid='111'","*");
+        querySQL.addJoinTable(JOINTYPE.right, sqlFactory, "t1", "t0.siteid='111'", "*");
         querySQL.setPage(pageSize, pageNumber);
         Rows rows = querySQL.query();
 
-        Rows stockbillskuRows = dbConnect.runSqlQuery("select t1.sku,t1.st_stockbill_itemsid from  st_stockbill_items_sku t1 left join sa_itemsku t2 on t1.sku=t2.sku  where t1.st_stockbillid!=t1.st_stockbill_itemsid and t1.st_stockbillid="+st_stockbillid);
+        Rows stockbillskuRows = dbConnect.runSqlQuery("select t1.sku,t1.st_stockbill_itemsid from  st_stockbill_items_sku t1 left join sa_itemsku t2 on t1.sku=t2.sku  where t1.st_stockbillid!=t1.st_stockbill_itemsid and t1.st_stockbillid=" + st_stockbillid);
         RowsMap stockbillskuRowsMap = stockbillskuRows.toRowsMap("st_stockbill_itemsid");
-        for(Row row :rows){
-            if(stockbillskuRowsMap.containsKey(row.getString("st_stockbill_itemsid"))){
-                row.put("scanqty",stockbillskuRowsMap.get(row.getString("st_stockbill_itemsid")).size());
-            }else{
-                row.put("scanqty",0);
+        for (Row row : rows) {
+            if (stockbillskuRowsMap.containsKey(row.getString("st_stockbill_itemsid"))) {
+                row.put("scanqty", stockbillskuRowsMap.get(row.getString("st_stockbill_itemsid")).size());
+            } else {
+                row.put("scanqty", 0);
             }
         }
 
@@ -420,31 +423,32 @@ public class stockbillitems extends Controller {
         updateRowNo(st_stockbillid);
 
         Rows rowsdetail = dbConnect.runSqlQuery("select amount,qty from st_stockbill_items where st_stockbillid=" + st_stockbillid);
-        Rows stockbillrows= dbConnect.runSqlQuery("select t1.sys_enterpriseid,t1.paydiscountamount,t2.depname from st_stockbill t1 left join sys_department t2 on t1.departmentid=t2.departmentid where t1.st_stockbillid=" + st_stockbillid);
+        Rows stockbillrows = dbConnect.runSqlQuery("select t1.sys_enterpriseid,t1.paydiscountamount,t2.depname from st_stockbill t1 left join sys_department t2 on t1.departmentid=t2.departmentid where t1.st_stockbillid=" + st_stockbillid);
         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=" + stockbillrows.get(0).getLong("sys_enterpriseid"));
-        String depname= stockbillrows.get(0).getString("depname");
-        BigDecimal payamount=rowsdetail.sum("amount");
-        if(depname.equals("售后部")){
-            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,paydiscountamount="+payamount+" where st_stockbillid="+st_stockbillid);
-                    }else{
-                        dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount.subtract(accountbalancerows.get(0).getBigDecimal("discountamount"))+",paydiscountamount="+accountbalancerows.get(0).getBigDecimal("discountamount")+" where st_stockbillid="+st_stockbillid);
+        String depname = stockbillrows.get(0).getString("depname");
+        BigDecimal payamount = rowsdetail.sum("amount");
+        if (depname.equals("售后部")) {
+            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,paydiscountamount=" + payamount + " where st_stockbillid=" + st_stockbillid);
+                    } else {
+                        dbConnect.runSqlUpdate("update st_stockbill set payamount=" + payamount.subtract(accountbalancerows.get(0).getBigDecimal("discountamount")) + ",paydiscountamount=" + accountbalancerows.get(0).getBigDecimal("discountamount") + " where st_stockbillid=" + st_stockbillid);
                     }
-                }else{
-                    dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount+",paydiscountamount=0 where st_stockbillid="+st_stockbillid);
+                } else {
+                    dbConnect.runSqlUpdate("update st_stockbill set payamount=" + payamount + ",paydiscountamount=0 where st_stockbillid=" + st_stockbillid);
                 }
 
-            }else{
-                dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount+",paydiscountamount=0 where st_stockbillid="+st_stockbillid);
+            } else {
+                dbConnect.runSqlUpdate("update st_stockbill set payamount=" + payamount + ",paydiscountamount=0 where st_stockbillid=" + st_stockbillid);
             }
-        }else{
-            dbConnect.runSqlUpdate("update st_stockbill set payamount="+payamount+",paydiscountamount=0 where st_stockbillid="+st_stockbillid);
+        } else {
+            dbConnect.runSqlUpdate("update st_stockbill set payamount=" + payamount + ",paydiscountamount=0 where st_stockbillid=" + st_stockbillid);
         }
 
         return batchDeleteErr.getReturnObject().toString();
     }
+
     /**
      * 重新对发货单行进行排序
      *

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

@@ -98,25 +98,58 @@ public class stockbillitemssku extends Controller {
         BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, st_stockbill_items_skuids.size());
 
         for (Object o : st_stockbill_items_skuids) {
+            ArrayList<String> sqllist = new ArrayList<>();
             long st_stockbill_items_skuid = Long.parseLong(o.toString());
-            Rows RowsStatus = dbConnect.runSqlQuery("select t1.st_stockbill_items_skuid,t2.status,t2.isreceiver,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='"
+            Rows RowsStatus = dbConnect.runSqlQuery("select t1.st_stockbill_items_skuid,t2.type,t2.rb,t2.status,t2.isreceiver,t1.st_stockbillid,t1.stockid,t1.sku 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).getBoolean("isreceiver")) {
                     batchDeleteErr.addErr(st_stockbill_items_skuid, "到货确认的出库单序列号明细无法删除");
                     continue;
                 }
+                if(RowsStatus.get(0).getString("status").equals("审核")){
+                    sqllist.add("update sa_itemsku set stockid=" + RowsStatus.get(0).getLong("stockid") + " where sku='" + RowsStatus.get(0).getString("sku") + "'");
+                    if (RowsStatus.get(0).getString("type").equals("销售出库")) {
+                        sqllist.add("update sa_itemsku set sa_agentsid=0,sys_enterpriseid=0 where sku='" + RowsStatus.get(0).getString("sku") + "'");
+                    }
+                }
             }
-            ArrayList<String> list = new ArrayList<>();
-            list.add("delete from st_stockbill_items_sku where siteid='" + siteid
+            sqllist.add("delete from st_stockbill_items_sku where siteid='" + siteid
                     + "' and st_stockbill_items_skuid=" + st_stockbill_items_skuid);
-
-            dbConnect.runSqlUpdate(list);
+            dbConnect.runSqlUpdate(sqllist);
         }
+
         return batchDeleteErr.getReturnObject().toString();
     }
 
+    /**
+     * @param type
+     * @param rb
+     * @param fischeck
+     * @return
+     */
+    public boolean isinstock(String type, String rb, boolean fischeck) {
+        if (type.equals("其他出库") || type.equals("销售出库")
+                || type.equals("生产领料出库") || type.equals("委外领料出库")
+                || type.equals("返修出库")) {
+            if ((fischeck && rb.equals("1")) || (!fischeck && rb.equals("0"))) {
+                return false;
+            } else {
+                return true;
+            }
+
+        } else if (type.equals("其他入库") || type.equals("外购入库")
+                || type.equals("生产入库") || type.equals("委外入库")
+                || type.equals("返修入库")) {
+            if ((fischeck && rb.equals("1")) || (!fischeck && rb.equals("0"))) {
+                return true;
+            } else {
+                return false;
+            }
+        }
+        return false;
+    }
+
 
 }

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

@@ -408,9 +408,21 @@ public class toolscode extends Controller {
         Long sa_itemskuid = content.getLong("sa_itemskuid");
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_itemsku_change", "*");
         querySQL.setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.itemid=t2.itemid");
+        querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t1.itemidnew=t3.itemid");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t1.sa_agentsid=t4.sa_agentsid");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t5", "t1.sa_agentsidnew=t5.sa_agentsid");
+        querySQL.addJoinTable(JOINTYPE.left, "st_stock", "t6", "t1.stockid=t6.stockid");
+        querySQL.addJoinTable(JOINTYPE.left, "st_stock", "t7", "t1.stockidnew=t7.stockid");
+        querySQL.addQueryFields("itemno","t2.itemno");
+        querySQL.addQueryFields("itemnonew","t3.itemno");
+        querySQL.addQueryFields("agentnum","t4.agentnum");
+        querySQL.addQueryFields("agentnumnew","t5.agentnum");
+        querySQL.addQueryFields("stockname","t6.stockname");
+        querySQL.addQueryFields("stocknamenew","t7.stockname");
         querySQL.setPage(pageSize, pageNumber);
         querySQL.setSiteid(siteid);
-        querySQL.setWhere("sa_itemskuid", sa_itemskuid);
+        querySQL.setWhere("t1.sa_itemskuid", sa_itemskuid);
         Rows rows = querySQL.query();
         return getSucReturnObject().setData(rows).toString();
     }
@@ -422,6 +434,22 @@ public class toolscode extends Controller {
         return getSucReturnObject().setData(rows).toString();
     }
 
+    @API(title = "判断序列号是否符合要求", apiversion = R.ID2025121515015903.v1.class)
+    public String jundgeSku() throws YosException {
+        if(sys_enterpriseid<=0){
+            sys_enterpriseid=content.getLongValue("sys_enterpriseid");
+        }
+        String sku=content.getString("sku");
+        Rows skuRows =dbConnect.runSqlQuery("select sys_enterpriseid from sa_itemsku where sku='"+sku+"'");
+        if(skuRows.isEmpty()){
+            return getErrReturnObject().setErrMsg("序列号不存在").toString();
+        }
+        if(skuRows.get(0).getLong("sys_enterpriseid")!=sys_enterpriseid){
+            return getErrReturnObject().setErrMsg("序列号不在当前经销商所在仓").toString();
+        }
+        return getSucReturnObject().toString();
+    }
+
 
     @API(title = "删除", apiversion = R.ID20221215101103.v1.class)
     @CACHEING_CLEAN(apiversions = {R.ID20221215101003.v1.class, R.ID20221215100903.v1.class})

+ 1 - 13
src/custom/restcontroller/webmanage/sale/workorder/workorder.java

@@ -495,8 +495,6 @@ public class workorder extends Controller {
         sqlFactory2.addParameter("siteid", siteid);
         sqlFactory2.addParameter_SQL("where", where);
         Rows rows_total = dbConnect.runSqlQuery(sqlFactory2.getSQL());
-        Rows curnodesRows = dbConnect.runSqlQuery("select sa_workorderid,siteid,workpresetjson,status from (select ROW_NUMBER() over(partition by t.sa_workorderid,t.siteid order by t.sequence asc) RowNum ,t.* from sa_workorder_node t where t.status!=1 and t.parentid!=0) as t1  where RowNum = 1");
-        RowsMap curnodesRowsMap = curnodesRows.toRowsMap("sa_workorderid");
 
         QuerySQL userquerySQL = SQLFactory.createQuerySQL(this, "sys_users","userid");
         userquerySQL.setTableAlias("t1");
@@ -508,17 +506,6 @@ public class workorder extends Controller {
 
         if (!rows.isEmpty()) {
             for (Row row : rows) {
-                if (curnodesRowsMap.containsKey(row.getString("sa_workorderid"))) {
-                    if (!curnodesRowsMap.get(row.getString("sa_workorderid")).isEmpty()) {
-                        workpresetInfo workpresetInfo = JSON.parseObject(curnodesRowsMap.get(row.getString("sa_workorderid")).get(0).getString("workpresetjson"), workpresetInfo.class);
-                        row.put("curcontent", workpresetInfo.getWorkname());
-                    } else {
-                        row.put("curcontent", "");
-                    }
-
-                } else {
-                    row.put("curcontent", "");
-                }
                 if(userrowsMap.containsKey(row.getString("serviceordercreateuserid"))){
                     if(userrowsMap.get(row.getString("serviceordercreateuserid")).get(0).getLong("usertype")==99){
                         row.put("needcode", true);
@@ -1258,6 +1245,7 @@ public class workorder extends Controller {
                 insertSQL.setValue("enddate", formattedDate);
                 insertSQL.setValue("begdate", getDateTime_Str());
                 insertSQL.setValue("itemid",  itemrows.get(0).getLong("itemid"));
+                insertSQL.setValue("sa_workorderid",sa_workorderid);
                 if (dbConnect.runSqlQuery("select * from sa_warrantycard where sku='" + itemrows.get(0).getString("sku") + "' and siteid='" + siteid + "' and isvoid=0").isNotEmpty()) {
                     return getErrReturnObject().setErrMsg("该序列号已安装,无法再次安装").toString();
                 }else{

Неке датотеке нису приказане због велике количине промена