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

出入库单模块(审核反审核返利更新)及k3对接基本完成

hu 2 лет назад
Родитель
Сommit
b6aadd0113

+ 12 - 1
src/custom/restcontroller/R.java

@@ -5153,7 +5153,18 @@ public class R {
         public static class v1 {
         }
     }
-
+    public static class ID20230720143503 {
+        public static class v1 {
+        }
+    }
+    public static class ID20230720143603 {
+        public static class v1 {
+        }
+    }
+    public static class ID20230720152503 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 2 - 1
src/custom/restcontroller/webmanage/lsak3/stockbill/SQL/销售出库单明细新增.sql

@@ -1,4 +1,4 @@
-insert into st_stockbill_items (siteid, st_stockbill_itemsid,st_stockbillid, sa_dispatch_itemsid, rowno, itemid, qty,remarks)
+insert into st_stockbill_items (siteid, st_stockbill_itemsid,st_stockbillid, sa_dispatch_itemsid, rowno, itemid, qty,amount,remarks)
 select $siteid$,
        $st_stockbill_itemsid$,
        $st_stockbillid$,
@@ -6,4 +6,5 @@ select $siteid$,
        $rowno$,
        $itemid$,
        $qty$,
+       $amount$,
        $remarks$

+ 88 - 17
src/custom/restcontroller/webmanage/lsak3/stockbill/stockbill.java

@@ -1,16 +1,21 @@
 package restcontroller.webmanage.lsak3.stockbill;
 
+import beans.accountbalance.Accountbalance;
+import beans.accountbalance.CashbillEntity;
+import beans.parameter.Parameter;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import common.Controller;
 import common.YosException;
 import common.annotation.API;
+import common.data.Row;
 import common.data.Rows;
 import common.data.RowsMap;
 import common.data.SQLFactory;
 import restcontroller.R;
 
 import javax.swing.text.StyledEditorKit;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -72,6 +77,8 @@ public class stockbill extends Controller {
             // 是否删除
             String isdelete = content.getString("isdelete");
 
+            siteid="lsa";
+
 
             Rows stockbillRows = dbConnect.runSqlQuery("select * from st_stockbill where siteid='lsa' and status='审核' and billno='"+fbillnum+"'");
             if(stockbillRows.isEmpty()  && "0".equals(isdelete) && "审核".equals(fstatus)){
@@ -99,12 +106,15 @@ public class stockbill extends Controller {
                 JSONArray detailarray = content.getJSONArray("icstockbilldetails");
                 Rows rows = dbConnect.runSqlQuery("select * from plm_item  where siteid='lsa' ");
                 RowsMap itemRowsMap =rows.toRowsMap("itemno");
+                Rows distiptchRows = dbConnect.runSqlQuery("select t2.price,t1.sa_dispatch_itemsid from sa_dispatch_items t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid inner join sa_dispatch t3 on t1.sa_dispatchid=t3.sa_dispatchid and t1.siteid=t3.siteid  where t3.status in('审核','复核','关闭') and  t1.siteid='lsa' ");
+                RowsMap distiptchRowsMap =distiptchRows.toRowsMap("sa_dispatch_itemsid");
+                BigDecimal amountTotal=BigDecimal.ZERO;
                 for (Object object:detailarray) {
                     JSONObject jsonObject = (JSONObject)object;
                     String frownum = jsonObject.getString("frownum");
                     String fitemno = jsonObject.getString("fitemno");
-                    double fqty = Double.parseDouble(jsonObject.getString("fqty"));
-                    fqty=fqty<0?-fqty:fqty;
+                    BigDecimal fqty = new BigDecimal(jsonObject.getString("fqty"));
+                    fqty=fqty.compareTo(BigDecimal.ZERO)<0?fqty.negate():fqty;
                     //String fdetailstockno = jsonObject.getString("fstockno");
                     long sainvoicedetailid = jsonObject.getLong("sainvoicedetailid");
                     //String fbatchno = jsonObject.getString("fbatchno");
@@ -123,26 +133,68 @@ public class stockbill extends Controller {
                     }
                     sqlFactorydetail.addParameter("remarks", fdetailnotes);
                     sqlFactorydetail.addParameter("qty", fqty);
+
+                    if(distiptchRowsMap.containsKey(String.valueOf(sainvoicedetailid)) && distiptchRowsMap.get(sainvoicedetailid).isNotEmpty()){
+                        sqlFactorydetail.addParameter("price", distiptchRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price"));
+                        sqlFactorydetail.addParameter("amount", fqty.multiply(distiptchRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price")));
+                        amountTotal=amountTotal.add(fqty.multiply(distiptchRowsMap.get(sainvoicedetailid).get(0).getBigDecimal("price")));
+                        System.out.println(amountTotal);
+                    }else{
+                        sqlFactorydetail.addParameter("price", 0);
+                        sqlFactorydetail.addParameter("amount", 0);
+                    }
+
                     sqlList.add(sqlFactorydetail.getSQL());
                 }
                //销售出库单审核逻辑待添加
 
-                SQLFactory sqlFactoryupdate = new SQLFactory(new stockbill(new JSONObject()), "出入库单审核");
-                sqlFactoryupdate.addParameter("siteid", "lsa");
-                sqlFactoryupdate.addParameter("st_stockbillid", st_stockbillid);
-                sqlFactoryupdate.addParameter("checkby", checkby);
-                sqlList.add(sqlFactoryupdate.getSQL());
+                BigDecimal billamount =BigDecimal.ZERO;
+
+
+                //返利比例
+                String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
+                String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
+                BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
+                //经销商返利
+                BigDecimal rebateamount = icstockbillrebaterate.multiply(amountTotal);
+                 System.out.println(rebateamount);
+                CashbillEntity entity = new CashbillEntity();
+                entity.setAmount(rebateamount);
+                entity.setOwnerid(st_stockbillid);
+                entity.setOwnertable("st_stockbill");
+                entity.setSource("");
+                entity.setRemarks("销售出库单" + fbillnum + "返利");
+                sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
+
+                sqlList.add("update st_stockbill set status='审核',checkby='"+checkby+"',checkdate=CURRENT_TIMESTAMP where st_stockbillid = "+st_stockbillid+" and siteid='lsa'");
             }else if (!stockbillRows.isEmpty() && "0".equals(isdelete) && "审核".equals(fstatus)) {
                 /**
                  * DRP存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需将当前销售出库单先反审核,修改内容后再进行审核
                  */
                 //销售出库单反审核逻辑待添加
-                SQLFactory sqlFactoryupdate = new SQLFactory(new stockbill(new JSONObject()), "出入库单反审核");
-                sqlFactoryupdate.addParameter("siteid", "lsa");
-                sqlFactoryupdate.addParameter("st_stockbillid", stockbillRows.get(0).getLong("st_stockbillid"));
-                sqlFactoryupdate.addParameter("checkby", "");
-                sqlList.add(sqlFactoryupdate.getSQL());
+                BigDecimal billamount =BigDecimal.ZERO;
+                Rows stockbilldetails = dbConnect.runSqlQuery("select * from st_stockbill_items where st_stockbillid ='"
+                        + stockbillRows.get(0).getLong("st_stockbillid") + "' and  siteid='" + siteid + "'");
+                for (Row row :stockbilldetails) {
+                    billamount=billamount.add(row.getBigDecimal("amount").abs().negate());
+                }
+
+                //返利比例
+                String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
+                String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
+                BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
+                //经销商返利
+                BigDecimal rebateamount = icstockbillrebaterate.multiply(billamount);
 
+                CashbillEntity entity = new CashbillEntity();
+                entity.setAmount(rebateamount);
+                entity.setOwnerid(stockbillRows.get(0).getLong("st_stockbillid"));
+                entity.setOwnertable("st_stockbill");
+                entity.setSource("");
+                entity.setRemarks("销售出库单" + fbillnum + "反返利");
+                sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
+
+                sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = "+stockbillRows.get(0).getLong("st_stockbillid")+" and siteid='lsa'");
                 msg = "DRP单据状态为审核,现已反审核,下次同步时进行审核操作";
                 code = 0;
             }else if (!stockbillRows.isEmpty() && ("1".equals(isdelete) || "新建".equals(fstatus))) {
@@ -150,11 +202,30 @@ public class stockbill extends Controller {
                  * DRP存在收入凭证,且中间表状态为新建或在删除状态时,DRP中需将当前收入销售出库单先反审核
                  */
                 //销售出库单反审核逻辑待添加
-                SQLFactory sqlFactoryupdate = new SQLFactory(new stockbill(new JSONObject()), "出入库单反审核");
-                sqlFactoryupdate.addParameter("siteid", "lsa");
-                sqlFactoryupdate.addParameter("st_stockbillid", stockbillRows.get(0).getLong("st_stockbillid"));
-                sqlFactoryupdate.addParameter("checkby", "");
-                sqlList.add(sqlFactoryupdate.getSQL());
+                BigDecimal billamount =BigDecimal.ZERO;
+                Rows stockbilldetails = dbConnect.runSqlQuery("select * from st_stockbill_items where st_stockbillid ='"
+                        + stockbillRows.get(0).getLong("st_stockbillid") + "' and  siteid='" + siteid + "'");
+                for (Row row :stockbilldetails) {
+                    billamount=billamount.add(row.getBigDecimal("amount").abs().negate());
+                }
+
+                //返利比例
+                String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
+                String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
+                BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
+                //经销商返利
+                BigDecimal rebateamount = icstockbillrebaterate.multiply(billamount);
+
+                CashbillEntity entity = new CashbillEntity();
+                entity.setAmount(rebateamount);
+                entity.setOwnerid(stockbillRows.get(0).getLong("st_stockbillid"));
+                entity.setOwnertable("st_stockbill");
+                entity.setSource("");
+                entity.setRemarks("销售出库单" + fbillnum + "反返利");
+                sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
+
+
+                sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = "+stockbillRows.get(0).getLong("st_stockbillid")+" and siteid='lsa'");
 
             }
         } catch (Exception e) {

+ 1 - 1
src/custom/restcontroller/webmanage/sale/dispatch/SQL/发货单关闭.sql

@@ -1 +1 @@
-update sa_dispatch set status='手工关闭',closeby=$closeby$,closedate=CURRENT_TIMESTAMP where sa_dispatchid = $sa_dispatchid$ and siteid=$siteid$
+update sa_dispatch set status='手工关闭',closeby=$closeby$,closedate=CURRENT_TIMESTAMP,updatek3flag='' where sa_dispatchid = $sa_dispatchid$ and siteid=$siteid$

+ 1 - 1
src/custom/restcontroller/webmanage/sale/dispatch/SQL/发货单反复核.sql

@@ -1 +1 @@
-update sa_dispatch set status='审核',recheckby='',recheckdate=null,updatek3flag=2 where sa_dispatchid = $sa_dispatchid$ and siteid=$siteid$
+update sa_dispatch set status='新建',recheckby='',recheckdate=null,updatek3flag=2 where sa_dispatchid = $sa_dispatchid$ and siteid=$siteid$

+ 113 - 26
src/custom/restcontroller/webmanage/sale/dispatch/dispatch.java

@@ -12,7 +12,6 @@ import common.YosException;
 import common.annotation.API;
 import common.annotation.CACHEING;
 import common.annotation.CACHEING_CLEAN;
-
 import common.data.*;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
@@ -22,6 +21,7 @@ import restcontroller.webmanage.executorService.Executor;
 import restcontroller.webmanage.sale.order.Order;
 import restcontroller.webmanage.sale.order.OrderItems;
 import utility.ERPDocking;
+import utility.tools.WebRequest;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -453,6 +453,9 @@ public class dispatch extends Controller {
         Long sa_orderid = 0L;
         Rows rows = dbConnect.runSqlQuery("select sa_dispatchid,status,billno,sa_orderid from sa_dispatch where sa_dispatchid ='"
                 + sa_dispatchid + "' and  siteid='" + siteid + "'");
+
+        Rows rowsdetail = dbConnect.runSqlQuery("select sa_dispatch_itemsid from sa_dispatch_items where sa_dispatchid ='"
+                + sa_dispatchid + "' and  siteid='" + siteid + "'");
         if (rows.isEmpty()) {
             return getErrReturnObject().setErrMsg("该发货单不存在")
                     .toString();
@@ -463,24 +466,43 @@ public class dispatch extends Controller {
                         .toString();
             }
         }
-        //对接erp生成erp发货单
-        if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-            ERPDocking erpDocking = new ERPDocking();
-            String result = erpDocking.closeErpSainvoice(rows.get(0).getString("billno"), true, this, sa_dispatchid);
-            if (!result.equals("true")) {
-                return getErrReturnObject().setErrMsg(result).toString();
-            } else {
-                JSONArray jsonArray = erpDocking.queryErpSainvoice(rows.get(0).getString("billno"));
-                ArrayList<String> dispatchsqlList = new ArrayList<>();
-                if (!jsonArray.isEmpty()) {
-                    for (Object object1 : jsonArray) {
-                        JSONObject jsonObject = (JSONObject) object1;
-                        dispatchsqlList.add("update sa_dispatch_items set outwarehouseqty=" + jsonObject.getBigDecimalValue("fqty1") + " where rowno =" + jsonObject.getIntValue("frownum") + " and sa_dispatchid='" + sa_dispatchid + "' and siteid='" + siteid + "'");
-                    }
-                }
-                dbConnect.runSqlUpdate(dispatchsqlList);
-            }
+
+        JSONObject object = new JSONObject();
+        object.put("classname", "getIcinvbal");
+        object.put("method", "getIcstockbillMsg");
+
+        JSONObject content = new JSONObject();
+        content.put("sa_dispatch_itemsids", rowsdetail.toJsonArray("sa_dispatch_itemsid"));
+        object.put("content", content);
+
+        WebRequest request = new WebRequest();
+        String result = request.doPost(object.toString(),
+                "http://60.190.151.198:8089/BYESB/jaxrs/webclientrest");
+        JSONArray jsonArray = JSONArray.parseArray(result);
+        if(!jsonArray.isEmpty()){
+            return getErrReturnObject().setErrMsg("中间表存在未同步的销售出库单,无法手工关闭")
+                    .toString();
         }
+
+
+        //对接erp生成erp发货单
+//        if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
+//            ERPDocking erpDocking = new ERPDocking();
+//            String result = erpDocking.closeErpSainvoice(rows.get(0).getString("billno"), true, this, sa_dispatchid);
+//            if (!result.equals("true")) {
+//                return getErrReturnObject().setErrMsg(result).toString();
+//            } else {
+//                JSONArray jsonArray = erpDocking.queryErpSainvoice(rows.get(0).getString("billno"));
+//                ArrayList<String> dispatchsqlList = new ArrayList<>();
+//                if (!jsonArray.isEmpty()) {
+//                    for (Object object1 : jsonArray) {
+//                        JSONObject jsonObject = (JSONObject) object1;
+//                        dispatchsqlList.add("update sa_dispatch_items set outwarehouseqty=" + jsonObject.getBigDecimalValue("fqty1") + " where rowno =" + jsonObject.getIntValue("frownum") + " and sa_dispatchid='" + sa_dispatchid + "' and siteid='" + siteid + "'");
+//                    }
+//                }
+//                dbConnect.runSqlUpdate(dispatchsqlList);
+//            }
+//        }
         ArrayList<String> sqlList = new ArrayList<>();
 
         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 sa_dispatch_items where sa_dispatchid=" + sa_dispatchid + ")");
@@ -669,14 +691,15 @@ public class dispatch extends Controller {
             sqlList.add("update sa_dispatch set sa_orderid=" + orderRows.get(0).getLong("sa_orderid") + " where siteid='" + siteid + "' and sa_dispatchid=" + sa_dispatchid);
         }
         //对接erp生成erp发货单
-        if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-            ERPDocking erpDocking = new ERPDocking();
-            String result = erpDocking.createErpSainvoice(rows.get(0), rowsdetail, this, sa_dispatchid);
-            if (!result.equals("true")) {
-                System.out.println(result);
-                return getErrReturnObject().setErrMsg(result).toString();
-            }
-        }
+//        if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
+//            ERPDocking erpDocking = new ERPDocking();
+//            String result = erpDocking.createErpSainvoice(rows.get(0), rowsdetail, this, sa_dispatchid);
+//            if (!result.equals("true")) {
+//                System.out.println(result);
+//                return getErrReturnObject().setErrMsg(result).toString();
+//            }
+//        }
+
 //            //判断当前订单是否已发完货,如果发完,则生把订单变为关闭状态
 //            //总数量
 //            Rows totalRows = dbConnect.runSqlQuery("select count(1) count,sa_orderid from sa_orderitems where siteid='" + siteid + "' group by sa_orderid");
@@ -707,6 +730,70 @@ public class dispatch extends Controller {
         return getSucReturnObject().toString();
     }
 
+    @API(title = "反复核", apiversion = R.ID20230720152503.v1.class)
+    @CACHEING_CLEAN(apiClass = {Order.class, OrderItems.class, restcontroller.sale.order.Order.class, dispatch.class, dispatchItems.class, cashbill.class})
+    public String unrecheck() throws YosException {
+        Long sa_dispatchid = content.getLong("sa_dispatchid");
+        Rows dispatchRows = dbConnect.runSqlQuery("select sa_dispatchid,status,billno,sa_orderid,sys_enterpriseid from sa_dispatch where sa_dispatchid ='"
+                + sa_dispatchid + "' and  siteid='" + siteid + "'");
+        if (dispatchRows.isEmpty()) {
+            return getErrReturnObject().setErrMsg("该发货单不存在")
+                    .toString();
+        } else {
+            if (!dispatchRows.get(0).getString("status").equals("复核")) {
+                return getErrReturnObject().setErrMsg("单号为:【" + dispatchRows.get(0).getString("billno") + "】的发货单为非复核状态,无法反复核")
+                        .toString();
+            }
+        }
+
+        JSONObject object = new JSONObject();
+        object.put("classname", "getIcinvbal");
+        object.put("method", "getSainvoiceMsg");
+
+        JSONObject content = new JSONObject();
+        content.put("billno", dispatchRows.get(0).getString("billno"));
+        object.put("content", content);
+
+        WebRequest request = new WebRequest();
+        String result = request.doPost(object.toString(),
+                "http://60.190.151.198:8089/BYESB/jaxrs/webclientrest");
+        if(result.equals("true")){
+            return getErrReturnObject().setErrMsg("K3发货单为非删除状态,无法反复核")
+                    .toString();
+        }
+
+
+
+        ArrayList<String> sqlList = new ArrayList<>();
+        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 sa_dispatch_items where sa_dispatchid=" + sa_dispatchid + ")");
+        RowsMap rowsMap = rowsOrderDetail.toRowsMap("sa_orderitemsid");
+        Rows rowsDispatchDetail = dbConnect.runSqlQuery("select t1.qty,t1.outwarehouseqty,t1.sa_orderitemsid,t1.rowno,t2.itemname from sa_dispatch_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_dispatchid=" + sa_dispatchid);
+        if (!rowsDispatchDetail.isEmpty()) {
+            for (Row row : rowsDispatchDetail) {
+                sqlList.add("update sa_orderitems set undeliqty=" + rowsMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("undeliqty").add(row.getBigDecimal("qty").subtract(row.getBigDecimal("outwarehouseqty"))) + ",deliedqty=" + rowsMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("deliedqty").subtract(row.getBigDecimal("qty").subtract(row.getBigDecimal("outwarehouseqty"))) + " where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
+            }
+        } else {
+            return getErrReturnObject().setErrMsg("该发货单明细不存在,无法复核").toString();
+        }
+
+        SQLFactory sqlFactoryupdate = new SQLFactory(this, "发货单复核");
+        Rows orderRows = dbConnect.runSqlQuery("select distinct t1.sa_orderid from sa_orderitems t1 inner join sa_dispatch_items t2 on t1.siteid=t2.siteid and t1.sa_orderitemsid=t2.sa_orderitemsid where t1.siteid='" + siteid + "' and t2.sa_dispatchid=" + sa_dispatchid);
+
+        sqlList.add(DataContrlLog.createLog(this, "sa_dispatch", sa_dispatchid, "反复核", "发货单反复核成功").getSQL());
+
+        sqlFactoryupdate.addParameter("siteid", siteid);
+        sqlFactoryupdate.addParameter("sa_dispatchid", sa_dispatchid);
+        sqlFactoryupdate.addParameter("recheckby", username);
+        sqlList.add(sqlFactoryupdate.getSQL());
+        dbConnect.runSqlUpdate(sqlList);
+
+        Long sys_enterpriseid = dispatchRows.get(0).getLong("sys_enterpriseid");
+        String message = "您的发货单" + dispatchRows.get(0).getString("billno") + "已复核,请及时查看!";
+        sendMsg(message, sa_dispatchid, sys_enterpriseid);
+
+        return getSucReturnObject().toString();
+    }
+
 
     @API(title = "一键生成发货单", apiversion = R.ID20230220100604.v1.class)
     @CACHEING_CLEAN(apiversions = {R.ID20221114135303.v1.class, R.ID20221114135403.v1.class, R.ID20230320160203.v1.class})

+ 76 - 1
src/custom/restcontroller/webmanage/sale/stockbill/stockbill.java

@@ -1,7 +1,10 @@
 package restcontroller.webmanage.sale.stockbill;
 
+import beans.accountbalance.Accountbalance;
+import beans.accountbalance.CashbillEntity;
 import beans.data.BatchDeleteErr;
 import beans.datacontrllog.DataContrlLog;
+import beans.parameter.Parameter;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import common.Controller;
@@ -13,6 +16,7 @@ import common.data.*;
 import restcontroller.R;
 
 import javax.swing.text.StyledEditorKit;
+import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
@@ -140,7 +144,7 @@ public class stockbill extends Controller {
     public String check() throws YosException {
 
         Long st_stockbillid = content.getLong("st_stockbillid");
-        Rows rows = dbConnect.runSqlQuery("select st_stockbillid,status,billno from st_stockbill where st_stockbillid ='"
+        Rows rows = dbConnect.runSqlQuery("select st_stockbillid,status,billno,sys_enterpriseid from st_stockbill where st_stockbillid ='"
                 + st_stockbillid + "' and  siteid='" + siteid + "'");
         if (rows.isEmpty()) {
             return getErrReturnObject().setErrMsg("该出入库单不存在")
@@ -153,6 +157,31 @@ public class stockbill extends Controller {
         }
         ArrayList<String> sqlList = new ArrayList<>();
 
+        long sys_enterpriseid=rows.get(0).getLong("sys_enterpriseid");
+
+        BigDecimal billamount =BigDecimal.ZERO;
+        Rows stockbilldetails = dbConnect.runSqlQuery("select * from st_stockbill_items where st_stockbillid ='"
+                + st_stockbillid + "' and  siteid='" + siteid + "'");
+        for (Row row :stockbilldetails) {
+            billamount=billamount.add(row.getBigDecimal("amount").abs());
+        }
+
+        //返利比例
+        String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
+        long res = Long.valueOf(icstockbillrebateaccount).longValue();
+        String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
+        BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
+        //经销商返利
+        BigDecimal rebateamount = icstockbillrebaterate.multiply(billamount);
+
+        CashbillEntity entity = new CashbillEntity();
+        entity.setAmount(rebateamount);
+        entity.setOwnerid(st_stockbillid);
+        entity.setOwnertable("st_stockbill");
+        entity.setSource("");
+        entity.setRemarks("销售出库单" + rows.get(0).getString("billno") + "返利");
+        sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
+
         SQLFactory sqlFactoryupdate = new SQLFactory(this, "出入库单审核");
         sqlFactoryupdate.addParameter("siteid", siteid);
         sqlFactoryupdate.addParameter("st_stockbillid", st_stockbillid);
@@ -184,6 +213,33 @@ public class stockbill extends Controller {
 
         ArrayList<String> sqlList = new ArrayList<>();
 
+        long sys_enterpriseid=rows.get(0).getLong("sys_enterpriseid");
+
+        BigDecimal billamount =BigDecimal.ZERO;
+        Rows stockbilldetails = dbConnect.runSqlQuery("select * from st_stockbill_items where st_stockbillid ='"
+                + st_stockbillid + "' and  siteid='" + siteid + "'");
+        for (Row row :stockbilldetails) {
+            billamount=billamount.add(row.getBigDecimal("amount").abs().negate());
+        }
+
+        //返利比例
+        String icstockbillrebateaccount = Parameter.get(siteid,"icstockbillrebateaccount"); //经销商销售出库单返利账户
+        long res = Long.valueOf(icstockbillrebateaccount).longValue();
+        String icstockbillrebaterate1 = Parameter.get(siteid,"icstockbillrebaterate"); //销售出库单返利比例
+        BigDecimal icstockbillrebaterate =new BigDecimal(icstockbillrebaterate1);
+        //经销商返利
+        BigDecimal rebateamount = icstockbillrebaterate.multiply(billamount);
+
+        CashbillEntity entity = new CashbillEntity();
+        entity.setAmount(rebateamount);
+        entity.setOwnerid(st_stockbillid);
+        entity.setOwnertable("st_stockbill");
+        entity.setSource("");
+        entity.setRemarks("销售出库单" + rows.get(0).getString("billno") + "返利");
+        if (! Accountbalance.judgeBalance(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),rebateamount)) {
+            return getErrReturnObject().setErrMsg("账户余额不足,还差" + Accountbalance.InsufficientBalance(this, sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(), rebateamount) + "元!").toString();
+        }
+        sqlList.addAll(Accountbalance.createCashbillIncome(this,sys_enterpriseid,Long.valueOf(icstockbillrebateaccount).longValue(),entity,true));
 
         SQLFactory sqlFactoryupdate = new SQLFactory(this, "出入库单反审核");
         sqlFactoryupdate.addParameter("siteid", siteid);
@@ -224,6 +280,25 @@ public class stockbill extends Controller {
         return getSucReturnObject().setData(rows).toString();
     }
 
+    @API(title = "更新站点信息详情详情", apiversion = R.ID20230720143503.v1.class)
+    public String updateParameterSiteInfo() throws YosException {
+        BigDecimal icstockbillrebaterate = content.getBigDecimal("icstockbillrebaterate");
+        Long icstockbillrebateaccount = content.getLong("icstockbillrebateaccount");
+        dbConnect.runSqlUpdate("update sys_site_parameter set icstockbillrebaterate='"+icstockbillrebaterate+"',icstockbillrebateaccount='"+icstockbillrebateaccount+"' where siteid='"+siteid+"'");
+
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "站点信息详情", apiversion = R.ID20230720143603.v1.class)
+    public String queryParameterSiteInfo() throws YosException {
+
+        Rows rows = dbConnect.runSqlQuery("select icstockbillrebateaccount,icstockbillrebaterate from sys_site_parameter where siteid='"+siteid+"'");
+        Row row = rows.isNotEmpty() ? rows.get(0) : new Row();
+
+        return getSucReturnObject().setData(row).toString();
+    }
+
+