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

销售出库单k3同步(待测试)

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

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

@@ -5000,6 +5000,10 @@ public class R {
         public static class v1 {
         }
     }
+    public static class ID20230717144803 {
+        public static class v1 {
+        }
+    }
 
 }
 

+ 2 - 2
src/custom/restcontroller/webmanage/lsak3/aftersalesmag/aftersalesmag.java

@@ -27,10 +27,10 @@ public class aftersalesmag extends Controller {
      */
     @API(title = "获取DRP返退单", apiversion = R.ID20230715093903.v1.class)
     public String getAftersalesmag() throws YosException{
-        Rows rows = dbConnect.runSqlQuery("select t2.k3outcode,t1.* from sa_aftersalesmag t1 inner join sa_agents t2 on t1.sys_enterpriseid=t2.sys_enterpriseid and t1.siteid=t2.siteid where (t1.fupdatek3flag='0' or t1.fupdatek3flag='2') and t1.createby !='LSA总0001' and t1.siteid='lsa'");
+        Rows rows = dbConnect.runSqlQuery("select t2.k3outcode fk3outcode,t1.updatek3flag fupdatek3flag,t1.sa_aftersalesmagid salereturnbillid,t1.billno fbillnum,t1.createby,t1.billdate fdate,t2.agentnum fagentnum,t1.reason fnotes from sa_aftersalesmag t1 inner join sa_agents t2 on t1.sys_enterpriseid=t2.sys_enterpriseid and t1.siteid=t2.siteid where (t1.fupdatek3flag='0' or t1.fupdatek3flag='2') and t1.createby !='LSA总0001' and t1.siteid='lsa'");
         for (Row row : rows) {
             String sa_aftersalesmagid = row.getString("sa_aftersalesmagid");
-            Rows detailRows = dbConnect.runSqlQuery("select t2.k3outcode,t1.* from sa_aftersalesmag_items t1 inner join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid where t1.sa_aftersalesmagid='" + sa_aftersalesmagid + "' and t1.siteid='lsa'");
+            Rows detailRows = dbConnect.runSqlQuery("select t2.k3outcode fk3outcode,t1.st_stockbill_itemsid salereturnbilldeid,t2.itemno fitemno,t1.qty fqty,t1.price fprice,t1.reason fnotes,t4.billno fsaleissuebillno, t3.rowno fsaleissuebillentryid from sa_aftersalesmag_items t1 inner join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid left join st_stockbill_items t3 on t1.st_stockbill_itemsid=t3.st_stockbill_itemsid and t1.siteid=t3.siteid left join st_stockbill t4 on t3.st_stockbillid=t4.st_stockbillid and t3.siteid=t4.siteid where t1.sa_aftersalesmagid='" + sa_aftersalesmagid + "' and t1.siteid='lsa'");
             row.put("salereturnbilldetil", detailRows.toJsonArray());
         }
         if(rows.isEmpty()) {

+ 1 - 1
src/custom/restcontroller/webmanage/lsak3/cashbill/cashbill.java

@@ -328,7 +328,7 @@ public class cashbill extends Controller {
     @API(title = "k3获取收入凭证", apiversion = R.ID20230714164903.v1.class)
     public String getcashbill() throws YosException{
 
-        Rows rows = dbConnect.runSqlQuery("select t2.k3outcode fk3outcode ,t1.* from sa_cashbill t1 inner join sa_agents t2 on t1.sys_enterpriseid=t2.sys_enterpriseid and t2.siteid=t2.siteid left join sa_accountclass t3 on t1.sa_accountclassid=t3.sa_accountclassid and t1.siteid=t3.siteid where t3.accountno!='03' and (updatek3flag='0' or updatek3flag='2') and t1.type=1 and ISNULL(t1.amount,0)!=0  and t1.status='审核' and isnull(t1.description,'')!='K3' and t1.createby !='LSA总0001'");
+        Rows rows = dbConnect.runSqlQuery("select t2.k3outcode fk3outcode,t1.billno fbillnum,t1.sa_cashbillid ficashbillid,t1.createby,t1.billdate fdate,t3.accountno faccclsnum,t2.agentnum fagentnum,t1.amount famount,t1.remarks fnotes,t1.updatek3flag fupdatek3flag from sa_cashbill t1 inner join sa_agents t2 on t1.sys_enterpriseid=t2.sys_enterpriseid and t2.siteid=t2.siteid left join sa_accountclass t3 on t1.sa_accountclassid=t3.sa_accountclassid and t1.siteid=t3.siteid where t3.accountno!='03' and (updatek3flag='0' or updatek3flag='2') and t1.type=1 and ISNULL(t1.amount,0)!=0  and t1.status='审核' and isnull(t1.description,'')!='K3' and t1.createby !='LSA总0001'");
         if (rows.isEmpty()) {
             JSONArray array = new JSONArray();
             return array.toString();

+ 2 - 2
src/custom/restcontroller/webmanage/lsak3/dispatch/dispatch.java

@@ -27,10 +27,10 @@ public class dispatch extends Controller {
      */
     @API(title = "获取DRP发货单", apiversion = R.ID20230715091603.v1.class)
     public String getDispatch() throws YosException{
-        Rows rows = dbConnect.runSqlQuery("select t3.sonum fsonum,t2.k3outcode,t1.* from sa_dispatch t1 inner join sa_agents t2 on t1.sys_enterpriseid=t2.sys_enterpriseid and t1.siteid=t2.siteid left join sa_order t3 on  t3.sa_orderid=t1.sa_orderid and t3.siteid=t1.siteid  where (t1.updatek3flag='0' or t1.updatek3flag='2') and t1.createby !='LSA总0001'  and t1.siteid='lsa'");
+        Rows rows = dbConnect.runSqlQuery("select t3.sonum fsonum,t2.k3outcode fk3outcode,t1.updatek3flag fupdatek3flag,t1.billno finvonum,t1.sa_dispatchid sainvoiceid,t1.createby,t1.trantype ftrantype,t1.billdate fdate,t2.agentnum fagentnum,t1.remarks fnotes from sa_dispatch t1 inner join sa_agents t2 on t1.sys_enterpriseid=t2.sys_enterpriseid and t1.siteid=t2.siteid left join sa_order t3 on  t3.sa_orderid=t1.sa_orderid and t3.siteid=t1.siteid  where (t1.updatek3flag='0' or t1.updatek3flag='2') and t1.createby !='LSA总0001'  and t1.siteid='lsa'");
         for (Row row : rows) {
             String sa_dispatchid = row.getString("sa_dispatchid");
-            Rows detailRows = dbConnect.runSqlQuery("select t3.flong,t3.customproperties,t2.k3outcode,t1.* from sa_dispatch_items t1 inner join plm_titem t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid inner join sa_orderitems t3 on t1.sa_orderitemsid=t3.sa_orderitemsid and t1.siteid=t3.siteid where t1.sa_dispatchid='" + sa_dispatchid + "'  and t1.siteid='lsa'");
+            Rows detailRows = dbConnect.runSqlQuery("select t1.sa_dispatch_itemsid sainvoicedetailid,t2.itemno fitemno,t2.k3outcode fk3outcode,t3.qty fqty,t3.price fprice,t1.remarks fnotes,t3.customproperties,t2.spec flong from sa_dispatch_items t1 inner join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid inner join sa_orderitems t3 on t1.sa_orderitemsid=t3.sa_orderitemsid and t1.siteid=t3.siteid where t1.sa_dispatchid='" + sa_dispatchid + "'  and t1.siteid='lsa'");
             row.put("sainvoicedetail", detailRows.toJsonArray());
         }
         if(rows.isEmpty()) {

+ 2 - 2
src/custom/restcontroller/webmanage/lsak3/order/order.java

@@ -29,10 +29,10 @@ public class order extends Controller {
     @API(title = "k3获取销售订单", apiversion = R.ID20230715090203.v1.class)
     public String getSaorder() throws  YosException{
 
-        Rows rows = dbConnect.runSqlQuery("select t2.k3outcode fk3outcode,t1.* from sa_order t1 inner join sa_agents t2 on t1.sys_enterpriseid=t2.sys_enterpriseid and t1.siteid=t2.siteid where (t1.updatek3flag='0' or t1.updatek3flag='2') and t1.createby !='LSA总0001' and t1.siteid='lsa'");
+        Rows rows = dbConnect.runSqlQuery("select t2.k3outcode fk3outcode,t1.updatek3flag fupdatek3flag,t1.sonum fsonum,t1.sa_orderid saorderid,t1.createby,t1.billdate fdate,t2.agentnum fagentnum,t1.remarks fnotes from sa_order t1 inner join sa_agents t2 on t1.sys_enterpriseid=t2.sys_enterpriseid and t1.siteid=t2.siteid  where (t1.updatek3flag='0' or t1.updatek3flag='2') and t1.createby !='LSA总0001' and t1.siteid='lsa'");
         for (Row row : rows) {
             String sa_orderid = row.getString("sa_orderid");
-            Rows detailRows = dbConnect.runSqlQuery("select t2.k3outcode fk3outcode,t1.*,convert(varchar(50),t1.fprice*t1.fqty) as ftaxamount from sa_orderitems t1 inner join plm_item t2 on t1.itemid=t2.itemid where sa_orderid='" + sa_orderid + "'  and t1.siteid='lsa'");
+            Rows detailRows = dbConnect.runSqlQuery("select t2.k3outcode fk3outcode,t1.sa_orderitemsid saorderdetailid,convert(t1.defaultamount,char) as ftaxamount,t2.itemno fitemno,t1.qty fqty,t1.price frateprice,t1.defaultprice fprice,t1.amount famount,t1.remarks fnotes,t1.customproperties,t2.spec flong from sa_orderitems t1 inner join plm_item t2 on t1.itemid=t2.itemid where sa_orderid='" + sa_orderid + "'  and t1.siteid='lsa'");
             row.put("saorderdetail", detailRows.toJsonArray());
         }
         if(rows.isEmpty()) {

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

@@ -0,0 +1,2 @@
+insert into st_stockbill (siteid, st_stockbillid,createby, createdate, billno,billdate,changeby, changedate,checkby,checkdate,sys_enterpriseid, rb,type,remarks)
+values ($siteid$, $st_stockbillid$,$createby$, $createdate$, $billno$,$billdate$, $changeby$, $changedate$,$checkby$,$checkdate$,$sys_enterpriseid$,$rb$,$type$,$remarks$);

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

@@ -0,0 +1,8 @@
+insert into st_stockbill_items (siteid, st_stockbillid, sa_dispatch_itemsid, rowno, itemid, qty,remarks)
+select $siteid$,
+       $st_stockbillid$,
+       $sa_dispatch_itemsid$,
+       $rowno$,
+       $itemid$,
+       $qty$,
+       $remarks$

+ 173 - 0
src/custom/restcontroller/webmanage/lsak3/stockbill/stockbill.java

@@ -0,0 +1,173 @@
+package restcontroller.webmanage.lsak3.stockbill;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.annotation.API;
+import common.data.Rows;
+import common.data.RowsMap;
+import common.data.SQLFactory;
+import restcontroller.R;
+
+import javax.swing.text.StyledEditorKit;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+
+public class stockbill extends Controller {
+    /**
+     * 构造函数
+     *
+     * @param content
+     */
+    public stockbill(JSONObject content) throws YosException {
+        super(content);
+    }
+    ArrayList<String> sqlList =new ArrayList<>();
+    /**
+     * 更新YOS销售出库单
+     * @return
+     * @throws YosException
+     */
+    @API(title = "更新YOS销售出库单", apiversion = R.ID20230717144803.v1.class)
+    public String updateIcstockbill() throws YosException{
+        String msg = "";
+        int code = 1;
+
+        // 单据编号
+        String fbillnum = content.getString("fbillnum");
+        try {
+            // 经销商编号
+            String fagentnum = content.getString("fagentnum");
+            long sys_enterpriseid=0;
+            if(dbConnect.runSqlQuery("select sys_enterpriseid from sa_agents where siteid='lsa' and  agentnum='"+fagentnum+"'").isNotEmpty()){
+                sys_enterpriseid=dbConnect.runSqlQuery("select sys_enterpriseid from sa_agents where siteid='lsa' and  agentnum='"+fagentnum+"'").get(0).getLong("sys_enterpriseid");
+            }else{
+                msg ="yos中不存在【"+fagentnum+"】经销商";
+                return  getErrReturnObject().setErrMsg(msg).toString();
+            }
+            // 单据日期
+            String fdate = content.getString("fdate");
+            // 会计期间
+          //  String fperiod = content.getString("fperiod");
+            // 红蓝字
+            String frb = content.getString("frb");
+            // 表头仓库
+           // String fstockno = content.getString("fstockno");
+            // 单据类型明细
+            //String ftypemx = content.getString("ftypemx");
+            // 单据状态
+            String fstatus = content.getString("fstatus");
+            // 制单人
+            String createby = content.getString("createby");
+            // 制单日期
+            String createdate = content.getString("createdate");
+            // 审核人
+            String checkby = content.getString("checkby");
+            // 审核日期
+            String checkdate = content.getString("checkdate");
+            // 备注
+            String fnotes = content.getString("fnotes");
+            // 是否删除
+            String isdelete = content.getString("isdelete");
+
+
+            Rows stockbillRows = dbConnect.runSqlQuery("select * from st_stockbill where siteid='lsa' and status='审核' and billno='"+fbillnum+"'");
+            if(stockbillRows.isEmpty()  && "0".equals(isdelete) && "审核".equals(fstatus)){
+                /**
+                 * DRP不存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需新增该销售出库单
+                 */
+                SQLFactory sqlFactory =new SQLFactory("销售出库单新增");
+                long st_stockbillid=createTableID("st_stockbill");
+                sqlFactory.addParameter("siteid","lsa");
+                sqlFactory.addParameter("st_stockbillid",st_stockbillid);
+                sqlFactory.addParameter("sys_enterpriseid",sys_enterpriseid);
+                sqlFactory.addParameter("billno",fbillnum);
+                sqlFactory.addParameter("type","销售出库");
+                sqlFactory.addParameter("rb",frb.equals("蓝")?1:0);
+                sqlFactory.addParameter("billdate",fdate);
+                sqlFactory.addParameter("createby",createby);
+                sqlFactory.addParameter("createdate",getDate(createdate));
+                sqlFactory.addParameter("changeby",createby);
+                sqlFactory.addParameter("changedate",getDate(createdate));
+                sqlFactory.addParameter("checkby",checkby);
+                sqlFactory.addParameter("checkdate",getDate(checkdate));
+                sqlFactory.addParameter("remarks",fnotes);
+                sqlList.add(sqlFactory.getSQL());
+
+                JSONArray detailarray = content.getJSONArray("icstockbilldetails");
+                Rows rows = dbConnect.runSqlQuery("select * from plm_item  where siteid='lsa' ");
+                RowsMap itemRowsMap =rows.toRowsMap("itemno");
+                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;
+                    //String fdetailstockno = jsonObject.getString("fstockno");
+                    long sainvoicedetailid = jsonObject.getLong("sainvoicedetailid");
+                    //String fbatchno = jsonObject.getString("fbatchno");
+                    String fdetailnotes = jsonObject.getString("fnotes");
+                    SQLFactory sqlFactorydetail =new SQLFactory("销售出库单明细新增");
+                    sqlFactorydetail.addParameter("siteid","lsa");
+                    sqlFactorydetail.addParameter("st_stockbill_itemsid", createTableID("st_stockbill_items"));
+                    sqlFactorydetail.addParameter("st_stockbillid", st_stockbillid);
+                    sqlFactorydetail.addParameter("rowno", frownum);
+                    sqlFactorydetail.addParameter("sa_dispatch_itemsid", sainvoicedetailid);
+                    sqlFactorydetail.addParameter("remarks", fnotes);
+                    if(itemRowsMap.containsKey(fitemno) && itemRowsMap.get(fitemno).isNotEmpty()){
+                        sqlFactorydetail.addParameter("itemid",  itemRowsMap.get(fitemno).get(0).getLong("itemid"));
+                    }else{
+                        sqlFactorydetail.addParameter("itemid", 0);
+                    }
+                    sqlFactorydetail.addParameter("remarks", fdetailnotes);
+                    sqlFactorydetail.addParameter("qty", fqty);
+                    sqlList.add(sqlFactorydetail.getSQL());
+                }
+               //销售出库单审核逻辑待添加
+
+            }else if (!stockbillRows.isEmpty() && "0".equals(isdelete) && "审核".equals(fstatus)) {
+                /**
+                 * DRP存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需将当前销售出库单先反审核,修改内容后再进行审核
+                 */
+                //销售出库单反审核逻辑待添加
+
+                msg = "DRP单据状态为审核,现已反审核,下次同步时进行审核操作";
+                code = 0;
+            }else if (!stockbillRows.isEmpty() && ("1".equals(isdelete) || "新建".equals(fstatus))) {
+                /**
+                 * DRP存在收入凭证,且中间表状态为新建或在删除状态时,DRP中需将当前收入销售出库单先反审核
+                 */
+                //销售出库单反审核逻辑待添加
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+            msg = e.getMessage();
+            if(msg==null) {
+                msg = "";
+            }
+            code = 0;
+        }
+        /**
+         * 如单据为新建状态,则,先把单据强行删除掉
+         */
+        dbConnect.runSqlUpdate(sqlList);
+        dbConnect.runSqlUpdate("delete from st_stockbill where status='新建'");
+        JSONObject returnObject =new JSONObject();
+        returnObject.put("msg", msg);
+        returnObject.put("code", code);
+        return returnObject.toString();
+    }
+
+    public Date getDate(String date) {
+        try {
+            Date a = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(date);
+            return a;
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+}