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

优化冻结金额更新代码

shenjingwei 1 день назад
Родитель
Сommit
f71a4aa459

+ 5 - 5
src/custom/beans/stockbill/bills/XSCK.java

@@ -185,8 +185,8 @@ 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 " +
+                                    "left JOIN sa_accountbalance_freez t2 ON t1.sa_accountbalanceid = t2.sa_accountbalanceid " +
+                                    "SET t1.freezamount = case when ifnull(t1.freezamount,0)>ifnull(t2.amount,0) then t1.freezamount-ifnull(t2.amount,0) 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);
                         }
@@ -335,8 +335,8 @@ 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 " +
+                                        "left JOIN sa_accountbalance_freez t2 ON t1.sa_accountbalanceid = t2.sa_accountbalanceid " +
+                                        "SET t1.freezamount = case when ifnull(t1.freezamount,0)>ifnull(t2.amount,0) then t1.freezamount-ifnull(t2.amount,0) 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);
                             }
@@ -489,7 +489,7 @@ public class XSCK extends BasicBill {
                         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 set freezamount=ifnull(freezamount,0)-" + accountbalancefreezrows.get(0).getDouble("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"));
                     }
 

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

@@ -1694,7 +1694,7 @@ public class OrderItems extends Controller {
                 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("UPDATE sa_accountbalance t1 left JOIN sa_accountbalance_freez t2 ON t1.sa_accountbalanceid = t2.sa_accountbalanceid " + "SET t1.freezamount = case when ifnull(t1.freezamount,0)>ifnull(t2.amount,0) then t1.freezamount-ifnull(t2.amount,0) 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 {