Преглед на файлове

退货单关闭及反复核功能更新

hu преди 2 години
родител
ревизия
d420bd11ca
променени са 2 файла, в които са добавени 84 реда и са изтрити 53 реда
  1. 4 0
      src/custom/restcontroller/R.java
  2. 80 53
      src/custom/restcontroller/webmanage/sale/aftersalesmag/aftersalesmag.java

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

@@ -4772,6 +4772,10 @@ public class R {
         public static class v1 {
         }
     }
+    public static class ID20230523085403 {
+        public static class v1 {
+        }
+    }
 
 }
 

+ 80 - 53
src/custom/restcontroller/webmanage/sale/aftersalesmag/aftersalesmag.java

@@ -307,7 +307,7 @@ public class aftersalesmag extends Controller {
 
     @API(title = "审核核反审核", apiversion = R.ID20230104161103.v1.class)
     @CACHEING_CLEAN(apiversions = {R.ID20230104160603.v1.class, R.ID20230104160703.v1.class, R.ID20230105110903.class, R.ID20230105161503.v1.class},apiClass = {aftersalesmag.class,aftersalesmagItems.class})
-    public String recheck() throws YosException {
+    public String check() throws YosException {
         Long sa_aftersalesmagid = content.getLong("sa_aftersalesmagid");
         boolean ischeck = content.getBooleanValue("ischeck");
 //        Rows rows = dbConnect
@@ -381,7 +381,7 @@ public class aftersalesmag extends Controller {
 
     @API(title = "复核", apiversion = R.ID20230104160903.v1.class)
     @CACHEING_CLEAN(apiversions = {R.ID20230104160603.v1.class, R.ID20230104160703.v1.class, R.ID20230105110903.class, R.ID20230105161503.v1.class},apiClass = {aftersalesmag.class,aftersalesmagItems.class, cashbill.class})
-    public String check() throws YosException {
+    public String recheck() throws YosException {
         Long sa_aftersalesmagid = content.getLong("sa_aftersalesmagid");
         Long sa_orderid = 0L;
         Rows rows = dbConnect.runSqlQuery(
@@ -472,9 +472,9 @@ public class aftersalesmag extends Controller {
 
     }
 
-    @API(title = "关闭", apiversion = R.ID20230522090403.v1.class)
+    @API(title = "反复核", apiversion = R.ID20230523085403.v1.class)
     @CACHEING_CLEAN(apiversions = {R.ID20230104160603.v1.class, R.ID20230104160703.v1.class, R.ID20230105110903.class, R.ID20230105161503.v1.class},apiClass = {aftersalesmag.class,aftersalesmagItems.class, cashbill.class})
-    public String close() throws YosException {
+    public String unrecheck() throws YosException {
         Long sa_aftersalesmagid = content.getLong("sa_aftersalesmagid");
         Long sa_orderid = 0L;
         Rows rows = dbConnect.runSqlQuery(
@@ -485,20 +485,20 @@ public class aftersalesmag extends Controller {
         } else {
             sa_orderid = rows.get(0).getLong("sa_orderid");
             if (!rows.get(0).getString("status").equals("复核")) {
-                return getErrReturnObject().setErrMsg("单号为:【" + rows.get(0).getString("billno") + "】的返退单为非复核状态,无法关闭")
+                return getErrReturnObject().setErrMsg("单号为:【" + rows.get(0).getString("billno") + "】的返退单为非复核状态,无法反复核")
                         .toString();
             }
         }
 
         ArrayList<String> sqlList = new ArrayList<>();
-        if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true")) {
-            ERPDocking erpDocking =new ERPDocking();
-            String billno = rows.get(0).getString("billno");
-            String result =erpDocking.recheckErpSareturn(billno,true,this,sa_aftersalesmagid);
-            if(!result.equals("true")){
-                return getErrReturnObject().setErrMsg(result).toString();
-            }
-        }
+//        if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true")) {
+//            ERPDocking erpDocking =new ERPDocking();
+//            String billno = rows.get(0).getString("billno");
+//            String result =erpDocking.recheckErpSareturn(billno,true,this,sa_aftersalesmagid);
+//            if(!result.equals("true")){
+//                return getErrReturnObject().setErrMsg(result).toString();
+//            }
+//        }
 
         if(rows.get(0).getString("type").equals("退货单")) {
             if (rows.get(0).getDouble("returnamount") > 0) {
@@ -509,52 +509,79 @@ public class aftersalesmag extends Controller {
                 cashbillEntity.setOwnerid(sa_aftersalesmagid);
                 cashbillEntity.setOwnertable("sa_aftersalesmag");
                 cashbillEntity.setRemarks("退货单号:" + rows.get(0).getString("billno") + ";订单号:" + rows.get(0).getString("sonum"));
-                cashbillEntity.setSource("退货单关闭");
+                cashbillEntity.setSource("退货单反复核");
                 if(!Accountbalance.judgeBalance(this, rows.get(0).getLong("sys_enterpriseid"), rows.get(0).getLong("sa_accountclassid"),returnamount)){
-                    return getErrReturnObject().setErrMsg("该经销商账户余额不足,无法关闭")
+                    return getErrReturnObject().setErrMsg("经销商账户余额不足无法反复核")
                             .toString();
                 }
-                Rows sa_aftersalesmag_itemsRows = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t2.itemno,t2.itemname,t2.skucontrol from sa_aftersalesmag_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_aftersalesmagid=" + sa_aftersalesmagid);
-                for (Row row : sa_aftersalesmag_itemsRows) {
-                    BigDecimal returnqty = row.getBigDecimal("qty");
-                    if(rows.get(0).getString("type").equals("退货单")){
-                        sqlList.add("update sa_orderitems set returnqty=returnqty-" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
-                    }
-                }
+//                Rows sa_aftersalesmag_itemsRows = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t2.itemno,t2.itemname,t2.skucontrol from sa_aftersalesmag_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_aftersalesmagid=" + sa_aftersalesmagid);
+//                for (Row row : sa_aftersalesmag_itemsRows) {
+//                    BigDecimal returnqty = row.getBigDecimal("qty");
+//                    if(rows.get(0).getString("type").equals("退货单")){
+//                        sqlList.add("update sa_orderitems set returnqty=returnqty-" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
+//                    }
+//                }
                 sqlList.addAll(Accountbalance.createCashbillPay(this, rows.get(0).getLong("sys_enterpriseid"), rows.get(0).getLong("sa_accountclassid"), cashbillEntity, true));
             }
+        }
 
+        SQLFactory sqlFactoryupdate = new SQLFactory(this, "返退单反复核");
+        sqlFactoryupdate.addParameter("siteid", siteid);
+        sqlFactoryupdate.addParameter("sa_aftersalesmagid", sa_aftersalesmagid);
+        sqlFactoryupdate.addParameter("recheckby", username);
+        sqlList.add(sqlFactoryupdate.getSQL());
+        sqlList.add(DataContrlLog.createLog(this, "sa_aftersalesmag", sa_aftersalesmagid, "反复核", "返退单反复核成功").getSQL());
+        dbConnect.runSqlUpdate(sqlList);
+        String type=rows.get(0).getString("type");
+        Long sys_enterpriseid = rows.get(0).getLong("sys_enterpriseid");
+        if(type.equals("退货单")){
+            String message = "您的退货单"+rows.get(0).getString("billno")+"已反复核,,退款已从账户扣除,请及时查看!";
+            sendMsg(message, sa_aftersalesmagid, sys_enterpriseid);
+        }
 
-//            /**
-//             * * 核销对冲计算
-//             */
-//            {
-//                HashMap<Long, Row> orderdetailmap = new HashMap<>();
-//                HashMap<Long, BigDecimal> orderdetailchangeamount = new HashMap<>();
-//                Rows rowsOrder = dbConnect.runSqlQuery("select * from sa_order t1 where t1.sa_orderid=" + sa_orderid);
-//                Rows rowsOrderDetail = dbConnect.runSqlQuery("select t1.undeliqty,t1.deliedqty,t1.qty,t1.price,t1.returnqty,t1.amount,t1.sa_orderitemsid,t1.writeoffamount from sa_orderitems t1 where t1.sa_orderid=" + sa_orderid);
-//                RowsMap rowsMap = rowsOrderDetail.toRowsMap("sa_orderitemsid");
-//                Rows sa_aftersalesmag_itemsRows = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t2.itemno,t2.itemname from sa_aftersalesmag_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_aftersalesmagid=" + sa_aftersalesmagid);
-//                for (Row row : sa_aftersalesmag_itemsRows) {
-//                    Rows orderitemsRows = rowsMap.get(row.getString("sa_orderitemsid"));
-//                    BigDecimal price = orderitemsRows.get(0).getBigDecimal("price");
-//                    BigDecimal qty = row.getBigDecimal("qty");
-//                    BigDecimal returnamount_detail = qty.multiply(price);//退货金额
-//                    BigDecimal writeoffamount = orderitemsRows.get(0).getBigDecimal("writeoffamount");//订单行已核销金额
-//                    if (writeoffamount.compareTo(BigDecimal.ZERO) > 0 && (orderitemsRows.get(0).getBigDecimal("amount").subtract(returnamount_detail)).compareTo(writeoffamount) < 0) {
-//                        //如果已核销金额大于0 且调整后折后金额小于已核销金额,则需要将差价进行回冲
-//                        orderdetailmap.put(orderitemsRows.get(0).getLong("sa_orderitemsid"), orderitemsRows.get(0));
-//                        orderdetailchangeamount.put(orderitemsRows.get(0).getLong("sa_orderitemsid"), writeoffamount.subtract(orderitemsRows.get(0).getBigDecimal("amount").subtract(returnamount_detail)));
-//                    }
-//                }
-//
-//                /**
-//                 * * 核销对冲
-//                 */
-//                if (!orderdetailmap.isEmpty()) {
-//                    sqlList.addAll(new twriteoffbill_orderchange(rowsOrder.get(0), orderdetailmap, orderdetailchangeamount).hedging());
-//                }
-//            }
+
+        return getSucReturnObject().toString();
+
+    }
+
+
+    @API(title = "关闭", apiversion = R.ID20230522090403.v1.class)
+    @CACHEING_CLEAN(apiversions = {R.ID20230104160603.v1.class, R.ID20230104160703.v1.class, R.ID20230105110903.class, R.ID20230105161503.v1.class},apiClass = {aftersalesmag.class,aftersalesmagItems.class, cashbill.class})
+    public String close() throws YosException {
+        Long sa_aftersalesmagid = content.getLong("sa_aftersalesmagid");
+        Long sa_orderid = 0L;
+        Rows rows = dbConnect.runSqlQuery(
+                "select t1.sa_aftersalesmagid,t1.status,t1.billno,ifnull(t1.sa_orderid,0) sa_orderid ,t1.returnamount,t1.payamount,t1.sys_enterpriseid,t1.sa_accountclassid,t2.sonum,t1.type from sa_aftersalesmag t1 left join sa_order t2 on t1.sa_orderid=t2.sa_orderid and t1.siteid=t2.siteid  where t1.sa_aftersalesmagid ='"
+                        + sa_aftersalesmagid + "' and  t1.siteid='" + siteid + "'");
+        if (rows.isEmpty()) {
+            return getErrReturnObject().setErrMsg("该返退单不存在").toString();
+        } else {
+            sa_orderid = rows.get(0).getLong("sa_orderid");
+            if (!rows.get(0).getString("status").equals("审核")) {
+                return getErrReturnObject().setErrMsg("单号为:【" + rows.get(0).getString("billno") + "】的返退单为非审核状态,无法关闭")
+                        .toString();
+            }
+        }
+
+        ArrayList<String> sqlList = new ArrayList<>();
+        if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true")) {
+            ERPDocking erpDocking =new ERPDocking();
+            String billno = rows.get(0).getString("billno");
+            String result =erpDocking.recheckErpSareturn(billno,true,this,sa_aftersalesmagid);
+            if(!result.equals("true")){
+                return getErrReturnObject().setErrMsg(result).toString();
+            }
+        }
+
+
+        if(rows.get(0).getString("type").equals("退货单")) {
+            Rows sa_aftersalesmag_itemsRows = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t2.itemno,t2.itemname,t2.skucontrol from sa_aftersalesmag_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_aftersalesmagid=" + sa_aftersalesmagid);
+            for (Row row : sa_aftersalesmag_itemsRows) {
+                BigDecimal returnqty = row.getBigDecimal("qty");
+                if(rows.get(0).getString("type").equals("退货单")){
+                    sqlList.add("update sa_orderitems set returnqty=returnqty-" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
+                }
+            }
         }
 
         SQLFactory sqlFactoryupdate = new SQLFactory(this, "返退单关闭");
@@ -567,7 +594,7 @@ public class aftersalesmag extends Controller {
         String type=rows.get(0).getString("type");
         Long sys_enterpriseid = rows.get(0).getLong("sys_enterpriseid");
         if(type.equals("退货单")){
-            String message = "您的退货单"+rows.get(0).getString("billno")+"已关闭,退款已从您的账户扣除,请及时查收!";
+            String message = "您的退货单"+rows.get(0).getString("billno")+"已关闭,请及时查收!";
             sendMsg(message, sa_aftersalesmagid, sys_enterpriseid);
         }