|
|
@@ -46,6 +46,165 @@ public class OrderItems extends Controller {
|
|
|
super(content);
|
|
|
}
|
|
|
|
|
|
+ @API(title = "配件订单明细新增或更新", apiversion = R.ID2025121314111503.v1.class, intervaltime = 200)
|
|
|
+ @CACHEING_CLEAN(apiClass = {Order.class, OrderItems.class, restcontroller.sale.order.Order.class, ToolBill.class, accessoryorder.class})
|
|
|
+ public String insertOrUpdate_pj() throws YosException {
|
|
|
+ Long sa_orderid = content.getLong("sa_orderid");
|
|
|
+ Long sys_enterpriseid = content.getLong("sys_enterpriseid");
|
|
|
+ JSONArray items = content.getJSONArray("items");
|
|
|
+ //辅助类
|
|
|
+ OrderItemsHelper orderItemsHelper = new OrderItemsHelper(this);
|
|
|
+ ArrayList<String> sqlList = new ArrayList<>();
|
|
|
+
|
|
|
+ Rows orderRows = getOrderRows(this, sa_orderid);
|
|
|
+ if (orderRows.isEmpty()) {
|
|
|
+ return getErrReturnObject().setErrMsg("数据不存在,无法添加").toString();
|
|
|
+ } else {
|
|
|
+ if (!orderRows.get(0).getString("status").equals("新建") && !orderRows.get(0).getString("status").equals("提交") && !orderRows.get(0).getString("status").equals("预提交")) {
|
|
|
+ return getErrReturnObject().setErrMsg("该状态无法操作").toString();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //通过版本更新订单表头数据
|
|
|
+ beans.order.Order.updateOrderWithVersion(this);
|
|
|
+
|
|
|
+ String type = orderRows.get(0).getString("type");
|
|
|
+
|
|
|
+ //批量查询商品信息
|
|
|
+ RowsMap itemRowsMap = orderItemsHelper.getItemRowsMap(items);
|
|
|
+
|
|
|
+ BigDecimal sumqty = BigDecimal.ZERO;
|
|
|
+ ArrayList<Long> sa_orderitemsids_insert =new ArrayList<>();
|
|
|
+ for (Object obj : items) {
|
|
|
+
|
|
|
+ JSONObject item = (JSONObject) obj;
|
|
|
+ Long itemid = item.getLong("itemid");
|
|
|
+ Long sa_orderitemsid = item.getLong("sa_orderitemsid");
|
|
|
+ BigDecimal qty = item.getBigDecimal("qty");
|
|
|
+ sumqty = sumqty.add(qty);
|
|
|
+
|
|
|
+ Row itemRow = getItemRow(itemid);
|
|
|
+
|
|
|
+ Boolean isInsert = true;
|
|
|
+ JSONArray customproperties = new JSONArray();
|
|
|
+ if (sa_orderitemsid <= 0) {
|
|
|
+ Rows rows;
|
|
|
+ if(!type.equals("配件订单")){
|
|
|
+ rows= dbConnect.runSqlQuery("SELECT sa_orderitemsid,price from sa_orderitems WHERE siteid='" + siteid + "' and itemid=" + itemid + " and sa_orderid=" + sa_orderid + " and sa_promotion_itemsid=" + item.getLongValue("sa_promotion_itemsid"));
|
|
|
+ }else{
|
|
|
+ if(StringUtils.isBlank(item.getStringValue("cardno"))){
|
|
|
+ rows= dbConnect.runSqlQuery("SELECT t1.sa_orderitemsid,qty from sa_orderitems t1 WHERE t1.siteid='" + siteid + "' and ifnull(cardno,'')='' and t1.itemid=" + itemid + " and t1.sa_orderid=" + sa_orderid);
|
|
|
+ }else{
|
|
|
+ rows= dbConnect.runSqlQuery("SELECT t1.sa_orderitemsid,qty from sa_orderitems t1 WHERE t1.siteid='" + siteid + "' and t1.itemid=" + itemid + " and t1.sa_orderid=" + sa_orderid + " and ifnull(t1.cardno,'')='"+item.getStringValue("cardno")+"'");
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ if (rows.isEmpty()) {
|
|
|
+ sa_orderitemsid = createTableID("sa_orderitems");
|
|
|
+ } else {
|
|
|
+ //System.out.println(beans.order.Order.getDefaultIsRepeatValue(siteid, type));
|
|
|
+ if (beans.order.Order.getDefaultIsRepeatValue(siteid, type)) {
|
|
|
+ sa_orderitemsid = createTableID("sa_orderitems");
|
|
|
+ isInsert = true;
|
|
|
+ } else {
|
|
|
+ //price1 = rows.get(0).getBigDecimal("price");
|
|
|
+ sa_orderitemsid = rows.get(0).getLong("sa_orderitemsid");
|
|
|
+ item.put("qty",item.getBigDecimal("qty").add(rows.get(0).getBigDecimal("qty")));
|
|
|
+ isInsert = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ isInsert = false;
|
|
|
+ }
|
|
|
+ if (!isInsert) {
|
|
|
+ if (dbConnect.runSqlQuery("SELECT 1 from sa_orderitems WHERE itemid=" + itemid + " and sa_orderid=" + sa_orderid + " and siteid='" + siteid + "'").isEmpty()) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //是否符合商品起订量和增量判断
|
|
|
+ orderItemsHelper.compareQty(type, itemRowsMap, item, itemRow, new Rows());
|
|
|
+
|
|
|
+ BigDecimal defaultprice;
|
|
|
+ BigDecimal price;
|
|
|
+ BigDecimal saleprice;
|
|
|
+
|
|
|
+
|
|
|
+ //价格
|
|
|
+ ItemPrice itemPrice = ItemPrice.getItemPrice(this, sys_enterpriseid, itemid);
|
|
|
+ price = orderItemsHelper.getPrice(orderRows.get(0), itemPrice, item);
|
|
|
+ saleprice = orderItemsHelper.getSalePrice(orderRows.get(0), itemPrice, item, itemRowsMap);
|
|
|
+ if (price.compareTo(BigDecimal.ZERO) < 0) {
|
|
|
+ return getErrReturnObject().setErrMsg("价格不可小于0").toString();
|
|
|
+ }
|
|
|
+ defaultprice = price;
|
|
|
+ if (isInsert) {
|
|
|
+ sa_orderitemsids_insert.add(sa_orderitemsid);
|
|
|
+ sqlList.add(orderItemsHelper.getInsertSQL(customproperties, sa_orderitemsid, item, itemRow, type, defaultprice, price, saleprice, itemPrice.getMarketprice(), "", new Rows(), 0, 0, BigDecimal.ZERO, BigDecimal.valueOf(1), BigDecimal.valueOf(1)).getSQL());
|
|
|
+ if (item.getLongValue("sa_workorderid") != 0) {
|
|
|
+ sqlList.add("update sa_workorder_node_items set sourceid=" + sa_orderid + ",sourcetable='sa_order' where sa_workorderid=" + item.getLongValue("sa_workorderid") + " and itemid=" + item.getLong("itemid"));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ price = item.getBigDecimal("price");
|
|
|
+ defaultprice=item.getBigDecimal("defaultprice");
|
|
|
+ sqlList.add(orderItemsHelper.getUpdateSQL(sa_orderitemsid, item, itemRow, type, defaultprice, price, saleprice, 0,0).getSQL());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ dbConnect.runSqlUpdate(sqlList);
|
|
|
+ //重新排序
|
|
|
+ updateRowNo(sa_orderid);
|
|
|
+ //更新订单扣款信息
|
|
|
+ updateAccountclassinfos(sa_orderid);
|
|
|
+
|
|
|
+ if(type.equals("配件订单")){
|
|
|
+ dbConnect.runSqlUpdate("UPDATE sa_order o JOIN (SELECT sa_orderid,GROUP_CONCAT(DISTINCT delivery SEPARATOR '+') AS delivery FROM sa_orderitems where sa_orderid="+sa_orderid+" GROUP BY sa_orderid) od ON o.sa_orderid = od.sa_orderid SET o.delivery = od.delivery ");
|
|
|
+ }
|
|
|
+ sqlList=new ArrayList<>();
|
|
|
+ if (type.equals("配件订单")) {
|
|
|
+ Rows rowsdetails = dbConnect.runSqlQuery("select t1.price,t1.amount,t1.sa_orderitemsid,t1.itemid,ifnull(t2.iswriteoff,0) iswriteoff,t3.begdate,t3.enddate from sa_orderitems t1 " +
|
|
|
+ "left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid " +
|
|
|
+ "left join sa_warrantycard t3 on t1.cardno=t3.cardno and t1.siteid=t3.siteid and t3.isvoid=0 and t3.deleted=0 where t1.sa_orderid=" + sa_orderid);
|
|
|
+ for (Row rowsdetail : rowsdetails) {
|
|
|
+ String billingstatus = "";
|
|
|
+ BigDecimal price = rowsdetail.getBigDecimal("price");
|
|
|
+ BigDecimal amount = rowsdetail.getBigDecimal("amount");
|
|
|
+ String begdate = rowsdetail.getString("begdate");
|
|
|
+ String enddate = rowsdetail.getString("enddate");
|
|
|
+ if (StringUtils.isBlank(begdate) || StringUtils.isBlank(enddate)) {
|
|
|
+ billingstatus = "保外收费";
|
|
|
+ } else {
|
|
|
+ Date date = new Date();
|
|
|
+ if (date.before(rowsdetail.getDate("enddate"))) {
|
|
|
+ if (rowsdetail.getBoolean("iswriteoff")) {
|
|
|
+ billingstatus = "保内收费";
|
|
|
+ } else {
|
|
|
+ billingstatus = "保内免费";
|
|
|
+ if(sa_orderitemsids_insert.contains(rowsdetail.getLong("sa_orderitemsid"))){
|
|
|
+ price = BigDecimal.ZERO;
|
|
|
+ amount = BigDecimal.ZERO;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ billingstatus = "保外收费";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(!billingstatus.equals("保内收费")){
|
|
|
+ sqlList.add("update sa_orderitems set canoffqty=0 where sa_orderitemsid=" + rowsdetail.getLong("sa_orderitemsid"));
|
|
|
+ }
|
|
|
+ sqlList.add("update sa_orderitems set price=" + price + ",amount=" + amount + ",billingstatus='" + billingstatus + "' where sa_orderitemsid=" + rowsdetail.getLong("sa_orderitemsid"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ dbConnect.runSqlUpdate(sqlList);
|
|
|
+
|
|
|
+ return getSucReturnObject().toString();
|
|
|
+ }
|
|
|
+
|
|
|
@API(title = "新增或更新", apiversion = R.ID20221109093602.v1.class, intervaltime = 200)
|
|
|
@CACHEING_CLEAN(apiClass = {Order.class, OrderItems.class, restcontroller.sale.order.Order.class, ToolBill.class, accessoryorder.class})
|
|
|
public String insertOrUpdate() throws YosException {
|
|
|
@@ -76,7 +235,7 @@ public class OrderItems extends Controller {
|
|
|
RowsMap itemRowsMap = orderItemsHelper.getItemRowsMap(items);
|
|
|
|
|
|
BigDecimal sumqty = BigDecimal.ZERO;
|
|
|
- ArrayList<Long> sa_orderitemsids_insert =new ArrayList<>();
|
|
|
+ ArrayList<Long> sa_orderitemsids_insert = new ArrayList<>();
|
|
|
for (Object obj : items) {
|
|
|
JSONObject item = (JSONObject) obj;
|
|
|
Long itemid = item.getLong("itemid");
|
|
|
@@ -115,13 +274,13 @@ public class OrderItems extends Controller {
|
|
|
|
|
|
spec = orderItemsHelper.getCustomSpec(itemRowsMap, item);
|
|
|
Rows rows = new Rows();
|
|
|
- if(!type.equals("配件订单")){
|
|
|
- rows= dbConnect.runSqlQuery("SELECT sa_orderitemsid,price from sa_orderitems WHERE siteid='" + siteid + "' and itemid=" + itemid + " and sa_orderid=" + sa_orderid + " and sa_promotion_itemsid=" + item.getLongValue("sa_promotion_itemsid"));
|
|
|
- }else{
|
|
|
- if(StringUtils.isBlank(item.getStringValue("cardno"))){
|
|
|
- rows= dbConnect.runSqlQuery("SELECT t1.sa_orderitemsid,qty from sa_orderitems t1 WHERE t1.siteid='" + siteid + "' and ifnull(cardno,'')='' and t1.itemid=" + itemid + " and t1.sa_orderid=" + sa_orderid);
|
|
|
- }else{
|
|
|
- rows= dbConnect.runSqlQuery("SELECT t1.sa_orderitemsid,qty from sa_orderitems t1 WHERE t1.siteid='" + siteid + "' and t1.itemid=" + itemid + " and t1.sa_orderid=" + sa_orderid + " and ifnull(t1.cardno,'')='"+item.getStringValue("cardno")+"'");
|
|
|
+ if (!type.equals("配件订单")) {
|
|
|
+ rows = dbConnect.runSqlQuery("SELECT sa_orderitemsid,price from sa_orderitems WHERE siteid='" + siteid + "' and itemid=" + itemid + " and sa_orderid=" + sa_orderid + " and sa_promotion_itemsid=" + item.getLongValue("sa_promotion_itemsid"));
|
|
|
+ } else {
|
|
|
+ if (StringUtils.isBlank(item.getStringValue("cardno"))) {
|
|
|
+ rows = dbConnect.runSqlQuery("SELECT t1.sa_orderitemsid,qty from sa_orderitems t1 WHERE t1.siteid='" + siteid + "' and ifnull(cardno,'')='' and t1.itemid=" + itemid + " and t1.sa_orderid=" + sa_orderid);
|
|
|
+ } else {
|
|
|
+ rows = dbConnect.runSqlQuery("SELECT t1.sa_orderitemsid,qty from sa_orderitems t1 WHERE t1.siteid='" + siteid + "' and t1.itemid=" + itemid + " and t1.sa_orderid=" + sa_orderid + " and ifnull(t1.cardno,'')='" + item.getStringValue("cardno") + "'");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -136,7 +295,7 @@ public class OrderItems extends Controller {
|
|
|
} else {
|
|
|
//price1 = rows.get(0).getBigDecimal("price");
|
|
|
sa_orderitemsid = rows.get(0).getLong("sa_orderitemsid");
|
|
|
- item.put("qty",item.getBigDecimal("qty").add(rows.get(0).getBigDecimal("qty")));
|
|
|
+ item.put("qty", item.getBigDecimal("qty").add(rows.get(0).getBigDecimal("qty")));
|
|
|
isInsert = false;
|
|
|
}
|
|
|
|
|
|
@@ -179,8 +338,8 @@ public class OrderItems extends Controller {
|
|
|
// int year = Year.now().getValue();
|
|
|
// int quarter = YearMonth.now().get(IsoFields.QUARTER_OF_YEAR);
|
|
|
Rows custamountrows = dbConnect.runSqlQuery("select * from sa_agents where sys_enterpriseid=" + sys_enterpriseid + " and siteid='" + siteid + "'");
|
|
|
- if(custamountrows.isNotEmpty() && !type.equals("配件订单")){
|
|
|
- if(custamountrows.get(0).getDouble("pricerate")>0){
|
|
|
+ if (custamountrows.isNotEmpty() && !type.equals("配件订单")) {
|
|
|
+ if (custamountrows.get(0).getDouble("pricerate") > 0) {
|
|
|
rwpricerate = custamountrows.get(0).getBigDecimal("pricerate");
|
|
|
}
|
|
|
}
|
|
|
@@ -252,10 +411,10 @@ public class OrderItems extends Controller {
|
|
|
} else {
|
|
|
dbConnect.runSqlUpdate("UPDATE sa_order set abstract ='' WHERE sa_orderid='" + sa_orderid + "'");
|
|
|
}
|
|
|
- if(type.equals("配件订单")){
|
|
|
- dbConnect.runSqlUpdate("UPDATE sa_order o JOIN (SELECT sa_orderid,GROUP_CONCAT(DISTINCT delivery SEPARATOR '+') AS delivery FROM sa_orderitems where sa_orderid="+sa_orderid+" GROUP BY sa_orderid) od ON o.sa_orderid = od.sa_orderid SET o.delivery = od.delivery ");
|
|
|
+ if (type.equals("配件订单")) {
|
|
|
+ dbConnect.runSqlUpdate("UPDATE sa_order o JOIN (SELECT sa_orderid,GROUP_CONCAT(DISTINCT delivery SEPARATOR '+') AS delivery FROM sa_orderitems where sa_orderid=" + sa_orderid + " GROUP BY sa_orderid) od ON o.sa_orderid = od.sa_orderid SET o.delivery = od.delivery ");
|
|
|
}
|
|
|
- sqlList=new ArrayList<>();
|
|
|
+ sqlList = new ArrayList<>();
|
|
|
if (type.equals("配件订单")) {
|
|
|
Rows rowsdetails = dbConnect.runSqlQuery("select t1.price,t1.amount,t1.sa_orderitemsid,t1.itemid,ifnull(t2.iswriteoff,0) iswriteoff,t3.begdate,t3.enddate from sa_orderitems t1 " +
|
|
|
"left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid " +
|
|
|
@@ -275,17 +434,17 @@ public class OrderItems extends Controller {
|
|
|
billingstatus = "保内收费";
|
|
|
} else {
|
|
|
billingstatus = "保内免费";
|
|
|
- if(sa_orderitemsids_insert.contains(rowsdetail.getLong("sa_orderitemsid"))){
|
|
|
+ if (sa_orderitemsids_insert.contains(rowsdetail.getLong("sa_orderitemsid"))) {
|
|
|
price = BigDecimal.ZERO;
|
|
|
amount = BigDecimal.ZERO;
|
|
|
}
|
|
|
|
|
|
}
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
billingstatus = "保外收费";
|
|
|
}
|
|
|
}
|
|
|
- if(!billingstatus.equals("保内收费")){
|
|
|
+ if (!billingstatus.equals("保内收费")) {
|
|
|
sqlList.add("update sa_orderitems set canoffqty=0 where sa_orderitemsid=" + rowsdetail.getLong("sa_orderitemsid"));
|
|
|
}
|
|
|
sqlList.add("update sa_orderitems set price=" + price + ",amount=" + amount + ",billingstatus='" + billingstatus + "' where sa_orderitemsid=" + rowsdetail.getLong("sa_orderitemsid"));
|
|
|
@@ -309,25 +468,25 @@ public class OrderItems extends Controller {
|
|
|
BigDecimal canoffqty = content.getBigDecimal("canoffqty");
|
|
|
Rows orderRows = dbConnect.runSqlQuery("SELECT status,sonum,type from sa_order WHERE sa_orderid=" + sa_orderid + " and siteid='" + siteid + "'");
|
|
|
Rows orderitemsRows = dbConnect.runSqlQuery("SELECT sa_orderitemsid,qty,billingstatus,rowno from sa_orderitems WHERE sa_orderid=" + sa_orderid + " and sa_orderitemsid='" + sa_orderitemsid + "'");
|
|
|
- if(orderRows.isEmpty()){
|
|
|
+ if (orderRows.isEmpty()) {
|
|
|
return getErrReturnObject().setErrMsg("配件订单不存在").toString();
|
|
|
}
|
|
|
- if(!orderRows.get(0).getString("type").equals("配件订单")){
|
|
|
+ if (!orderRows.get(0).getString("type").equals("配件订单")) {
|
|
|
return getErrReturnObject().setErrMsg("非配件订单无法更新可核销数").toString();
|
|
|
}
|
|
|
- if(orderRows.get(0).getString("status").equals("审核")){
|
|
|
- return getErrReturnObject().setErrMsg("配件订单【"+orderRows.get(0).getString("sonum")+"】已审核,无法更新可核销数").toString();
|
|
|
+ if (orderRows.get(0).getString("status").equals("审核")) {
|
|
|
+ return getErrReturnObject().setErrMsg("配件订单【" + orderRows.get(0).getString("sonum") + "】已审核,无法更新可核销数").toString();
|
|
|
}
|
|
|
- if(orderitemsRows.isEmpty()){
|
|
|
+ if (orderitemsRows.isEmpty()) {
|
|
|
return getErrReturnObject().setErrMsg("订单明细不存在").toString();
|
|
|
}
|
|
|
- if(!orderitemsRows.get(0).getString("billingstatus").equals("保内收费")){
|
|
|
+ if (!orderitemsRows.get(0).getString("billingstatus").equals("保内收费")) {
|
|
|
//return getErrReturnObject().setErrMsg("行号【"+orderitemsRows.get(0).getString("rowno")+"】为非保内收费配件,无法更新可核销数").toString();
|
|
|
}
|
|
|
- if(orderitemsRows.get(0).getBigDecimal("qty").compareTo(canoffqty)<0){
|
|
|
+ if (orderitemsRows.get(0).getBigDecimal("qty").compareTo(canoffqty) < 0) {
|
|
|
return getErrReturnObject().setErrMsg("可核销数不可大于商品明细行数量").toString();
|
|
|
}
|
|
|
- dbConnect.runSqlUpdate("update sa_orderitems set canoffqty="+canoffqty+" where sa_orderitemsid="+sa_orderitemsid);
|
|
|
+ dbConnect.runSqlUpdate("update sa_orderitems set canoffqty=" + canoffqty + " where sa_orderitemsid=" + sa_orderitemsid);
|
|
|
return getSucReturnObject().toString();
|
|
|
}
|
|
|
|
|
|
@@ -343,14 +502,16 @@ public class OrderItems extends Controller {
|
|
|
Rows rows = new Rows();
|
|
|
for (Object obj : items) {
|
|
|
JSONObject item = (JSONObject) obj;
|
|
|
- Long itemid = item.getLongValue("itemid");
|
|
|
- JSONArray customproperties = new JSONArray();
|
|
|
- customproperties = orderItemsHelper.getCustomProperties(itemRowsMap, item);
|
|
|
+ if (item != null) {
|
|
|
+ Long itemid = item.getLongValue("itemid");
|
|
|
+ JSONArray customproperties = new JSONArray();
|
|
|
+ customproperties = orderItemsHelper.getCustomProperties(itemRowsMap, item);
|
|
|
|
|
|
- String custompropertie = customproperties.toJSONString().replace("[", "").replace("]", "").replace("\"", "");
|
|
|
+ String custompropertie = customproperties.toJSONString().replace("[", "").replace("]", "").replace("\"", "");
|
|
|
|
|
|
- Rows temprows = dbConnect.runSqlQuery("SELECT itemname from sa_orderitems WHERE sa_orderid=" + sa_orderid + " and siteid='" + siteid + "' and itemid=" + itemid + " and ifnull(customproperties,'')='" + custompropertie + "'");
|
|
|
- rows.addAll(temprows);
|
|
|
+ Rows temprows = dbConnect.runSqlQuery("SELECT itemname from sa_orderitems WHERE sa_orderid=" + sa_orderid + " and siteid='" + siteid + "' and itemid=" + itemid + " and ifnull(customproperties,'')='" + custompropertie + "'");
|
|
|
+ rows.addAll(temprows);
|
|
|
+ }
|
|
|
}
|
|
|
Rows orderRows = beans.order.Order.getOrderRows(this, sa_orderid);
|
|
|
String type = orderRows.get(0).getString("type");
|
|
|
@@ -716,14 +877,14 @@ public class OrderItems extends Controller {
|
|
|
QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "*");
|
|
|
querySQL.setTableAlias("t1");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "st_invbal_sale", "t2", "t2.siteid = t1.siteid AND t2.itemid = t1.itemid", "cansaleqty", "candispatchqty");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t3.itemid = t1.itemid and t3.siteid = t1.siteid", "orderminqty_auxunit", "orderaddqty_auxunit", "spec", "iscustomsize", "widthschemeid", "lengthschemeid", "standards", "k3outcode","outplace","aftersalesitemno");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t3.itemid = t1.itemid and t3.siteid = t1.siteid", "orderminqty_auxunit", "orderaddqty_auxunit", "spec", "iscustomsize", "widthschemeid", "lengthschemeid", "standards", "k3outcode", "outplace", "aftersalesitemno");
|
|
|
if (sa_promotionid > 0) {
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "sa_promotion_items", "t4", "t4.sa_promotion_itemsid = t1.sa_promotion_itemsid and t4.siteid = t1.siteid and t4.sa_promotionid=" + sa_promotionid, "packagetypemx", "saledqty", "groupqty");
|
|
|
}
|
|
|
if (type.equals("配件订单")) {
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "sa_workorder", "t5", "t1.sa_workorderid=t5.sa_workorderid and t1.siteid=t5.siteid");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "sa_warrantycard", "t6", "t6.cardno=t1.cardno and t6.siteid=t1.siteid", "sku","address");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t7", "t7.itemid=t6.itemid and t7.siteid=t6.siteid","iswriteoff");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "sa_warrantycard", "t6", "t6.cardno=t1.cardno and t6.siteid=t1.siteid", "sku", "address");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t7", "t7.itemid=t6.itemid and t7.siteid=t6.siteid", "iswriteoff");
|
|
|
}
|
|
|
querySQL.addQueryFields("candispatchqty", "ifnull(t2.candispatchqty, 0)");
|
|
|
querySQL.addQueryFields("cansaleqty", "ifnull(t2.cansaleqty, 0)");
|
|
|
@@ -1024,10 +1185,10 @@ public class OrderItems extends Controller {
|
|
|
//查询订单列表(管理端)
|
|
|
public QuerySQL queryAllListManage(String where) throws YosException {
|
|
|
|
|
|
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "sa_orderitemsid", "itemid", "rowno", "itemno", "itemname", "unit", "qty", "undeliqty", "saleprice", "defaultprice", "price", "amount", "remarks", "customproperties", "batchcontrol", "model", "conversionrate", "marketprice", "defaultprice", "defaultamount", "auxqty", "needdate", "deliedqty", "rebateamount", "invoiceamount", "writeoffamount", "auxunit", "sa_orderid", "deliverydate", "returnqty", "stockno", "position", "batchno", "isfreeze", "decorationrebateflag","isclose","custamount");
|
|
|
+ QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "sa_orderitemsid", "itemid", "rowno", "itemno", "itemname", "unit", "qty", "undeliqty", "saleprice", "defaultprice", "price", "amount", "remarks", "customproperties", "batchcontrol", "model", "conversionrate", "marketprice", "defaultprice", "defaultamount", "auxqty", "needdate", "deliedqty", "rebateamount", "invoiceamount", "writeoffamount", "auxunit", "sa_orderid", "deliverydate", "returnqty", "stockno", "position", "batchno", "isfreeze", "decorationrebateflag", "isclose", "custamount");
|
|
|
querySQL.setTableAlias("t1");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t3.itemid = t1.itemid and t3.siteid = t1.siteid", "orderminqty_auxunit", "orderminqty", "orderaddqty_auxunit", "orderaddqty", "spec", "standards", "packageqty", "delivery", "k3outcode");
|
|
|
- querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t5", "t5.sa_orderid = t1.sa_orderid and t5.siteid = t1.siteid", "sonum", "type", "typemx", "status", "billdate", "submitdate", "checkdate", "tradefield", "closedate","createby");
|
|
|
+ querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t5", "t5.sa_orderid = t1.sa_orderid and t5.siteid = t1.siteid", "sonum", "type", "typemx", "status", "billdate", "submitdate", "checkdate", "tradefield", "closedate", "createby");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t6", "t6.sys_enterpriseid = t5.sys_enterpriseid and t6.siteid = t5.siteid", "agentnum");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t7", "t7.sys_enterpriseid = t5.sys_enterpriseid and t7.siteid = t5.siteid", "enterprisename", "abbreviation");
|
|
|
querySQL.addJoinTable(JOINTYPE.left, "plm_itemclass", "t8", "t8.itemclassid = t3.marketingcategory and t8.siteid = t3.siteid", "itemclassname");
|
|
|
@@ -1347,7 +1508,8 @@ public class OrderItems extends Controller {
|
|
|
//
|
|
|
// sqlList.add(sqlFactory.getSQL());
|
|
|
//
|
|
|
-//// content.put("sa_orderitemsid", sa_orderitemsid);
|
|
|
+
|
|
|
+ /// / content.put("sa_orderitemsid", sa_orderitemsid);
|
|
|
//
|
|
|
// }
|
|
|
//
|
|
|
@@ -1413,14 +1575,13 @@ public class OrderItems extends Controller {
|
|
|
// }
|
|
|
//
|
|
|
// }
|
|
|
-
|
|
|
@API(title = "行关闭", apiversion = R.ID2025102210393903.v1.class)
|
|
|
@CACHEING_CLEAN(apiClass = {Order.class, OrderItems.class, restcontroller.sale.order.Order.class})
|
|
|
public String close() throws YosException {
|
|
|
- boolean isclose= content.getBoolean("isclose");
|
|
|
- long sa_orderid=content.getLong("sa_orderid");
|
|
|
+ boolean isclose = content.getBoolean("isclose");
|
|
|
+ long sa_orderid = content.getLong("sa_orderid");
|
|
|
JSONArray sa_orderitemsids = content.getJSONArray("sa_orderitemsids");
|
|
|
- String closereason=content.getStringValue("closereason");
|
|
|
+ String closereason = content.getStringValue("closereason");
|
|
|
ArrayList<String> sqlList = new ArrayList<>();
|
|
|
Rows rows = getOrderRows(this, sa_orderid);
|
|
|
if (rows.isEmpty()) {
|
|
|
@@ -1430,47 +1591,48 @@ public class OrderItems extends Controller {
|
|
|
QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "*").setTableAlias("t1");
|
|
|
querySQL.addJoinTable(JOINTYPE.inner, "sa_order", "t2", "t1.siteid = t2.siteid and t1.sa_orderid = t2.sa_orderid");
|
|
|
querySQL.setSiteid(siteid);
|
|
|
- querySQL.setWhere("t1.sa_orderitemsid",sa_orderitemsids);
|
|
|
- querySQL.setWhere("t2.sa_orderid",sa_orderid);
|
|
|
+ querySQL.setWhere("t1.sa_orderitemsid", sa_orderitemsids);
|
|
|
+ querySQL.setWhere("t2.sa_orderid", sa_orderid);
|
|
|
Rows rowsdetails = querySQL.query();
|
|
|
- closevalidate(isclose,row,rowsdetails);
|
|
|
+ closevalidate(isclose, row, rowsdetails);
|
|
|
|
|
|
/******** 行关闭状态更新 ********/
|
|
|
Date date = getDate();
|
|
|
- BigDecimal returnamount =BigDecimal.ZERO;// 退还金额
|
|
|
- for(Row rowsdetail :rowsdetails){
|
|
|
+ BigDecimal returnamount = BigDecimal.ZERO;// 退还金额
|
|
|
+ for (Row rowsdetail : rowsdetails) {
|
|
|
BigDecimal amount = rowsdetail.getBigDecimal("amount");// 订单金额
|
|
|
BigDecimal price = rowsdetail.getBigDecimal("price");// 单价
|
|
|
BigDecimal qty = rowsdetail.getBigDecimal("qty");// 订单数量
|
|
|
- BigDecimal undeliqty = rowsdetail.getBigDecimal("undeliqty");;// 订单未发货数量
|
|
|
+ BigDecimal undeliqty = rowsdetail.getBigDecimal("undeliqty");
|
|
|
+ ;// 订单未发货数量
|
|
|
BigDecimal sendqty = qty.subtract(undeliqty);
|
|
|
- BigDecimal sendamount =price.multiply(sendqty).setScale(2, RoundingMode.HALF_UP);
|
|
|
+ BigDecimal sendamount = price.multiply(sendqty).setScale(2, RoundingMode.HALF_UP);
|
|
|
returnamount = returnamount.add(amount.subtract(sendamount));
|
|
|
|
|
|
- sqlList.add("update sa_orderitems set isclose="+isclose+",closereason='"+closereason+"',closeby='"+username+"',closedate=CURRENT_TIME where sa_orderitemsid="+rowsdetail.getLong("sa_orderitemsid"));
|
|
|
+ sqlList.add("update sa_orderitems set isclose=" + isclose + ",closereason='" + closereason + "',closeby='" + username + "',closedate=CURRENT_TIME where sa_orderitemsid=" + rowsdetail.getLong("sa_orderitemsid"));
|
|
|
}
|
|
|
|
|
|
- Rows freezRows = dbConnect.runSqlQuery("select * from sa_accountbalance_freez where sourcetable='sa_order' and sourceid="+sa_orderid);
|
|
|
- Row freezRow= null;
|
|
|
+ Rows freezRows = dbConnect.runSqlQuery("select * from sa_accountbalance_freez where sourcetable='sa_order' and sourceid=" + sa_orderid);
|
|
|
+ Row freezRow = null;
|
|
|
if (!freezRows.isEmpty()) {
|
|
|
freezRow = freezRows.get(0);
|
|
|
}
|
|
|
if (isclose) {
|
|
|
if (freezRow != null) {
|
|
|
BigDecimal amount = freezRow.getBigDecimal("amount");// 冻结金额
|
|
|
- sqlList.add("update sa_accountbalance_freez set amount="+amount.subtract(returnamount)+" where sa_accountbalance_freezid="+freezRow.getLong("sa_accountbalance_freezid"));
|
|
|
- sqlList.add("update sa_accountbalance set freezamount=freezamount-"+returnamount+" where sa_accountbalanceid="+freezRow.getLong("sa_accountbalanceid"));
|
|
|
+ sqlList.add("update sa_accountbalance_freez set amount=" + amount.subtract(returnamount) + " where sa_accountbalance_freezid=" + freezRow.getLong("sa_accountbalance_freezid"));
|
|
|
+ sqlList.add("update sa_accountbalance set freezamount=freezamount-" + returnamount + " where sa_accountbalanceid=" + freezRow.getLong("sa_accountbalanceid"));
|
|
|
|
|
|
- if (amount.subtract(returnamount).compareTo(BigDecimal.ZERO)<=0) {
|
|
|
- sqlList.add("delete from sa_accountbalance_freez where sa_accountbalance_freezid="+freezRow.getLong("sa_accountbalance_freezid"));
|
|
|
+ if (amount.subtract(returnamount).compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
+ sqlList.add("delete from sa_accountbalance_freez where sa_accountbalance_freezid=" + freezRow.getLong("sa_accountbalance_freezid"));
|
|
|
}
|
|
|
}
|
|
|
- sqlList.add(DataContrlLog.createLog(this, "sa_order", sa_orderid, "关闭", "行"+rowsdetails.toJsonArray("rowno")+"关闭成功")
|
|
|
+ sqlList.add(DataContrlLog.createLog(this, "sa_order", sa_orderid, "关闭", "行" + rowsdetails.toJsonArray("rowno") + "关闭成功")
|
|
|
.getSQL());
|
|
|
} else {
|
|
|
if (freezRow == null) {
|
|
|
- Rows accountbalanceRows = dbConnect.runSqlQuery("select * from sa_accountbalance where sys_enterpriseid="+row.getLong("sys_enterpriseid")+" and sa_accountclassid="+row.getLong("sa_accountclassid"));
|
|
|
- if(accountbalanceRows.isNotEmpty()){
|
|
|
+ Rows accountbalanceRows = dbConnect.runSqlQuery("select * from sa_accountbalance where sys_enterpriseid=" + row.getLong("sys_enterpriseid") + " and sa_accountclassid=" + row.getLong("sa_accountclassid"));
|
|
|
+ if (accountbalanceRows.isNotEmpty()) {
|
|
|
InsertSQL frezzInsertSQL = SQLFactory.createInsertSQL(this, "sa_accountbalance_freez");
|
|
|
frezzInsertSQL.setUniqueid(createTableID("sa_accountbalance_freez"));
|
|
|
frezzInsertSQL.setSiteid(siteid);
|
|
|
@@ -1482,23 +1644,23 @@ public class OrderItems extends Controller {
|
|
|
frezzInsertSQL.setValue("createby", username);
|
|
|
frezzInsertSQL.setDateValue("createdate");
|
|
|
sqlList.add(frezzInsertSQL.getSQL());
|
|
|
- sqlList.add("update sa_accountbalance set freezamount=freezamount+"+returnamount+" where sa_accountbalanceid="+accountbalanceRows.get(0).getLong("sa_accountbalanceid"));
|
|
|
- }else{
|
|
|
+ sqlList.add("update sa_accountbalance set freezamount=freezamount+" + returnamount + " where sa_accountbalanceid=" + accountbalanceRows.get(0).getLong("sa_accountbalanceid"));
|
|
|
+ } else {
|
|
|
return getErrReturnObject().setErrMsg("账户不存在").toString();
|
|
|
}
|
|
|
} else {
|
|
|
BigDecimal amount = freezRow.getBigDecimal("amount");// 冻结金额
|
|
|
- sqlList.add("update sa_accountbalance_freez set amount="+amount.add(returnamount)+" where sa_accountbalance_freezid="+freezRow.getLong("sa_accountbalance_freezid"));
|
|
|
- sqlList.add("update sa_accountbalance set freezamount=freezamount+"+returnamount+" where sa_accountbalanceid="+freezRow.getLong("sa_accountbalanceid"));
|
|
|
+ sqlList.add("update sa_accountbalance_freez set amount=" + amount.add(returnamount) + " where sa_accountbalance_freezid=" + freezRow.getLong("sa_accountbalance_freezid"));
|
|
|
+ sqlList.add("update sa_accountbalance set freezamount=freezamount+" + returnamount + " where sa_accountbalanceid=" + freezRow.getLong("sa_accountbalanceid"));
|
|
|
}
|
|
|
- sqlList.add(DataContrlLog.createLog(this, "sa_order", sa_orderid, "反关闭", "行"+rowsdetails.toJsonArray("rowno")+"反关闭成功")
|
|
|
+ sqlList.add(DataContrlLog.createLog(this, "sa_order", sa_orderid, "反关闭", "行" + rowsdetails.toJsonArray("rowno") + "反关闭成功")
|
|
|
.getSQL());
|
|
|
}
|
|
|
/******** 增加总仓可销售量 ********/
|
|
|
if (isclose) {
|
|
|
- sqlList.addAll(updateIcinvbal_sale(rowsdetails,true, true));
|
|
|
+ sqlList.addAll(updateIcinvbal_sale(rowsdetails, true, true));
|
|
|
} else {
|
|
|
- sqlList.addAll(updateIcinvbal_sale(rowsdetails,false, true));
|
|
|
+ sqlList.addAll(updateIcinvbal_sale(rowsdetails, false, true));
|
|
|
}
|
|
|
dbConnect.runSqlUpdate(sqlList);
|
|
|
if (isclose) {
|
|
|
@@ -1511,17 +1673,16 @@ public class OrderItems extends Controller {
|
|
|
"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);
|
|
|
+ } else {
|
|
|
+ dbConnect.runSqlUpdate("update sa_order set status='审核',closeby='',closedate=null where sa_orderid=" + sa_orderid);
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
return getSucReturnObject().toString();
|
|
|
}
|
|
|
|
|
|
|
|
|
- public void closevalidate(boolean isclose,Row order,Rows orderdetails) throws YosException {
|
|
|
+ public void closevalidate(boolean isclose, Row order, Rows orderdetails) throws YosException {
|
|
|
if (isclose && !order.getString("status").equals("审核")) {
|
|
|
throw new YosException("非审核状态下不可关闭");
|
|
|
}
|
|
|
@@ -1536,18 +1697,18 @@ public class OrderItems extends Controller {
|
|
|
QuerySQL querySQL = SQLFactory.createQuerySQL(this, "st_stockbill_items", "*").setTableAlias("t1");
|
|
|
querySQL.addJoinTable(JOINTYPE.inner, "st_stockbill", "t2", "t1.siteid = t2.siteid and t1.st_stockbillid = t2.st_stockbillid");
|
|
|
querySQL.setSiteid(siteid);
|
|
|
- querySQL.setWhere("t1.sa_orderitemsid",orderdetails.toArrayList("sa_orderitemsid"));
|
|
|
+ querySQL.setWhere("t1.sa_orderitemsid", orderdetails.toArrayList("sa_orderitemsid"));
|
|
|
querySQL.setWhere("t2.status='新建'");
|
|
|
Rows rows = querySQL.query();
|
|
|
RowsMap rowsMap = rows.toRowsMap("sa_orderitemsid");
|
|
|
- for(Row row :orderdetails){
|
|
|
+ for (Row row : orderdetails) {
|
|
|
int rownum = row.getInteger("rowno");
|
|
|
if (isclose) {
|
|
|
if (row.getBoolean("isclose")) {
|
|
|
throw new YosException("行" + rownum
|
|
|
+ "已经关闭,不可重复关闭");
|
|
|
}
|
|
|
- if (row.getBigDecimal("undeliqty").compareTo(BigDecimal.ZERO)==0) {
|
|
|
+ if (row.getBigDecimal("undeliqty").compareTo(BigDecimal.ZERO) == 0) {
|
|
|
throw new YosException("行" + rownum
|
|
|
+ "已发货完毕,不可关闭");
|
|
|
}
|