From f77e4196ad4870b713a0c51d874481a372c9201c Mon Sep 17 00:00:00 2001
From: yangle <admin@YINMOU>
Date: 星期五, 09 十二月 2022 13:36:56 +0800
Subject: [PATCH] Merge branch 'master' of http://101.37.171.70:10101/r/MES-WEB-API

---
 WebAPI/WebAPI.csproj.user                                         |    2 
 WorkM/报表分析/Sc_WorkShopReport.cs                                   |   40 
 Model/销售管理/ClsXs_SeOutStockBillMain.cs                            |   17 
 Model/生产管理/ClsSc_PPBomBillSub.cs                                  |    2 
 Model/采购管理/ClsCg_POOrderBillSub.cs                                |    2 
 WebAPI/Models/基础资料/WorkDay.cs                                     |    4 
 Model/销售管理/ClsXs_SeOutStockBillSub.cs                             |   11 
 WebAPI/Controllers/SCGL/Sc_ICMOReportBillController.cs            |  100 +++
 WebAPI/Models/基础资料/Warehouse.cs                                   |    3 
 WebAPI/Controllers/BaseSet/Gy_CurrencyController.cs               |   45 +
 WebAPI/Controllers/BaseSet/Gy_UnitController.cs                   |    5 
 WebAPI/Controllers/CGGL/Cg_POInStockBillController.cs             |   93 ++
 Pub_Class/CustomerCls/ClsXt_SystemParameter.cs                    |   10 
 WebAPI/Controllers/SCGL/日计划管理/DataHelper.cs                       |   79 ++
 Pub_Class/CustomerCls/ClsSqlHelper.cs                             |   72 +
 Model/采购管理/ClsCg_POInStockBillSub.cs                              |    3 
 WebAPI/Controllers/CGGL/Cg_POOrderBillController.cs               |   81 ++
 Pub_Class/CustomerCls/ClsXt_SystemParameterMain.cs                |    1 
 WebAPI/Controllers/基础资料/基础资料/Gy_CustLocationController.cs         |   50 +
 WebAPI/Controllers/SCGL/Sc_PPBomBillController.cs                 |   75 ++
 WebAPI/Controllers/仓存管理/调拨盘点/Kf_MoveStockRequestBillController.cs |  264 +++++++++
 Model/仓库管理/ClsKf_StockOutRequestBillSub.cs                        |   23 
 WebAPI/Controllers/仓存管理/领料发货/Kf_StockOutRequestBillController.cs  |  322 +++++++++++
 Model/仓库管理/ClsKf_MoveStockRequestBillMain.cs                      |   10 
 Model/仓库管理/ClsKf_StockOutRequestBillMain.cs                       |    7 
 Model/仓库管理/ClsKf_MoveStockRequestBillSub.cs                       |   20 
 WebAPI/Controllers/基础资料/基础资料/Gy_RateTypeController.cs             |   50 +
 WebAPI/Controllers/BaseSet/Gy_WorkDayController.cs                |   16 
 WebAPI/Controllers/Sc_ProcessMangementController.cs               |   17 
 WebAPI/Controllers/XSGL/Xs_SeOutStockBillController.cs            |  223 +++++++
 WebAPI/WebAPI.csproj                                              |    2 
 WebAPI/Controllers/BaseSet/Gy_WarehouseController.cs              |   12 
 32 files changed, 1,546 insertions(+), 115 deletions(-)

diff --git "a/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_MoveStockRequestBillMain.cs" "b/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_MoveStockRequestBillMain.cs"
index d48ace6..1f8a818 100644
--- "a/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_MoveStockRequestBillMain.cs"
+++ "b/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_MoveStockRequestBillMain.cs"
@@ -20,5 +20,15 @@
         public Int64 HDeptID;       //     	int     		--部门              
         public string HExplanation; //    	varchar(200)    --摘要 
         public string HInnerBillNo; //   	varchar(50)    	--内部单据号
+
+        public Int64 HERPInterID;
+        public string HERPBillType;
+        public Int64 HSTOCKINORGID;
+        public Int64 HSTOCKOUTORGID;
+        public string HStockStyle;
+        public string HOWNERTYPEHEADID;
+        public string HTRANSTYPE;
+        public string HOWNERTYPEINID;
+        public string HBUSINESSTYPE;
     }
 }
diff --git "a/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_MoveStockRequestBillSub.cs" "b/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_MoveStockRequestBillSub.cs"
index 8d836e6..5195f2b 100644
--- "a/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_MoveStockRequestBillSub.cs"
+++ "b/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_MoveStockRequestBillSub.cs"
@@ -33,5 +33,25 @@
         public Int64 HICMOInterID;      //      int         --生产订单ID
         public Int64 HICMOEntryID;      //      int         --生产订单子内码
         public string HICMOBillNo;      //      varchar(100)--生产订单号
+
+        public string HMTONo;
+        public Int64 HPlanMode;
+        public Int64 HERPInterID;
+        public Int64 HERPEntryID;
+        public Int64 HAuxPropID;
+        public string HBatchNO;
+        public Int64 HSPID;
+        public Int64 HSCSPID;
+        public Int64 HSTOCKORGID;
+        public Int64 HOWNERID;
+        public string HOWNERTYPEID;
+        public Int64 HSTOCKORGINID;
+        public Int64 HOWNERINID;
+        public string HOWNERTYPEINID;
+        public string HPRODUCEDATE;
+        public string HExpiryDate;
+        public Int64 HBASEUNITID;
+        public Int64 HEXTAUXUNITID;
+        public double HSECQTY;
     }
 }
diff --git "a/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_StockOutRequestBillMain.cs" "b/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_StockOutRequestBillMain.cs"
index 53828ab..196e63e 100644
--- "a/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_StockOutRequestBillMain.cs"
+++ "b/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_StockOutRequestBillMain.cs"
@@ -19,5 +19,12 @@
         public Int64 HDeptID;       //     	int     		--部门              
         public string HExplanation; //    	varchar(200)    --摘要 
         public string HInnerBillNo; //   	varchar(50)    	--内部单据号
+
+        public Int64 HERPInterID;//--ERP主内码
+        public string HERPBillType;//--ERP单据类型
+        public Int64 HSTOCKORGID;//--申请组织
+        public string HAPPLYTYPE;
+        public Int64 HOWNERTYPEIDHEAD;//--货主类型
+        public string HBIZTYPE;//--业务类型
     }
 }
diff --git "a/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_StockOutRequestBillSub.cs" "b/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_StockOutRequestBillSub.cs"
index 5effe7b..99e9051 100644
--- "a/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_StockOutRequestBillSub.cs"
+++ "b/Model/\344\273\223\345\272\223\347\256\241\347\220\206/ClsKf_StockOutRequestBillSub.cs"
@@ -30,5 +30,28 @@
         public Int64 HICMOInterID;      //      int         --生产订单ID
         public Int64 HICMOEntryID;      //      int         --生产订单子内码
         public string HICMOBillNo;      //      varchar(100)--生产订单号
+
+        public string HMTONo;
+        public Int64 HPlanMode;
+        public Int64 HERPInterID;
+        public Int64 HERPEntryID;
+        public Int64 HAuxPropID;
+        public string HBatchNO;
+        public Int64 HSPID;
+        public Int64 HSCSPID;
+        public Int64 HSTOCKORGID;
+        public Int64 HOWNERID;
+        public string HOWNERTYPEID;
+        public Int64 HSTOCKORGINID;
+        public Int64 HOWNERINID;
+        public string HOWNERTYPEINID;
+        public string HPRODUCEDATE;
+        public string HEXPIRYDATE;
+        public Int64 HBASEUNITID;
+        public Int64 HEXTAUXUNITID;
+        public double HSECQTY;
+        public Int64 HSEQ;
+        public Int64 HSTOCKSTATUSID;
+        public Int64 HBOMID;
     }
 }
diff --git "a/Model/\347\224\237\344\272\247\347\256\241\347\220\206/ClsSc_PPBomBillSub.cs" "b/Model/\347\224\237\344\272\247\347\256\241\347\220\206/ClsSc_PPBomBillSub.cs"
index 34ee220..5a06100 100644
--- "a/Model/\347\224\237\344\272\247\347\256\241\347\220\206/ClsSc_PPBomBillSub.cs"
+++ "b/Model/\347\224\237\344\272\247\347\256\241\347\220\206/ClsSc_PPBomBillSub.cs"
@@ -18,7 +18,7 @@
         public string HRemark;            //澶囨敞
 
 
-        public Int64 HQtyMust; //搴斿彂鏁伴噺
+        public decimal HQtyMust; //搴斿彂鏁伴噺
         public double HNumerator;  //鍒嗗瓙
         public double HDenominator;  //鍒嗘瘝
         public double HQtyScrap;  //鎹熻�楃巼
diff --git "a/Model/\351\207\207\350\264\255\347\256\241\347\220\206/ClsCg_POInStockBillSub.cs" "b/Model/\351\207\207\350\264\255\347\256\241\347\220\206/ClsCg_POInStockBillSub.cs"
index f16bd74..065c6e4 100644
--- "a/Model/\351\207\207\350\264\255\347\256\241\347\220\206/ClsCg_POInStockBillSub.cs"
+++ "b/Model/\351\207\207\350\264\255\347\256\241\347\220\206/ClsCg_POInStockBillSub.cs"
@@ -18,6 +18,9 @@
         public double HMoney;//   dec(18,8)         --原币金额
         public double HTaxPrice;//   dec(18,8)         --含税单价
         public double HTaxMoney;//   dec(18,8)         --含税金额
+        public double HTaxRate;//   dec(18,8)         --含税金额
+        public double HTaxMoney_TAX;//   dec(18,8)         --含税金额
+        public double HTaxRate_TAX;//   dec(18,8)         --含税金额
         public Int64 HWHID;//              --收料仓库
         public Int64 HPOOrderInterID;//
         public Int64 HPOOrderEntryID;//
diff --git "a/Model/\351\207\207\350\264\255\347\256\241\347\220\206/ClsCg_POOrderBillSub.cs" "b/Model/\351\207\207\350\264\255\347\256\241\347\220\206/ClsCg_POOrderBillSub.cs"
index ceee7ab..2be65a6 100644
--- "a/Model/\351\207\207\350\264\255\347\256\241\347\220\206/ClsCg_POOrderBillSub.cs"
+++ "b/Model/\351\207\207\350\264\255\347\256\241\347\220\206/ClsCg_POOrderBillSub.cs"
@@ -14,6 +14,8 @@
         public double HPrice;//   dec(18,8)         //原币单价
         public double HMoney;//   dec(18,8)         //原币金额
         public Single HTaxRate;//   money              //税率
+        public Single HTaxRate_TAX;//   money              //税率
+        public Single HTaxMoney_TAX;//   money              //税率
         public double HTaxPrice;                    //含税单价
         public double HTaxMoney;//  dec(18,8)                //税额=原币金额*税率
         public double HlineTotal;//   dec(18,8)              //价税合计=原币金额+税额 
diff --git "a/Model/\351\224\200\345\224\256\347\256\241\347\220\206/ClsXs_SeOutStockBillMain.cs" "b/Model/\351\224\200\345\224\256\347\256\241\347\220\206/ClsXs_SeOutStockBillMain.cs"
index 6e0f860..28018b5 100644
--- "a/Model/\351\224\200\345\224\256\347\256\241\347\220\206/ClsXs_SeOutStockBillMain.cs"
+++ "b/Model/\351\224\200\345\224\256\347\256\241\347\220\206/ClsXs_SeOutStockBillMain.cs"
@@ -11,19 +11,26 @@
         public Int64 HManagerID;//  int     			--主管	(Gy_Employee)
         public string HAddress;//     varchar(200)            	--交货地点 
         public Int64 HSSID;//	 int				--结算方式 (Gy_SettleStyle)
-        public Int64 HCusID;//	
+        public Int64 HCusID;//	客户
         public Int64 HCurID;//    int      			--币别 (Gy_Currency)
         public Single HExRate;//    money      			--汇率  (选择完币别带出)
-        public Int64 HWHID;//   
+        public Int64 HWHID;//  仓库
         public string HExplanation;//  varchar(200)     		--摘要 
         public string HInnerBillNo;//  varchar(50)     		--内部单据号
-        public Int64 HConveyTypeID;//	
-        public Int64 HConveyCompID;//	
-        public double HConveyMoney;//	
+        public Int64 HConveyTypeID;//	运输方式
+        public Int64 HConveyCompID;//	运输公司
+        public double HConveyMoney;//	运费
 
         public bool HDFflag; //是否垫付
         public string HLinkMan;//    varchar(50)      //联系人     new
         public string HLinkPhone;//   varchar(100)     //联系电话   new
 
+        public Int64 HSALEORGID;
+        public Int64 HDELIVERYORGID;
+        public Int64 HOWNERID;
+        public string HOWNERTYPEID;
+        public Int64 HERPInterID;
+        public string HERPBillType;
+
     }
 }
diff --git "a/Model/\351\224\200\345\224\256\347\256\241\347\220\206/ClsXs_SeOutStockBillSub.cs" "b/Model/\351\224\200\345\224\256\347\256\241\347\220\206/ClsXs_SeOutStockBillSub.cs"
index 11e67b9..378a743 100644
--- "a/Model/\351\224\200\345\224\256\347\256\241\347\220\206/ClsXs_SeOutStockBillSub.cs"
+++ "b/Model/\351\224\200\345\224\256\347\256\241\347\220\206/ClsXs_SeOutStockBillSub.cs"
@@ -18,5 +18,16 @@
         public Int64 HSeOrderEntryID;//	int		--销售订单子内码
         public string HSeOrderBillNo;//	varchar(50)	--销售订单号
 
+        public Int64 HSPID;
+        public Int64 HOWNERID;
+        public string HOWNERTYPEID;
+        public Int64 HSETTLEORGID;
+        public double HMoveStockQty;
+        public Int64 HAuxPropID;
+        public string HBatchNO;
+        public string HMTONo;
+        public Int64 HERPInterID;
+        public Int64 HERPEntryID;
+        public string HSeORderBillNo;
     }
 }
diff --git a/Pub_Class/CustomerCls/ClsSqlHelper.cs b/Pub_Class/CustomerCls/ClsSqlHelper.cs
index 2420e00..1e8b508 100644
--- a/Pub_Class/CustomerCls/ClsSqlHelper.cs
+++ b/Pub_Class/CustomerCls/ClsSqlHelper.cs
@@ -7,23 +7,23 @@
 
 namespace Pub_Class
 {
-    public class ClsSqlHelper:IDisposable
+    public class ClsSqlHelper : IDisposable
     {
         private SqlConnection MainCn;//鍒涘缓杩炴帴瀵硅薄
         public string strCon;
         SqlTransaction MainTran;
         public string sServer;
-        public string sDataBase ;
+        public string sDataBase;
         public string sUser;
         public string sPassword;
         //public string sTextBox = "HXErp_Test.ini";
         public string sTextBox = "HXErp.ini";
         //寮�濮嬩簨鍔�
-        public void  BeginTran()
+        public void BeginTran()
         {
             if (!this.CnOpen())
                 return;
-            MainTran=MainCn.BeginTransaction();
+            MainTran = MainCn.BeginTransaction();
         }
         //缁撴潫浜嬪姟
         public void Commit()
@@ -45,7 +45,7 @@
                 ClsPub.AppPath = System.Environment.CurrentDirectory;
                 //ClsPub.AppPath = @"C:\Windows\System32";
             }
-            sServer = ClsIni.ReadIni("Erp", "Server", ClsPub.AppPath + @"\"+sTextBox);
+            sServer = ClsIni.ReadIni("Erp", "Server", ClsPub.AppPath + @"\" + sTextBox);
             sDataBase = ClsIni.ReadIni("Erp", "DataBase", ClsPub.AppPath + @"\" + sTextBox);
             sUser = ClsIni.ReadIni("Erp", "UserName", ClsPub.AppPath + @"\" + sTextBox);
             sPassword = ClsIni.ReadIni("Erp", "PassWord", ClsPub.AppPath + @"\" + sTextBox);
@@ -54,13 +54,13 @@
 
         public bool CheckOpen()
         {
-            if (sServer == "" || sServer == "娌℃湁鎵惧埌锛�" )
+            if (sServer == "" || sServer == "娌℃湁鎵惧埌锛�")
             {
                 throw new Exception("閿欒鐨勬湇鍔″櫒鍚�!!" + System.Environment.CurrentDirectory);
             }
             if (sDataBase == "" || sDataBase == "娌℃湁鎵惧埌锛�")
             {
-                throw new Exception("閿欒鐨勬暟鎹簱鍚�!!"  +System.Environment.CurrentDirectory);
+                throw new Exception("閿欒鐨勬暟鎹簱鍚�!!" + System.Environment.CurrentDirectory);
             }
             SqlConnection oCn = new SqlConnection("Data Source=" + sServer + ";DataBase=master;User ID=" + sUser + ";PWD=" + sPassword + ";max pool size=32767");
             try
@@ -78,7 +78,7 @@
             }
         }
 
-        private bool  CnOpen()//OPEN鏁版嵁搴撹繛鎺�
+        private bool CnOpen()//OPEN鏁版嵁搴撹繛鎺�
         {
             if (sServer == "" || sServer == "娌℃湁鎵惧埌锛�")
             {
@@ -88,7 +88,7 @@
             {
                 throw new Exception("閿欒鐨勬暟鎹簱鍚�!");
             }
-            if (MainCn==null)
+            if (MainCn == null)
             {
                 MainCn = new SqlConnection("Data Source=" + sServer + ";DataBase=" + sDataBase + ";User ID=" + sUser + ";PWD=" + sPassword + ";max pool size=32767");
             }
@@ -117,10 +117,10 @@
 
         public void CnDispose()//閲婃斁璧勬簮
         {
-            if(MainCn!=null)
-            { 
+            if (MainCn != null)
+            {
                 MainCn.Dispose();
-                MainCn=null;
+                MainCn = null;
             }
         }
         /// <summary>
@@ -133,7 +133,7 @@
         /// <returns>鏂扮殑 parameter 瀵硅薄</returns>
         public SqlParameter MakeInParam(string ParamName, SqlDbType DbType, int Size, object Value)
         {
-            return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value); 
+            return MakeParam(ParamName, DbType, Size, ParameterDirection.Input, Value);
         }
         /// <summary>
         /// 鍒濆鍖栧弬鏁板��
@@ -192,13 +192,13 @@
         /// <param name="procName"></param>
         /// <param name="sErrMessage"></param>
         /// <returns></returns>
-        public void RunProc(string procName,ref string sErr)
+        public void RunProc(string procName, ref string sErr)
         {
             if (!this.CnOpen())
             {
                 sErr = "杩炴帴鏁版嵁搴撳け璐ワ紒";
                 return;
-                
+
             }
             try
             {
@@ -211,7 +211,7 @@
             }
             catch (Exception e)
             {
-                sErr =e.Message;
+                sErr = e.Message;
                 ClsPub.sErrInfo = e.Message;
                 throw (e);
                 //return;
@@ -226,7 +226,7 @@
         /// <param name="tbName">琛ㄥ悕</param>
         /// <param name="sErrMessage">寮傚父淇℃伅</param>
         /// <returns></returns>
-        public DataSet RunProcReturn(string procName, SqlParameter[] prams, string tbName )
+        public DataSet RunProcReturn(string procName, SqlParameter[] prams, string tbName)
         {
             SqlDataAdapter dap = CreateDataAdaper(procName, prams);
             if (dap == null)
@@ -252,7 +252,7 @@
         /// <param name="tbName">琛ㄥ悕</param>
         /// <param name="sErrMessage">寮傚父淇℃伅</param>
         /// <returns></returns>
-        public DataSet RunProcReturn(string procName, string tbName )
+        public DataSet RunProcReturn(string procName, string tbName)
         {
             SqlDataAdapter dap = CreateDataAdaper(procName, null);
             DataSet ds = new DataSet();
@@ -276,7 +276,7 @@
         /// <param name="tbName">琛ㄥ悕</param>
         /// <param name="sErrMessage">寮傚父淇℃伅</param>
         /// <returns></returns>
-        public DataSet RunProcReturn(string procName, string tbName,ref string sErr)   
+        public DataSet RunProcReturn(string procName, string tbName, ref string sErr)
         {
             SqlDataAdapter dap = CreateDataAdaper(procName, null);
             DataSet ds = new DataSet();
@@ -366,7 +366,7 @@
 
         }
 
-        public SqlDataReader RunReader(string sSQL,string tbName,ref string sErr)
+        public SqlDataReader RunReader(string sSQL, string tbName, ref string sErr)
         {
             if (!this.CnOpen())
             {
@@ -384,12 +384,42 @@
             catch (Exception e)
             {
                 ClsPub.sErrInfo = e.Message;
-                sErr = e.Message; 
+                sErr = e.Message;
                 return null;
             }
         }
 
 
+        /// <summary>
+        /// 鎵归噺鎻掑叆鏁版嵁搴�
+        /// </summary>
+        /// <param name="TableName">鐩爣琛�</param>
+        /// <param name="dt">婧愭暟鎹�</param>
+        public bool SqlBulkCopyByDatatable(string TableName, DataTable dt)
+        {
+            string connectionString = $"Data Source={sServer};DataBase={sDataBase};User ID={sUser};PWD={sPassword}";
+            using (SqlConnection conn = new SqlConnection(connectionString))
+            {
+                using (SqlBulkCopy sqlbulkcopy = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.UseInternalTransaction))
+                {
+                    try
+                    {
+                        sqlbulkcopy.DestinationTableName = TableName;
+                        for (int i = 0; i < dt.Columns.Count; i++)
+                        {
+                            sqlbulkcopy.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
+                        }
+                        sqlbulkcopy.WriteToServer(dt);
+                        return true;
+                    }
+                    catch (System.Exception ex)
+                    {
+                        //ex.Message;
+                        return false;
+                    }
+                }
+            }
+        }
         #region IDisposable 鎴愬憳
 
         public void Dispose()
diff --git a/Pub_Class/CustomerCls/ClsXt_SystemParameter.cs b/Pub_Class/CustomerCls/ClsXt_SystemParameter.cs
index b56d9e9..20d8bb9 100644
--- a/Pub_Class/CustomerCls/ClsXt_SystemParameter.cs
+++ b/Pub_Class/CustomerCls/ClsXt_SystemParameter.cs
@@ -1176,6 +1176,11 @@
                     {
                         omodel.WMS_MouldManagerCtl = ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HValue"]);
                     }
+                    //是否为私有云模式
+                    if (ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HKey"]) == "WMS_CloudMode")
+                    {
+                        omodel.WMS_CloudMode = ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HValue"]);
+                    }
 
                     //桌面条码模块
                     //有源单生成条码,生成条码数量可否超源单数量控制
@@ -2519,6 +2524,11 @@
                     {
                         omodel.WMS_MouldManagerCtl = ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HValue"]);
                     }
+                    //是否为私有云模式
+                    if (ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HKey"]) == "WMS_CloudMode")
+                    {
+                        omodel.WMS_CloudMode = ClsPub.isStrNull(DsSub.Tables[0].Rows[i]["HValue"]);
+                    }
 
                     //桌面条码模块
                     //有源单生成条码,生成条码数量可否超源单数量控制
diff --git a/Pub_Class/CustomerCls/ClsXt_SystemParameterMain.cs b/Pub_Class/CustomerCls/ClsXt_SystemParameterMain.cs
index fea6760..1bc7ac6 100644
--- a/Pub_Class/CustomerCls/ClsXt_SystemParameterMain.cs
+++ b/Pub_Class/CustomerCls/ClsXt_SystemParameterMain.cs
@@ -316,6 +316,7 @@
         public string WMS_OneScanMode;  //一次扫码模式
         public string WMS_UserByOrgRelation;  //扫码枪用户登入时判断用户对应组织权限控制,Y为控制
         public string WMS_MouldManagerCtl;  //是否启用器具管理(Y,N)
+        public string WMS_CloudMode;        //是否为私有云模式
 
 
         //桌面条码模块
diff --git a/WebAPI/Controllers/BaseSet/Gy_CurrencyController.cs b/WebAPI/Controllers/BaseSet/Gy_CurrencyController.cs
index 997909f..a50383f 100644
--- a/WebAPI/Controllers/BaseSet/Gy_CurrencyController.cs
+++ b/WebAPI/Controllers/BaseSet/Gy_CurrencyController.cs
@@ -394,6 +394,51 @@
             }
         }
 
+        #region 甯佸埆 閲戣澏鍚屾
+        [Route("Gy_Currency/SaveGy_CurrencyListApi")]
+        [HttpPost]
+        public object SaveGy_CurrencyListApi([FromBody] JObject msg)
+        {
+            try
+            {
+                var _value = msg["model"].ToString();
+                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
+                ListModels oListModels = new ListModels();
+                List<Model.ClsGy_Currency_Model> lsmain = new List<Model.ClsGy_Currency_Model>();
+                lsmain = oListModels.getObjectByJson_Gy_Currency(_value);
+                string sql = string.Empty;
+                //淇濆瓨
+                oCN.BeginTran();
+                sql = $"delete Gy_Currency where HItemID = {lsmain[0].HItemID}";
+                oCN.RunProc(sql);
+                sql = "set identity_insert Gy_Currency on";
+                oCN.RunProc(sql);
+
+                oCN.RunProc($@"insert into Gy_Currency(HItemID,HNumber,HName,HShortNumber,HParentID
+                    ,HLevel,HEndFlag,HStopflag,HRemark,HHelpCode,HScale,HExchangeRate)
+                  values({lsmain[0].HItemID},'{lsmain[0].HNumber}','{lsmain[0].HName}','{lsmain[0].HShortNumber}',{lsmain[0].HParentID},{lsmain[0].HLevel}
+           ,{Convert.ToString(lsmain[0].HEndFlag ? 1 : 0)},{Convert.ToString(lsmain[0].HStopflag ? 1 : 0) },'{lsmain[0].HRemark}','{lsmain[0].HHelpCode}','{lsmain[0].HScale}','{lsmain[0].HExchangeRate}')", ref DBUtility.ClsPub.sExeReturnInfo);
+                //淇敼涓婄骇涓洪潪鏈骇浠g爜
+                sql = "set identity_insert Gy_Currency off";
+                oCN.RunProc(sql);
+                oCN.Commit();
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "淇濆瓨鎴愬姛锛�";
+                objJsonResult.data = 1;
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString();
+                objJsonResult.data = 1;
+                return objJsonResult;
+            }
+        }
+        #endregion
 
     }
 }
\ No newline at end of file
diff --git a/WebAPI/Controllers/BaseSet/Gy_UnitController.cs b/WebAPI/Controllers/BaseSet/Gy_UnitController.cs
index fb7252d..dba24d0 100644
--- a/WebAPI/Controllers/BaseSet/Gy_UnitController.cs
+++ b/WebAPI/Controllers/BaseSet/Gy_UnitController.cs
@@ -1,5 +1,7 @@
-锘縰sing Newtonsoft.Json;
+锘縰sing Model;
+using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
+using NPOI.SS.Formula.Functions;
 using Pub_Class;
 using System;
 using System.Collections;
@@ -7,6 +9,7 @@
 using System.Data;
 using System.Data.SqlClient;
 using System.Web.Http;
+using WebAPI.Controllers.SCGL.鏃ヨ鍒掔鐞�;
 using WebAPI.Models;
 using WebAPI.Service;
 
diff --git a/WebAPI/Controllers/BaseSet/Gy_WarehouseController.cs b/WebAPI/Controllers/BaseSet/Gy_WarehouseController.cs
index dff852c..4cfa986 100644
--- a/WebAPI/Controllers/BaseSet/Gy_WarehouseController.cs
+++ b/WebAPI/Controllers/BaseSet/Gy_WarehouseController.cs
@@ -1,4 +1,5 @@
-锘縰sing Newtonsoft.Json;
+锘縰sing Model;
+using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 using Pub_Class;
 using System;
@@ -7,6 +8,7 @@
 using System.Data;
 using System.Data.SqlClient;
 using System.Web.Http;
+using WebAPI.Controllers.SCGL.鏃ヨ鍒掔鐞�;
 using WebAPI.Models;
 namespace WebAPI.Controllers
 {
@@ -221,7 +223,7 @@
                 long HParentID = list[0].HParentID;
                 long HLevel = list[0].HLevel;
                 bool HEndFlag = list[0].HEndFlag;
-                bool HStopflag = list[0].HStopflag;
+                bool HStopflag = list[0].HStopFlag;
                 string HRemark = list[0].HRemark;
                 string HBarCode = list[0].HBarCode;
                 long HEmpID = list[0].HEmpID;
@@ -304,7 +306,7 @@
                 long HParentID = list[0].HParentID;
                 long HLevel = list[0].HLevel;
                 bool HEndFlag = list[0].HEndFlag;
-                bool HStopflag = list[0].HStopflag;
+                bool HStopflag = list[0].HStopFlag;
                 string HRemark = list[0].HRemark;
                 string HBarCode = list[0].HBarCode;
                 long HEmpID = list[0].HEmpID;
@@ -411,6 +413,8 @@
                 _value = "[" + _value.ToString() + "]";
                 List<Warehouse> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Warehouse>>(_value);
                 string sql = string.Empty;
+                //DataTable dt = DataHelper.ListToDataTable<Warehouse>(list);
+                //oCN.SqlBulkCopyByDatatable("Gy_Warehouse", dt);
                 //淇濆瓨
                 oCN.BeginTran();
                 sql = $"delete Gy_Warehouse where HItemID = {list[0].HItemID}";
@@ -421,7 +425,7 @@
                        " (HItemID,HNumber,HName,HHelpCode,HShortNumber,HParentID" +
                        ",HLevel,HEndFlag,HStopflag,HRemark,HEmpID,HAddress,HPhone,HUSEORGID) " +
                        " Values('" + list[0].HItemID + "','" + list[0].HNumber + "','" +list[0].HName + "','" + list[0].HHelpCode + "','" + list[0].HShortNumber + "'," + list[0].HParentID.ToString() +
-                       "," + list[0].HLevel.ToString() + "," + Convert.ToString(list[0].HEndFlag ? 1 : 0) + "," + Convert.ToString(list[0].HStopflag ? 1 : 0) + ",'" + list[0].HRemark + "'," + list[0].HEmpID.ToString() + ",'" + list[0].HAddress + "','" + list[0].HPhone + "','" + list[0].HUSEORGID + "')", ref DBUtility.ClsPub.sExeReturnInfo);
+                       "," + list[0].HLevel.ToString() + "," + Convert.ToString(list[0].HEndFlag ? 1 : 0) + "," + Convert.ToString(list[0].HStopFlag ? 1 : 0) + ",'" + list[0].HRemark + "'," + list[0].HEmpID.ToString() + ",'" + list[0].HAddress + "','" + list[0].HPhone + "','" + list[0].HUSEORGID + "')", ref DBUtility.ClsPub.sExeReturnInfo);
                 //淇敼涓婄骇涓洪潪鏈骇浠g爜
                 sql = "set identity_insert Gy_Warehouse off";
                 oCN.RunProc(sql);
diff --git a/WebAPI/Controllers/BaseSet/Gy_WorkDayController.cs b/WebAPI/Controllers/BaseSet/Gy_WorkDayController.cs
index 2ccd2ff..a0fd6b2 100644
--- a/WebAPI/Controllers/BaseSet/Gy_WorkDayController.cs
+++ b/WebAPI/Controllers/BaseSet/Gy_WorkDayController.cs
@@ -95,16 +95,14 @@
                 //鍙嶅簭鍒楀寲
                 msg2 = "[" + msg2.ToString() + "]";
                 List<WorkDay> list = Newtonsoft.Json.JsonConvert.DeserializeObject<List<WorkDay>>(msg2);
-
                 long HItemID = list[0].HItemID;
-
                 //淇濆瓨
                 //淇濆瓨瀹屾瘯鍚庡鐞�
                 if (HItemID == 0)
                 {
                     oCN.BeginTran();
-                    string sql = string.Format(@"insert into Gy_WorkDay (HDate,HWorkBegin,HWorkEnd,HNoonbreakBegin,HNoonbreakEnd,HNightbreakBegin,HNightbreakEnd)
-values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}')", list[0].HDate, list[0].HWorkBegin, list[0].HWorkEnd, list[0].HNoonbreakBegin, list[0].HNoonbreakEnd, list[0].HNightbreakBegin, list[0].HNightbreakEnd);
+                    string sql = string.Format(@"insert into Gy_WorkDay (HDate,HWorkBegin,HWorkEnd,HNoonbreakBegin,HNoonbreakEnd,HNightbreakBegin,HNightbreakEnd,HNoonbreakBegin2,HNoonbreakEnd2,HNightbreakBegin2,HNightbreakEnd2)
+values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}')", list[0].HDate, list[0].HWorkBegin, list[0].HWorkEnd, list[0].HNoonbreakBegin, list[0].HNoonbreakEnd, list[0].HNightbreakBegin, list[0].HNightbreakEnd, list[0].HNoonbreakBegin2, list[0].HNoonbreakEnd2, list[0].HNightbreakBegin2, list[0].HNightbreakEnd2);
                     oCN.RunProc(sql);
                     oCN.Commit();
                 }
@@ -118,9 +116,13 @@
                         ",HWorkBegin='" + list[0].HWorkBegin + "'" +
                         ",HWorkEnd='" + list[0].HWorkEnd + "'" +
                         ",HNoonbreakBegin='" + list[0].HNoonbreakBegin + "'" +
-                        ",HNoonbreakEnd=" + list[0].HNoonbreakEnd +
-                        ",HNightbreakBegin=" + list[0].HNightbreakBegin +
-                        ",HNightbreakEnd=" + list[0].HNightbreakEnd +
+                        ",HNoonbreakEnd='" + list[0].HNoonbreakEnd + "'" +
+                        ",HNightbreakBegin='" + list[0].HNightbreakBegin + "'" +
+                        ",HNightbreakEnd='" + list[0].HNightbreakEnd + "'" +
+                        ",HNoonbreakBegin2='" + list[0].HNoonbreakBegin2 + "'" +
+                        ",HNoonbreakEnd2='" + list[0].HNoonbreakEnd2 + "'" +
+                        ",HNightbreakBegin2='" + list[0].HNightbreakBegin2 + "'" +
+                        ",HNightbreakEnd2='" + list[0].HNightbreakEnd2 + "'" +
                         " Where HItemID=" + HItemID, ref DBUtility.ClsPub.sExeReturnInfo);
                     //
                     oCN.Commit();
diff --git a/WebAPI/Controllers/CGGL/Cg_POInStockBillController.cs b/WebAPI/Controllers/CGGL/Cg_POInStockBillController.cs
index bc0ad82..b791307 100644
--- a/WebAPI/Controllers/CGGL/Cg_POInStockBillController.cs
+++ b/WebAPI/Controllers/CGGL/Cg_POInStockBillController.cs
@@ -68,7 +68,7 @@
         /// </summary>
         [Route("Cg_POInStockBill/list")]
         [HttpGet]
-        public object list(string sWhere,string user)
+        public object list(string sWhere, string user)
         {
             try
             {
@@ -84,12 +84,12 @@
 
                 if (sWhere == null || sWhere.Equals(""))
                 {
-                    ds = oCN.RunProcReturn("select * from h_v_IF_POInStockBillList  order by hmainid desc" , "h_v_IF_POInStockBillList");
+                    ds = oCN.RunProcReturn("select * from h_v_IF_POInStockBillList  order by hmainid desc", "h_v_IF_POInStockBillList");
                 }
                 else
                 {
                     string sql1 = "select * from h_v_IF_POInStockBillList where 1 = 1 ";
-                    string sql = sql1 + sWhere+ " order by 鏃ユ湡 desc,hmainid desc";
+                    string sql = sql1 + sWhere + " order by 鏃ユ湡 desc,hmainid desc";
                     ds = oCN.RunProcReturn(sql, "h_v_IF_POInStockBillList");
                 }
 
@@ -119,14 +119,14 @@
                 return objJsonResult;
             }
         }
-       
+
         /// <summary>
         ///鍒犻櫎鍔熻兘
         /// </summary>
         /// <returns></returns>
         [Route("Cg_POInStockBill/DeltetPOInStockBill")]
         [HttpGet]
-        public object DeltetPOInStockBill(string HInterID,string user)
+        public object DeltetPOInStockBill(string HInterID, string user)
         {
             try
             {
@@ -171,7 +171,7 @@
         /// </summary>
         [Route("Cg_POInStockBill/DeAuditPOInStockBill")]
         [HttpGet]
-        public object DeAuditPOInStockBill(string HInterID,string user)
+        public object DeAuditPOInStockBill(string HInterID, string user)
         {
             try
             {
@@ -224,7 +224,7 @@
                         Ids = ""
                     };
                     var loginRet = InvokeHelper.Login();
-                    
+
                     var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                     if (isSuccess == 0)
                     {
@@ -527,14 +527,14 @@
 	            ,HMoney,HWHID,HSPID,HRemark,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HPOOrderInterID
                 ,HPOOrderEntryID,HPOORderBillNo,HAuxPropID,HBatchNO,HMTONo,HPlanMode,HERPInterID,HERPEntryID
 	            ,HRelationQty,HGiveAwayFlag,HReceiveQty,HSEQ,HPRODUCEDATE,HEXPIRYDATE,HSUPPLYLOT,HREQTRACENO,HBOMID,HSTOCKUNITID
-	            ,HBASEUNITID,HSTOCKSTATUSID,HKEEPERTYPEID,HPROJECTNO,HGIVEAWAY,HCHECKINCOMING,HTAXPRICE,HDISCOUNTRATE
+	            ,HBASEUNITID,HSTOCKSTATUSID,HKEEPERTYPEID,HPROJECTNO,HCHECKINCOMING,HTAXPRICE,HDISCOUNTRATE
                 ,HPRICECOEFFICIENT,HPRICEUNITID,HPRICELISTENTRY,HSAMPLEDAMAGEQTY,HSAMPLEDAMAGEBASEQTY
 	            ,HPAYORGID,HSETTLEORGID,HSETTLECURRID,HSETTLEMODEID,HEXCHANGETYPEID,HPAYCONDITONID
 	            ,HEXCHANGERATE,HLOCALCURRID,HISINCLUDEDTAX,HISPRICEEXCLUDETAX
 	            ,HTAXRATEID,HCOSTPERCENT,HCOSTAMOUNT,HVAT,HSELLERWITHHOLDING,HBUYERWITHHOLDING,HSecUnitID) 
                  values({HInterID},{NewHEntryID},{oSub.HMaterID},{oSub.HUnitID},{(oSub.HQty == null ? 0 : oSub.HQty)}
                 ,{oSub.HPrice},{oSub.HMoney},{oSub.HWHID},{oSub.HSPID},'{HRemark}',{oSub.HSourceInterID},{oSub.HSourceEntryID},{HSourceBillNo},{HSourceBillType},{oSub.HPOOrderInterID},{oSub.HPOOrderEntryID},{HPOOrderBillNo},{HAuxPropID},{HBatchNO},{HMTONo},{HPlanMode},{HERPInterID},{HERPEntryID},{HRelationQty},{HGiveAwayFlag},{HReceiveQty},{HSEQ},{HPRODUCEDATE},{HEXPIRYDATE},
-                  {HSUPPLYLOT},{HREQTRACENO},{HBOMID},{HSTOCKUNITID},{HBASEUNITID},{HSTOCKSTATUSID},'{HKEEPERTYPEID}',{HPROJECTNO},{HGIVEAWAY},{HCHECKINCOMING},{oSub.HTaxPrice},{HDISCOUNTRATE},{HPRICECOEFFICIENT},{HPRICEUNITID},{HPRICELISTENTRY},{HSAMPLEDAMAGEQTY},{HSAMPLEDAMAGEBASEQTY},{HPAYORGID},{HSETTLEORGID},{HSETTLECURRID},{HSETTLEMODEID},{HEXCHANGETYPEID},{HPAYCONDITONID},{oSub.HEXCHANGERATE},{HLOCALCURRID},{HISINCLUDEDTAX},{HISPRICEEXCLUDETAX},{HTAXRATEID},{HCOSTPERCENT},{HCOSTAMOUNT},{HVAT},{HSELLERWITHHOLDING},{HBUYERWITHHOLDING},{oSub.HSecUnitID})");
+                  {HSUPPLYLOT},{HREQTRACENO},{HBOMID},{HSTOCKUNITID},{HBASEUNITID},{HSTOCKSTATUSID},'{HKEEPERTYPEID}',{HPROJECTNO},{HCHECKINCOMING},{oSub.HTaxPrice},{HDISCOUNTRATE},{HPRICECOEFFICIENT},{HPRICEUNITID},{HPRICELISTENTRY},{HSAMPLEDAMAGEQTY},{HSAMPLEDAMAGEBASEQTY},{HPAYORGID},{HSETTLEORGID},{HSETTLECURRID},{HSETTLEMODEID},{HEXCHANGETYPEID},{HPAYCONDITONID},{oSub.HEXCHANGERATE},{HLOCALCURRID},{HISINCLUDEDTAX},{HISPRICEEXCLUDETAX},{HTAXRATEID},{HCOSTPERCENT},{HCOSTAMOUNT},{HVAT},{HSELLERWITHHOLDING},{HBUYERWITHHOLDING},{oSub.HSecUnitID})");
             }
 
             objJsonResult.code = "1";
@@ -544,7 +544,80 @@
             return objJsonResult;
         }
 
-        #endregion
+        [Route("Cg_POInStockBill/Cg_POInStockBillSaveApi")]
+        [HttpPost]
+        public object Cg_POInStockBillSaveApi([FromBody] JObject sMainSub)
+        {
+            try
+            {
+                var model = sMainSub["model"].ToString();
+                var entry = sMainSub["model"]["HENTRY"].ToString();
 
+                model = "[" + model.ToString() + "]";
+                List<ClsCg_POInStockBillMain> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsCg_POInStockBillMain>>(model);
+                List<ClsCg_POInStockBillSub> subList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsCg_POInStockBillSub>>(entry);
+                string sql = string.Empty;
+                oCN.BeginTran();
+                sql = $"delete Cg_POInStockBillMain where HinterID = {mainList[0].HInterID}";
+                oCN.RunProc(sql);
+                sql = $"delete Cg_POInStockBillSub where HinterID = {mainList[0].HInterID}";
+                oCN.RunProc(sql);
+                //涓昏〃
+                sql = @"
+Insert Into Cg_POInStockBillMain   
+(HInterID,HYear,HPeriod,HBillType,HBillSubType,HDate
+,HBillNo,HBillStatus,HSupID,HManagerID,HEmpID,HDeptID,HRemark
+,HMaker,HMakeDate,HChecker,HCheckDate,HOWNERTYPEID,HOWNERID
+,HERPInterID,HERPBillType,HPURCHASEORGID,HSTOCKORGID,HREQUIREORGID
+,HSTOCKGROUPID,HSENDBILLNO,HLADBILLNO,HPURDEPTID,HPURGROUPID,HSUPPLYID
+,HSETTLEID,HCHARGEID,HBUSINESSTYPE,HSUPPLYADDRESS,HCORRESPONDORGID,HPROVIDERCONTACTID,HCurID,HExRate,HAddress,HWHID)
+values(" + mainList[0].HInterID + "," + DateTime.Now.Year + "," + DateTime.Now.Month + ",'" + 1103 + "','" +
+mainList[0].HBillSubType + "','" + mainList[0].HDate + "','" + mainList[0].HBillNo + "'," + mainList[0].HBillStatus + "," + mainList[0].HSupID +
+"," + mainList[0].HManagerID + "," + mainList[0].HEmpID + "," + mainList[0].HDeptID + ",'" + mainList[0].HRemark + "','" + mainList[0].HMaker +
+"','" + mainList[0].HMakeDate + "','" + mainList[0].HChecker + "','" + mainList[0].HCheckDate + "','" + mainList[0].HOWNERTYPEID + "'," + mainList[0].HOWNERID + "," + mainList[0].HERPInterID + ",'" + mainList[0].HERPBillType + "'," + mainList[0].HPURCHASEORGID + "," + mainList[0].HSTOCKORGID + "," + mainList[0].HREQUIREORGID + "," +
+mainList[0].HSTOCKGROUPID + ",'" + mainList[0].HSENDBILLNO + "','" + mainList[0].HLADBILLNO + "'," + mainList[0].HPURDEPTID + "," + mainList[0].HPURGROUPID + "," + mainList[0].HSUPPLYID + "," +
+mainList[0].HSETTLEID + "," + mainList[0].HCHARGEID + ",'" + mainList[0].HBUSINESSTYPE + "','" + mainList[0].HSUPPLYADDRESS + "'," + mainList[0].HCORRESPONDORGID + "," + mainList[0].HPROVIDERCONTACTID + "," + mainList[0].HCurID + "," + mainList[0].HExRate + ",'" + mainList[0].HAddress + "'," + mainList[0].HWHID + ")";
+                oCN.RunProc(sql);
+                //淇濆瓨涓昏〃
+                foreach (var oSub in subList)
+                {
+                    sql = $@"
+Insert into Cg_POInStockBillSub 
+(HInterID,HEntryID,HMaterID,HUnitID,HQty,HPrice
+,HMoney,HWHID,HSPID,HRemark,HTaxMoney,HTaxRate,HTaxMoney_TAX,HTaxRate_TAX
+,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HPOOrderInterID
+,HPOOrderEntryID,HPOORderBillNo,HAuxPropID,HBatchNO,HMTONo,HPlanMode,HERPInterID,HERPEntryID
+,HRelationQty,HGiveAwayFlag,HReceiveQty,HSEQ,HPRODUCEDATE,HEXPIRYDATE,HSUPPLYLOT,HREQTRACENO,HBOMID,HSTOCKUNITID
+,HBASEUNITID,HSTOCKSTATUSID,HKEEPERTYPEID,HPROJECTNO,HCHECKINCOMING,HTAXPRICE,HDISCOUNTRATE
+,HPRICECOEFFICIENT,HPRICEUNITID,HPRICELISTENTRY,HSAMPLEDAMAGEQTY,HSAMPLEDAMAGEBASEQTY
+,HPAYORGID,HSETTLEORGID,HSETTLECURRID,HSETTLEMODEID,HEXCHANGETYPEID,HPAYCONDITONID
+,HEXCHANGERATE,HLOCALCURRID,HISINCLUDEDTAX,HISPRICEEXCLUDETAX
+,HTAXRATEID,HCOSTPERCENT,HCOSTAMOUNT,HVAT,HSELLERWITHHOLDING,HBUYERWITHHOLDING,HSecUnitID) 
+values(
+'{oSub.HInterID}','{oSub.HEntryID}','{oSub.HMaterID}','{oSub.HUnitID}','{oSub.HQty}','{oSub.HPrice}'
+,'{oSub.HMoney}','{oSub.HWHID}','{oSub.HSPID}','{oSub.HRemark}','{oSub.HTaxMoney}','{oSub.HTaxRate}','{oSub.HTaxMoney_TAX}','{oSub.HTaxRate_TAX}'
+,'{oSub.HSourceInterID}','{oSub.HSourceEntryID}','{oSub.HSourceBillNo}','{oSub.HSourceBillType}','{oSub.HPOOrderInterID}','{oSub.HPOOrderEntryID}','{oSub.HPOOrderBillNo}','{oSub.HAuxPropID}','{oSub.HBatchNO}','{oSub.HMTONo}','{oSub.HPlanMode}','{oSub.HERPInterID}','{oSub.HERPEntryID}','{oSub.HRelationQty}','{oSub.HGiveAwayFlag}','{oSub.HReceiveQty}','{oSub.HSEQ}','{oSub.HPRODUCEDATE}','{oSub.HEXPIRYDATE}',
+'{oSub.HSUPPLYLOT}','{oSub.HREQTRACENO}','{oSub.HBOMID}','{oSub.HSTOCKUNITID}','{oSub.HBASEUNITID}','{oSub.HSTOCKSTATUSID}','{oSub.HKEEPERTYPEID}','{oSub.HPROJECTNO}','{oSub.HCHECKINCOMING}','{oSub.HTaxPrice}','{oSub.HDISCOUNTRATE}','{oSub.HPRICECOEFFICIENT}','{oSub.HPRICEUNITID}','{oSub.HPRICELISTENTRY}','{oSub.HSAMPLEDAMAGEQTY}','{oSub.HSAMPLEDAMAGEBASEQTY}','{oSub.HPAYORGID}','{oSub.HSETTLEORGID}','{oSub.HSETTLECURRID}','{oSub.HSETTLEMODEID}','{oSub.HEXCHANGETYPEID}','{oSub.HPAYCONDITONID}','{oSub.HEXCHANGERATE}','{oSub.HLOCALCURRID}','{oSub.HISINCLUDEDTAX}','{oSub.HISPRICEEXCLUDETAX}','{oSub.HTAXRATEID}','{oSub.HCOSTPERCENT}','{oSub.HCOSTAMOUNT}','{oSub.HVAT}','{oSub.HSELLERWITHHOLDING}','{oSub.HBUYERWITHHOLDING}','{oSub.HSecUnitID}')";
+                    oCN.RunProc(sql);
+                }
+                oCN.Commit();
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "鍗曟嵁淇濆瓨鎴愬姛锛�";
+                objJsonResult.data = null;
+                return objJsonResult;
+
+            }
+            catch (Exception e)
+            {
+                oCN.RollBack();
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+        #endregion
     }
 }
\ No newline at end of file
diff --git a/WebAPI/Controllers/CGGL/Cg_POOrderBillController.cs b/WebAPI/Controllers/CGGL/Cg_POOrderBillController.cs
index cb62ce4..e5b8fb5 100644
--- a/WebAPI/Controllers/CGGL/Cg_POOrderBillController.cs
+++ b/WebAPI/Controllers/CGGL/Cg_POOrderBillController.cs
@@ -781,7 +781,7 @@
                     HBillSubType + "','" + HDate + "','" + HBillNo + "','" + HBillStatus + "','" + HAddress +
                     "'," + HSSID + ",'" + HSSDate + "'," + HPSStyleID + "," + HSupID + "," + HCurID +
                     "," + HExRate + "," + HEmpID + "," + HManagerID + "," + HDeptID + ",'" + HExplanation + "','" + HRemark + "','" + HInnerBillNo + "','" + HChecker + "','" + HCheckDate + "','" + HMaker + "','" +
-                    HMakeDate + "'," + HERPInterID + ",'" + HERPBillType + "'," + HPURCHASEORGID + "," + HPURCHASERGROUPID + "," 
+                    HMakeDate + "'," + HERPInterID + ",'" + HERPBillType + "'," + HPURCHASEORGID + "," + HPURCHASERGROUPID + ","
                     + HPROVIDERID + "," + HSETTLEID + "," + HCHARGEID + ",'" + HBUSINESSTYPE + "','" + HPROVIDERADDRESS + "',"
                     + HCORRESPONDORGID + "," + HPROVIDERCONTACTID + ")");
                 }
@@ -830,7 +830,7 @@
 
             List<ClsCg_POOrderBillSub> DetailColl2 = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsCg_POOrderBillSub>>(msg3);
 
-            
+
             string HSourceBillNo = DetailColl2[0].HSourceBillNo == null ? "''" : DetailColl2[0].HSourceBillNo;
             string HSourceBillType = DetailColl2[0].HSourceBillType == null ? "''" : DetailColl2[0].HSourceBillType;
             double HRelationQty = DetailColl2[0].HRelationQty == null ? 0 : DetailColl2[0].HRelationQty;
@@ -953,6 +953,83 @@
             return objJsonResult;
         }
 
+
+        [Route("Cg_POOrderBill/Cg_POOrderBillSaveApi")]
+        [HttpPost]
+        public object Cg_POOrderBillSaveApi([FromBody] JObject sMainSub)
+        {
+            try
+            {
+                var model = sMainSub["model"].ToString();
+                var entry = sMainSub["model"]["HENTRY"].ToString();
+
+                model = "[" + model.ToString() + "]";
+                List<ClsCg_POOrderBillMain> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsCg_POOrderBillMain>>(model);
+                List<ClsCg_POOrderBillSub> subList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsCg_POOrderBillSub>>(entry);
+                string sql = string.Empty;
+                oCN.BeginTran();
+                sql = $"delete Cg_POOrderBillMain where HinterID = {mainList[0].HInterID}";
+                oCN.RunProc(sql);
+                sql = $"delete Cg_POOrderBillSub where HinterID = {mainList[0].HInterID}";
+                oCN.RunProc(sql);
+                //涓昏〃
+                oCN.RunProc(@"Insert Into Cg_POOrderBillMain   
+                        (HInterID,HYear,HPeriod,HBillType,HBillSubType,HDate,HBillNo,HBillStatus
+	                    ,HAddress,HSSID,HSSDate,HPSStyleID,HSupID,HCurID
+	                    ,HExRate,HEmpID,HManagerID,HDeptID,HExplanation,HRemark,HInnerBillNo
+	                    ,HChecker,HCheckDate,HMaker,HMakeDate
+	                    ,HERPInterID,HERPBillType,HPURCHASEORGID
+                        ,HPURCHASERGROUPID,HPROVIDERID,HSETTLEID,HCHARGEID,HBUSINESSTYPE,HPROVIDERADDRESS,HCORRESPONDORGID,HPROVIDERCONTACTID)
+                        values(" + mainList[0].HInterID + "," + DateTime.Now.Year + "," + DateTime.Now.Month + ",'" + 1102 + "','" +
+                    mainList[0].HBillSubType + "','" + mainList[0].HDate + "','" + mainList[0].HBillNo + "','" + mainList[0].HBillStatus + "','" + mainList[0].HAddress +
+                    "'," + mainList[0].HSSID + ",'" + mainList[0].HSSDate + "'," + mainList[0].HPSStyleID + "," + mainList[0].HSupID + "," + mainList[0].HCurID +
+                    "," + mainList[0].HExRate + "," + mainList[0].HEmpID + "," + mainList[0].HManagerID + "," + mainList[0].HDeptID + ",'" + mainList[0].HExplanation + "','" + mainList[0].HRemark + "','" + mainList[0].HInnerBillNo + "','" + mainList[0].HChecker + "','" + mainList[0].HCheckDate + "','" + mainList[0].HMaker + "','" +
+                    mainList[0].HMakeDate + "'," + mainList[0].HERPInterID + ",'" + mainList[0].HERPBillType + "'," + mainList[0].HPURCHASEORGID + "," + mainList[0].HPURCHASERGROUPID + ","
+                    + mainList[0].HPROVIDERID + "," + mainList[0].HSETTLEID + "," + mainList[0].HCHARGEID + ",'" + mainList[0].HBUSINESSTYPE + "','" + mainList[0].HPROVIDERADDRESS + "',"
+                    + mainList[0].HCORRESPONDORGID + "," + mainList[0].HPROVIDERCONTACTID + ")");
+                //淇濆瓨涓昏〃
+                foreach (var oSub in subList)
+                {
+                    sql = $@"
+Insert into Cg_POOrderBillSub 
+(HInterID,HEntryID,HMaterID,HUnitID,HQty,HPrice,HTaxRate_TAX,HTaxMoney_TAX,HTaxPrice,HDiscountRate,HRelTaxPrice
+,HMoney,HTaxRate,HTaxMoney,HLineTotal,HlineTotalBB,HDate,HInStockQty,HInvoiceQty,HSeOrderBillNo,HSeOrderInterID
+,HSeOrderEntryID,HRemark,HSourceInterID,HSourceEntryID,HSourceBillNo
+,HSourceBillType,HRelationQty,HBackRelationQty,HPropertyID,HBatChNo,HAuxPropID,HMTONo
+,HERPInterID,HERPEntryID
+,HSEQ,HRECEIVEDEPTID,HSUPPLIERLOT,HBOMID,HSTOCKUNITID,HBASEUNITID,HBFLOWID,HGIVEAWAY,HROWTYPE,HBASEUNITQTY,HSTOCKBASEQTY
+,HREQTRACENO,HTAXNETPRICE,HPRICECOEFFICIENT,HTAXCOMBINATION,HPRICEUNITID,HPRICELISTENTRY,HPAYORGID,HSETTLEMODEID,HSETTLECURRID
+,HEXCHANGETYPEID,HPAYCONDITIONID,HEXCHANGERATE,HLOCALCURRID,HISINCLUDEDTAX,HISPRICEEXCLUDETAX,HTAXRATEID,HCOSTPERCENT,HCOSTAMOUNT
+,HVAT,HSELLERWITHHOLDING,HBUYERWITHHOLDING,HMATERIALDESC) 
+values('{oSub.HInterID}','{oSub.HEntryID}','{oSub.HMaterID}','{oSub.HUnitID}','{oSub.HQty}','{oSub.HPrice}','{oSub.HPrice}','{oSub.HTaxRate_TAX}','{oSub.HTaxMoney_TAX}','{oSub.HDiscountRate}','{oSub.HRelTaxPrice}',
+'{oSub.HMoney}','{oSub.HTaxRate}','{oSub.HTaxMoney}','{oSub.HlineTotal}','{oSub.HlineTotalBB}','{oSub.HDate}','{oSub.HInStockQty}','{oSub.HInvoiceQty}','{oSub.HSeOrderBillNo}','{oSub.HSeOrderInterID}',
+'{oSub.HSeOrderEntryID}','{oSub.HRemark}','{oSub.HSourceInterID}','{oSub.HSourceEntryID}','{oSub.HSourceBillNo}',
+'{oSub.HSourceBillType}','{oSub.HRelationQty}','{oSub.HBackRelationQty}','{oSub.HPropertyID}','{oSub.HBatChNo}','{oSub.HAuxPropID}','{oSub.HMTONo}',
+'{oSub.HERPInterID}','{oSub.HERPEntryID}',
+'{oSub.HSEQ}','{oSub.HRECEIVEDEPTID}','{oSub.HSUPPLIERLOT}','{oSub.HBOMID}','{oSub.HSTOCKUNITID}','{oSub.HBASEUNITID}','{oSub.HBFLOWID}','{oSub.HGIVEAWAY}','{oSub.HROWTYPE}','{oSub.HBASEUNITQTY}','{oSub.HSTOCKBASEQTY}',
+'{oSub.HREQTRACENO}','{oSub.HTAXNETPRICE}','{oSub.HPRICECOEFFICIENT}','{oSub.HTAXCOMBINATION}','{oSub.HPRICEUNITID}','{oSub.HPRICELISTENTRY}','{oSub.HPAYORGID}','{oSub.HSETTLEMODEID}','{oSub.HSETTLECURRID}',
+'{oSub.HEXCHANGETYPEID}','{oSub.HPAYCONDITIONID}','{oSub.HEXCHANGERATE}','{oSub.HLOCALCURRID}','{oSub.HISINCLUDEDTAX}','{oSub.HISPRICEEXCLUDETAX}','{oSub.HTAXRATEID}','{oSub.HCOSTPERCENT}','{oSub.HCOSTAMOUNT}',
+'{oSub.HVAT}','{oSub.HSELLERWITHHOLDING}','{oSub.HBUYERWITHHOLDING}','{oSub.HMATERIALDESC}')";
+                    oCN.RunProc(sql);
+                }
+                oCN.Commit();
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "鍗曟嵁淇濆瓨鎴愬姛锛�";
+                objJsonResult.data = null;
+                return objJsonResult;
+
+            }
+            catch (Exception e)
+            {
+                oCN.RollBack();
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
         #endregion
         /// <summary>
         ///鍒犻櫎鍔熻兘
diff --git a/WebAPI/Controllers/SCGL/Sc_ICMOReportBillController.cs b/WebAPI/Controllers/SCGL/Sc_ICMOReportBillController.cs
index e751558..8eb1141 100644
--- a/WebAPI/Controllers/SCGL/Sc_ICMOReportBillController.cs
+++ b/WebAPI/Controllers/SCGL/Sc_ICMOReportBillController.cs
@@ -31,7 +31,7 @@
         /// </summary>
         [Route("Sc_ICMOReportBill/list")]
         [HttpGet]
-        public object list(string sWhere,string user)
+        public object list(string sWhere, string user)
         {
             try
             {
@@ -52,7 +52,7 @@
                 else
                 {
                     string sql1 = "select * from h_v_IF_ICMOReportBillList_Edit where 1 = 1 ";
-                    string sql = sql1 + sWhere+ " order by hmainid desc ";
+                    string sql = sql1 + sWhere + " order by hmainid desc ";
                     ds = oCN.RunProcReturn(sql, "h_v_IF_ICMOReportBillList_Edit");
                 }
 
@@ -189,10 +189,10 @@
                 msg2 = msg2.Replace("\\", "");
                 msg2 = msg2.Replace("\n", "");  //\n
                 lsmain = oListModels.getObjectByJson_Gy_ICMOReportBillMain(msg2);
-                
+
                 foreach (Models.ClsSc_ICMOReportBillMain oItem in lsmain)
                 {
-                    if (refSav == "Add") 
+                    if (refSav == "Add")
                     {
                         //鍗曟嵁鍙锋槸鍚﹂噸澶�
                         if (BillNew.IsExistBillNo(ref ClsPub.sExeReturnInfo, oItem.HBillNo, BillStatus, BillOld.omodel.HInterID))
@@ -215,7 +215,7 @@
                             return objJsonResult;
                         }
                         //鍒ゆ柇鏄惁鍙紪杈�
-                        if (BillOld.omodel.HChecker != ""&& BillOld.omodel.HChecker != null)
+                        if (BillOld.omodel.HChecker != "" && BillOld.omodel.HChecker != null)
                         {
                             objJsonResult.code = "0";
                             objJsonResult.count = 0;
@@ -295,7 +295,7 @@
                     oItemSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now);
                     oItemSub.HCloseType = false;   //鍏抽棴绫诲瀷
                     //oItemSub.HRemark = "";         //澶囨敞
-                    oItemSub.HSourceInterID =0;     // 婧愬崟涓诲唴鐮�
+                    oItemSub.HSourceInterID = 0;     // 婧愬崟涓诲唴鐮�
                     oItemSub.HSourceEntryID = 0;   //婧愬崟瀛愬唴鐮�
                     //oItemSub.HSourceBillNo = "";  //婧愬崟鍗曞彿
                     //oItemSub.HSourceBillType = ""; //婧愬崟绫诲瀷
@@ -348,6 +348,92 @@
         }
         #endregion
 
+        #region 鐢熶骇姹囨姤鍗曚繚瀛榓pi
+        [Route("Sc_ICMOReportBill/Sc_ICMOReportBillSaveApi")]
+        [HttpPost]
+        public object Sc_ICMOReportBillSaveApi([FromBody] JObject sMainSub)
+        {
+            try
+            {
+                var model = sMainSub["model"].ToString();
+                var entry = sMainSub["model"]["HENTRY"].ToString();
+
+                model = "[" + model.ToString() + "]";
+                List<ClsSc_ICMOReportBillMain> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsSc_ICMOReportBillMain>>(model);
+                List<ClsSc_ICMOReportBillSub> subList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsSc_ICMOReportBillSub>>(entry);
+                string sql = string.Empty;
+                oCN.BeginTran();
+                sql = $"delete Sc_ICMOReportBillMain where HinterID = {mainList[0].HInterID}";
+                oCN.RunProc(sql);
+                sql = $"delete Sc_ICMOReportBillSub where HinterID = {mainList[0].HInterID}";
+                oCN.RunProc(sql);
+                //涓昏〃
+                sql = "Insert Into Sc_ICMOReportBillMain   " +
+               "(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMaker,HMakeDate" +
+               ",HYear,HPeriod,HRemark,HEmpID,HEmpNumber" +
+               ",HGroupID,HDeptID,HDeptNumber" +
+               ",HMainSourceBillNo,HMainSourceInterID,HMainSourceEntryID,HMainSourceBillType" +
+               ",HChecker,HCheckDate,HUpDater,HUpDateDate,HDeleteMan,HDeleteDate,HPrintQty,HCheckType" +
+               ",HERPInterID,HERPBillType,HPRDORGID" +
+               ") " +
+               " values('" + mainList[0].HBillType + "','" + mainList[0].HBillSubType + "'," + mainList[0].HInterID.ToString() + ",'" + mainList[0].HBillNo + "','" + mainList[0].HDate + "','" + mainList[0].HMaker + "',getdate()" +
+               "," + mainList[0].HYear.ToString() + "," + mainList[0].HPeriod.ToString() + ",'" + mainList[0].HRemark + "','" + mainList[0].HEmpID.ToString() + "','" + mainList[0].HEmpNumber +
+               "','" + mainList[0].HGroupID.ToString() + "'," + mainList[0].HDeptID.ToString() + ",'" + mainList[0].HDeptNumber +
+               "','" + mainList[0].HMainSourceBillNo.ToString() + "'," + mainList[0].HMainSourceInterID.ToString() + ",'" + mainList[0].HMainSourceEntryID + "','" + mainList[0].HMainSourceBillType + "','" + mainList[0].HChecker + "','" + mainList[0].HCheckDate + "','" + mainList[0].HUpDater +
+               "','" + mainList[0].HUpDateDate + "','" + mainList[0].HDeleteMan + "','" + mainList[0].HDeleteDate + "'," + mainList[0].HPrintQty +
+               ",'" + mainList[0].HCheckType + "'," + mainList[0].HERPInterID + ",'" + mainList[0].HERPBillType + "'," + mainList[0].HPRDORGID +
+               ") ";
+                oCN.RunProc(sql);
+                //淇濆瓨涓昏〃
+                foreach (var oSub in subList)
+                {
+                    sql = "Insert into Sc_ICMOReportBillSub " +
+                      " (HInterID,HEntryID,HMaterID,HMaterNumber" +
+                      ",HQty,HUnitID,HUnitNumber,HTimes,HSourceID" +
+                      ",HQtyMust,HWorkerID,HWorkerNumber,HBadCount,HWasterQty," +
+                      "HCloseMan,HCloseType,HRemark," +
+                      "HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HRelationQty,HRelationMoney" +
+                      ",HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo" +
+                      ",HICMOInterID,HICMOBillNo,HBarCode" +
+                      ",HOWNERTYPEID,HISENTRUST,HSTOCKINORGID,HOWNERID,HCHECKPRODUCT,HQAIP,HCOSTRATE,HISBACKFLUSH" +
+                      ",HREQSRC,HREQBILLNO,HREQBILLID,HREQENTRYSEQ,HREQENTRYID,HMOMAINENTRYID,HSTOCKINQUASELQTY" +
+                      ",HPRODUCTTYPE,HPROJECTNO,HICMOENTRYSEQ,HSEQ,HPRODUCEDATE,HEXPIRYDATE,HBASEUNITID,HDEPTID" +
+                      ",HGroupID,HDESCRIPTION" +
+                      ",HSourceNumber,HQPQty,HICMOEntryID" +
+                      ",HWhID,HSPID,HBatChNo,HAuxPropID,HMTONo,HPlanMode,HERPInterID,HERPEntryID" +
+                      ") values("
+                      + oSub.HInterID.ToString() + "," + oSub.HEntryID.ToString() + "," + oSub.HMaterID.ToString() + ",'" + oSub.HMaterNumber + "'" +
+                      "," + oSub.HQty.ToString() + "," + oSub.HUnitID.ToString() + ",'" + oSub.HUnitNumber + "'," + oSub.HTimes.ToString() + "," + oSub.HSourceID.ToString() +
+                      "," + oSub.HQtyMust.ToString() + "," + oSub.HWorkerID.ToString() + ",'" + oSub.HWorkerNumber + "'," + oSub.HBadCount.ToString() + "," + oSub.HWasterQty.ToString() +
+                      ",'" + oSub.HCloseMan + "'," + Convert.ToString(oSub.HCloseType ? 1 : 0) + ",'" + oSub.HRemark + "'" +
+                      "," + oSub.HSourceInterID.ToString() + "," + oSub.HSourceEntryID.ToString() + ",'" + oSub.HSourceBillNo + "','" + oSub.HSourceBillType + "'," + oSub.HRelationQty.ToString() + "," + oSub.HRelationMoney.ToString() +
+                      "," + oSub.HSeOrderInterID.ToString() + "," + oSub.HSeOrderEntryID.ToString() + ",'" + oSub.HSeOrderBillNo + "'" +
+                      "," + oSub.HICMOInterID.ToString() + ",'" + oSub.HICMOBillNo + "','" + oSub.HBarCode + "','" + oSub.HOWNERTYPEID + "'," +
+                      oSub.HISENTRUST + "," + oSub.HSTOCKINORGID + "," + oSub.HOWNERID + "," + oSub.HCHECKPRODUCT + ",'" + oSub.HQAIP + "'," +
+                      oSub.HCOSTRATE + "," + oSub.HISBACKFLUSH + ",'" + oSub.HREQSRC + "','" + oSub.HREQBILLNO + "'," + oSub.HREQBILLID + "," +
+                      oSub.HREQENTRYSEQ + "," + oSub.HREQENTRYID + "," + oSub.HMOMAINENTRYID + "," + oSub.HSTOCKINQUASELQTY + "," + oSub.HPRODUCTTYPE + ",'" + oSub.HPROJECTNO + "'," + oSub.HICMOENTRYSEQ + "," + oSub.HSEQ + ",'" + oSub.HPRODUCEDATE + "','" + oSub.HEXPIRYDATE + "'," + oSub.HBASEUNITID + "," + oSub.HDEPTID + "," + oSub.HGroupID + ",'" + oSub.HDESCRIPTION + "','" + oSub.HSourceNumber + "'," + oSub.HQPQty + "," + oSub.HICMOEntryID + "," + oSub.HWhID + "," + oSub.HSPID + ",'" + oSub.HBatChNo + "'," + oSub.HAuxPropID + ",'" + oSub.HMTONo + "'," + oSub.HPlanMode + "," + oSub.HERPInterID + "," + oSub.HERPEntryID +
+                      ") ";
+                    oCN.RunProc(sql);
+                }
+                oCN.Commit();
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "鍗曟嵁淇濆瓨鎴愬姛锛�";
+                objJsonResult.data = null;
+                return objJsonResult;
+
+            }
+            catch (Exception e)
+            {
+                oCN.RollBack();
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+        #endregion
         #region 鐢熶骇姹囨姤鍗曞垹闄ゅ姛鑳�
         /// <summary>
         /// 妯″叿澶勭悊棰嗙敤鍗曞垹闄ゅ姛鑳�
@@ -355,7 +441,7 @@
         /// <returns></returns>
         [Route("Sc_ICMOReportBill/DeltetICMOReportBill")]
         [HttpGet]
-        public object DeltetMouldLifeChangeBill(string HInterID,string user)
+        public object DeltetMouldLifeChangeBill(string HInterID, string user)
         {
             //缂栬緫鏉冮檺
             if (!DBUtility.ClsPub.Security_Log_second("Sc_ICMOReportBill_Drop", 1, false, user))
diff --git a/WebAPI/Controllers/SCGL/Sc_PPBomBillController.cs b/WebAPI/Controllers/SCGL/Sc_PPBomBillController.cs
index fc30b37..8b1b9bb 100644
--- a/WebAPI/Controllers/SCGL/Sc_PPBomBillController.cs
+++ b/WebAPI/Controllers/SCGL/Sc_PPBomBillController.cs
@@ -28,7 +28,7 @@
         /// </summary>
         [Route("Sc_PPBomBill/list")]
         [HttpGet]
-        public object list(string sWhere,string user)
+        public object list(string sWhere, string user)
         {
             try
             {
@@ -49,7 +49,7 @@
                 else
                 {
                     string sql1 = "select * from h_v_IF_PPBomBillList where 1 = 1 ";
-                    string sql = sql1 + sWhere+ " order by hmainid desc ";
+                    string sql = sql1 + sWhere + " order by hmainid desc ";
                     ds = oCN.RunProcReturn(sql, "h_v_IF_PPBomBillList");
                 }
 
@@ -79,9 +79,6 @@
                 return objJsonResult;
             }
         }
-
-
-
         #region 鐢熶骇鐢ㄦ枡娓呭崟 瀹℃牳/鍙嶅鏍�
         [Route("Sc_PPBomBill/DeOrAuditBill")]
         [HttpGet]
@@ -148,7 +145,7 @@
                 {
                     objJsonResult.code = "0";
                     objJsonResult.count = 0;
-                    objJsonResult.Message = "鍗曟嵁涓嶅瓨鍦�,鍘熷洜:"+DBUtility.ClsPub.sExeReturnInfo;
+                    objJsonResult.Message = "鍗曟嵁涓嶅瓨鍦�,鍘熷洜:" + DBUtility.ClsPub.sExeReturnInfo;
                     objJsonResult.data = null;
                     return objJsonResult;
                 }
@@ -219,7 +216,7 @@
             catch (Exception e)
             {
                 sReturn = e.Message;
-                throw(e);
+                throw (e);
             }
         }
         //鍙嶅鏍�
@@ -409,7 +406,7 @@
 
             DateTime dt = DateTime.Now;
 
-            long HQtyMust = DetailColl2[0].HQtyMust == null ? 0 : DetailColl2[0].HQtyMust; //搴斿彂鏁伴噺
+            decimal HQtyMust = DetailColl2[0].HQtyMust == null ? 0 : DetailColl2[0].HQtyMust; //搴斿彂鏁伴噺
             double HNumerator = DetailColl2[0].HNumerator == null ? 0 : DetailColl2[0].HNumerator;  //鍒嗗瓙
             double HDenominator = DetailColl2[0].HDenominator == null ? 0 : DetailColl2[0].HDenominator;  //鍒嗘瘝
             double HQtyScrap = DetailColl2[0].HQtyScrap == null ? 0 : DetailColl2[0].HQtyScrap;  //鎹熻�楃巼
@@ -514,7 +511,7 @@
                 {
                     NewHEntryID = ClsPub.isLong(Cs.Tables[0].Rows[0]["HEntryID"].ToString());
                     NewHEntryID += 1;
-                }            
+                }
 
 
                 oCN.RunProc($@"Insert into Sc_PPBomBillSub 
@@ -536,6 +533,66 @@
             return objJsonResult;
         }
 
+        [Route("Sc_PPBomBill/Sc_PPBomBillSaveApi")]
+        [HttpPost]
+        public object Sc_PPBomBillSaveApi([FromBody] JObject sMainSub)
+        {
+            try
+            {
+                var model = sMainSub["model"].ToString();
+                var entry = sMainSub["model"]["HENTRY"].ToString();
+
+                model = "[" + model.ToString() + "]";
+                List<ClsSc_PPBomBillMain> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsSc_PPBomBillMain>>(model);
+                List<ClsSc_PPBomBillSub> subList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsSc_PPBomBillSub>>(entry);
+                string sql = string.Empty;
+                oCN.BeginTran();
+                sql = $"delete Sc_PPBomBillMain where HinterID = {mainList[0].HInterID}";
+                oCN.RunProc(sql);
+                sql = $"delete Sc_PPBomBillSub where HinterID = {mainList[0].HInterID}";
+                oCN.RunProc(sql);
+                //涓昏〃
+                oCN.RunProc(@"Insert Into Sc_PPBomBillMain   
+                        (HInterID,HYear,HPeriod,HBillType,HBillSubType,HDate,HBillNo,HBillStatus,HICMOInterID
+                        ,HICMOEntryID,HMaterID,HUnitID,HQty,HDeptID,HMaker,HMakeDate,HChecker,HCheckDate
+                        ,HSeOrderBillNo,HSeOrderInterID,HSeOrderEntryID,HPRDORGID,HENTRUSTORGID,HPARENTOWNERID
+                        ,HPARENTOWNERTYPEID,HERPInterID,HERPBillType,HSeOrderEntrySEQ,HICMOEntrySEQ,HREQSRC)
+                        values(" + mainList[0].HInterID + "," + DateTime.Now.Year + "," + DateTime.Now.Month + ",'" + 3720 + "','" +
+                mainList[0].HBillSubType + "','" + mainList[0].HDate + "','" + mainList[0].HBillNo + "','" + mainList[0].HBillStatus + "'," + mainList[0].HICMOInterID +
+                "," + mainList[0].HICMOEntryID + ",'" + mainList[0].HMaterID + "'," + mainList[0].HUnitID + "," + mainList[0].HQty + "," + mainList[0].HDeptID +
+                ",'" + mainList[0].HMaker + "','" + mainList[0].HMakeDate + "','" + mainList[0].HChecker + "','" + mainList[0].HCheckDate + "','" + mainList[0].HSeOrderBillNo + "'," + mainList[0].HSeOrderInterID + "," + mainList[0].HSeOrderEntryID + "," + mainList[0].HPRDORGID + "," + mainList[0].HENTRUSTORGID + "," + mainList[0].HPARENTOWNERID + ",'" +
+                mainList[0].HPARENTOWNERTYPEID + "'," + mainList[0].HERPInterID + ",'" + mainList[0].HERPBillType + "'," + mainList[0].HSeOrderEntrySEQ + "," + mainList[0].HICMOEntrySEQ + ",'" + mainList[0].HREQSRC + "')");
+                //淇濆瓨涓昏〃
+                foreach (var oSub in subList)
+                {
+                    oCN.RunProc($@"Insert into Sc_PPBomBillSub 
+                (HInterID,HEntryID,HMaterID,HMaterNumber,HUnitID,HUnitNumber,HSPID,HQty,HQtyMust,HWHID,HRemark
+	            ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HICMOInterID,HICMOEntryID,HICMOBillNo
+	            ,HCHILDSUPPLYORGID,HSUPPLYORGID,HENTRUSTPICKORGID,HSRCTRANSORGID,HGROUPBYOWNERID,HOWNERID,HOWNERTYPEID
+	            ,HRelationQty,HMoveStockQty,HAuxPropID,HBatchNO,HMTONo,HQtyScrap,HERPInterID,HERPEntryID
+	            ,HBackRelationQty,HNumerator,HDenominator,HBASEUNITID,HProcessID,HICMOENTRYSEQ,HPROJECTNO
+                ,HOPERID,HSEQ,HSTOCKSTATUSID,HLOT,HOPTQUEUE,HRESERVETYPE,HSelPickedQty,HSELPRCDRETURNQTY) 
+                 values('{oSub.HInterID}','{oSub.HEntryID}','{oSub.HMaterID}','{oSub.HMaterNumber}','{oSub.HUnitID}','{oSub.HUnitNumber}','{oSub.HSPID}','{oSub.HQty}'
+                ,'{oSub.HQtyMust}','{oSub.HWHID}','{oSub.HRemark}','{oSub.HSourceInterID}','{oSub.HSourceEntryID}','{oSub.HSourceBillNo}','{oSub.HSourceBillType}','{oSub.HICMOInterID}','{oSub.HICMOEntryID}','{oSub.HICMOBillNo}','{oSub.HCHILDSUPPLYORGID}','{oSub.HSUPPLYORGID}','{oSub.HENTRUSTPICKORGID}','{oSub.HSRCTRANSORGID}','{oSub.HGROUPBYOWNERID}','{oSub.HOWNERID}','{oSub.HOWNERTYPEID}','{oSub.HRelationQty}','{oSub.HMoveStockQty}','{oSub.HAuxPropID}','{oSub.HBatchNO}','{oSub.HMTONo}','{oSub.HQtyScrap}','{oSub.HERPInterID}','{oSub.HERPEntryID}','{oSub.HBackRelationQty}','{oSub.HNumerator}','{oSub.HDenominator}','{oSub.HBASEUNITID}','{oSub.HProcessID}','{oSub.HICMOENTRYSEQ}','{oSub.HPROJECTNO}','{oSub.HOPERID}','{oSub.HSEQ}','{oSub.HSTOCKSTATUSID}','{oSub.HLOT}','{oSub.HOPTQUEUE}','{oSub.HRESERVETYPE}','{oSub.HSelPickedQty}','{oSub.HSELPRCDRETURNQTY}')");
+                }
+                oCN.Commit();
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "鍗曟嵁淇濆瓨鎴愬姛锛�";
+                objJsonResult.data = null;
+                return objJsonResult;
+
+            }
+            catch (Exception e)
+            {
+                oCN.RollBack();
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
         #endregion
 
         /// <summary>
diff --git "a/WebAPI/Controllers/SCGL/\346\227\245\350\256\241\345\210\222\347\256\241\347\220\206/DataHelper.cs" "b/WebAPI/Controllers/SCGL/\346\227\245\350\256\241\345\210\222\347\256\241\347\220\206/DataHelper.cs"
index b9adbec..ed0e600 100644
--- "a/WebAPI/Controllers/SCGL/\346\227\245\350\256\241\345\210\222\347\256\241\347\220\206/DataHelper.cs"
+++ "b/WebAPI/Controllers/SCGL/\346\227\245\350\256\241\345\210\222\347\256\241\347\220\206/DataHelper.cs"
@@ -1,5 +1,8 @@
-锘縰sing System;
+锘縰sing Newtonsoft.Json;
+using System;
+using System.Collections;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Data;
 using System.Linq;
 using System.Reflection;
@@ -19,7 +22,7 @@
                 List<T> list = new List<T>();
                 if (ds.Tables[0].Rows.Count > 0)
                 {
-                    foreach (DataRow row in ds.Tables[0].Rows) 
+                    foreach (DataRow row in ds.Tables[0].Rows)
                     {
                         list.Add(row.Put(new T()));
                     }
@@ -167,5 +170,77 @@
             }
             return $"update {table} set {strSet} where 1=1 {condition}";
         }
+
+
+
+
+        /// <summary>
+        /// 灏哃ist杞崲鎴怐ataTable
+        /// </summary>
+        /// <typeparam name="T"></typeparam>
+        /// <param name="data"></param>
+        /// <returns></returns>
+        public static DataTable ToDataTable<T>(this IList<T> data)
+        {
+            PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(T));
+            DataTable dt = new DataTable();
+            for (int i = 0; i < properties.Count; i++)
+            {
+                PropertyDescriptor property = properties[i];
+                dt.Columns.Add(property.Name, property.PropertyType);
+            }
+            object[] values = new object[properties.Count];
+            foreach (T item in data)
+            {
+                for (int i = 0; i < values.Length; i++)
+                {
+                    values[i] = properties[i].GetValue(item);
+                }
+                dt.Rows.Add(values);
+            }
+            return dt;
+        }
+
+
+        /// <summary>
+        /// 灏哃ist杞崲涓篋ataTable
+        /// </summary>
+        /// <param name="list">璇锋眰鏁版嵁</param>
+        /// <returns></returns>
+        public static DataTable ListToDataTable<T>(List<T> list)
+        {
+            //鍒涘缓涓�涓悕涓�"tableName"鐨勭┖琛�
+            DataTable dt = new DataTable("tableName");
+
+            //鍒涘缓浼犲叆瀵硅薄鍚嶇О鐨勫垪
+            foreach (var item in list.FirstOrDefault().GetType().GetProperties())
+            {
+                dt.Columns.Add(item.Name);
+            }
+            //寰幆瀛樺偍
+            foreach (var item in list)
+            {
+                //鏂板姞琛�
+                DataRow value = dt.NewRow();
+                //鏍规嵁DataTable涓殑鍊硷紝杩涜瀵瑰簲鐨勮祴鍊�
+                foreach (DataColumn dtColumn in dt.Columns)
+                {
+                    int i = dt.Columns.IndexOf(dtColumn);
+                    //鍩哄厓鍏冪礌锛岀洿鎺ュ鍒讹紝瀵硅薄绫诲瀷绛夛紝杩涜搴忓垪鍖�
+                    if (value.GetType().IsPrimitive)
+                    {
+                        value[i] = item.GetType().GetProperty(dtColumn.ColumnName).GetValue(item);
+                    }
+                    else
+                    {
+                        value[i] = JsonConvert.SerializeObject(item.GetType().GetProperty(dtColumn.ColumnName).GetValue(item));
+                    }
+                }
+                dt.Rows.Add(value);
+            }
+            return dt;
+        }
+
     }
+
 }
diff --git a/WebAPI/Controllers/Sc_ProcessMangementController.cs b/WebAPI/Controllers/Sc_ProcessMangementController.cs
index 08f5120..9c247d9 100644
--- a/WebAPI/Controllers/Sc_ProcessMangementController.cs
+++ b/WebAPI/Controllers/Sc_ProcessMangementController.cs
@@ -220,7 +220,7 @@
                 model.Add("FPrdOrgId", new JObject() { ["Fnumber"] = dr1["FPrdOrgNUMBER"].ToString() }); //鐢熶骇缁勭粐1
                 model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //鍗曟嵁鏃ユ湡1
                 model.Add("FHZYMESFLAG", "鏄�");//  鏄惁涓篗ES鍚屾
-                model.Add("FBillNo", HBillNo);
+                model.Add("FBillNo", dr1["鍗曟嵁鍙�"].ToString());
                 
                 JArray Fentity = new JArray();
 
@@ -260,19 +260,6 @@
                     FentityModel.Add("F_bsv_Base1", new JObject() { ["Fnumber"] = dr1["FPREBDONENUMBER"].ToString() }); //鍖呰鏍囪瘑
                     FentityModel.Add("FLot", new JObject() { ["FNumber"] = dr1["FBATCHNO"].ToString() }); //鎵瑰彿
                     FentityModel.Add("F_bsv_Text", dr1["宸ュ簭娴佽浆鍗″彿"].ToString()); //娴佽浆鍗″彿
-                    //鎵瑰彿
-                    //FFLOWID FFLOWLINEID FRULEID FSTABLENAME
-                    //f6e6eec3 - 5267 - 4f02 - 8593 - b633da508a72    3   PRD_MO2MORPT T_PRD_MOENTRY
-                    //涓氬姟娴佺▼鍥撅細FEntity_Link_FFlowId
-                    //鎺ㄨ繘璺嚎锛欶Entity_Link_FFlowLineId
-                    //杞崲瑙勫垯锛欶Entity_Link_FRuleId
-                    //婧愬崟琛ㄥ唴鐮侊細FEntity_Link_FSTableId
-                    //婧愬崟琛細FEntity_Link_FSTableName
-                    //婧愬崟鍐呯爜锛欶Entity_Link_FSBillId
-                    //婧愬崟鍒嗗綍鍐呯爜锛欶Entity_Link_FSId
-                    //鍘熷鎼哄甫閲忥細FEntity_Link_FBaseQuaQtyOld
-                    //淇敼鎼哄甫閲忥細FEntity_Link_FBaseQuaQty
-
                     JArray Fentity2 = new JArray();
                     JObject FentityModel2 = new JObject();
                     FentityModel2.Add("FEntity_Link_FFlowId", "f6e6eec3-5267-4f02-8593-b633da508a72");
@@ -439,7 +426,7 @@
                 model.Add("FOwnerId0", new JObject() { ["FNumber"] = dr1["HPrdOrgNumber"].ToString() }); //
                 model.Add("FIsEntrust", "false");//  
                 model.Add("FCurrId", new JObject() { ["FNumber"] = "PRE001" }); //
-                model.Add("FBillNo", HBillNo);
+                model.Add("FBillNo", BillNo);
 
                 JArray Fentity = new JArray();
 
diff --git a/WebAPI/Controllers/XSGL/Xs_SeOutStockBillController.cs b/WebAPI/Controllers/XSGL/Xs_SeOutStockBillController.cs
index bd3e253..d45f65f 100644
--- a/WebAPI/Controllers/XSGL/Xs_SeOutStockBillController.cs
+++ b/WebAPI/Controllers/XSGL/Xs_SeOutStockBillController.cs
@@ -1,4 +1,5 @@
-锘縰sing Newtonsoft.Json.Linq;
+锘縰sing Model;
+using Newtonsoft.Json.Linq;
 using Pub_Class;
 using System;
 using System.Collections;
@@ -158,6 +159,226 @@
             }
         }
 
+        #region 鍙戣揣閫氱煡鍗� 淇濆瓨/缂栬緫鍔熻兘
+        [Route("Xs_SeOutStockBill/SeOutStockBillEdit")]
+        [HttpPost]
+        public object SeOutStockBillEdit([FromBody] JObject sMainSub)
+        {
+            try
+            {
+                var _value = sMainSub["sMainSub"].ToString();
+                string msg1 = _value.ToString();
+                oCN.BeginTran();
+                //淇濆瓨涓昏〃
+                objJsonResult = AddBillMain(msg1);
+                if (objJsonResult.code == "0")
+                {
+                    oCN.RollBack();
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = objJsonResult.Message;
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+                oCN.Commit();
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "鍗曟嵁淇濆瓨鎴愬姛锛�";
+                objJsonResult.data = null;
+                return objJsonResult;
+
+            }
+            catch (Exception e)
+            {
+                oCN.RollBack();
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        public json AddBillMain(string msg1)
+        {
+            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
+            string msg2 = sArray[0].ToString(); //涓昏〃鏁版嵁
+            string msg3 = sArray[1].ToString(); //瀛愯〃鏁版嵁
+            int OperationType = int.Parse(sArray[2].ToString()); // 鏁版嵁绫诲瀷 1娣诲姞 3淇敼
+            string user = sArray[3].ToString();
+            string msg_allVal = sArray[4].ToString(); //涓昏〃+瀛愯〃鎵�鏈夋暟鎹�
+
+            try
+            {
+                msg2 = "[" + msg2.ToString() + "]";
+                List<ClsXs_SeOutStockBillMain> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsXs_SeOutStockBillMain>>(msg2);
+
+                long HInterID = mainList[0].HInterID;//閫掑叆type寰楀埌鐨勫崟鎹甀D
+                string HBillNo = mainList[0].HBillNo;//閫掑叆type寰楀埌鐨勫崟鎹彿
+                long HPRDORGID = mainList[0].HPRDORGID;//缁勭粐
+                DateTime HDate = mainList[0].HDate;//鏃ユ湡
+                string HRemark = mainList[0].HRemark;//澶囨敞
+                long HEmpID = mainList[0].HEmpID;//涓氬姟鍛�
+                long HDeptID = mainList[0].HDeptID;//閮ㄩ棬
+                long HWHID = mainList[0].HWHID;//浠撳簱
+                long HManagerID = mainList[0].HManagerID;//涓荤
+                long HCurID = mainList[0].HCurID;//甯佸埆
+                Single HExRate = mainList[0].HExRate;//姹囩巼
+                string HMaker = user;//鍒跺崟浜�
+                string HExplanation = mainList[0].HExplanation;//鎽樿
+                string HInnerBillNo = mainList[0].HInnerBillNo;//鍐呴儴鍗曟嵁鍙� 
+                long HCusID = mainList[0].HCusID; //瀹㈡埛
+                string HAddress = mainList[0].HAddress;//鍦板潃
+                long HSSID = mainList[0].HSSID;//缁撶畻鏂瑰紡
+
+                long HDFflag = Convert.ToInt32(mainList[0].HDFflag); //鏄惁鍨粯
+
+
+                string HBillType = mainList[0].HBillType;
+                string HBillSubType = mainList[0].HBillSubType;
+                long HBillStatus = mainList[0].HBillStatus;
+                string HMakeDate = mainList[0].HMakeDate;
+                string HChecker = mainList[0].HChecker;
+                string HCheckDate = mainList[0].HCheckDate;
+                string HUpDater = mainList[0].HUpDater;
+                string HUpDateDate = mainList[0].HUpDateDate;
+                string HDeleteMan = mainList[0].HDeleteMan;
+                string HDeleteDate = mainList[0].HDeleteDate;
+                string HCloseMan = mainList[0].HCloseMan;
+                string HCloseDate = mainList[0].HCloseDate;
+                long HERPInterID = mainList[0].HERPInterID;
+                string HERPBillType = mainList[0].HERPBillType;
+                long HSALEORGID = mainList[0].HSALEORGID;
+                long HDELIVERYORGID = mainList[0].HDELIVERYORGID;
+                long HOWNERID = mainList[0].HOWNERID;
+                string HOWNERTYPEID = mainList[0].HOWNERTYPEID;
+
+                ds = oCN.RunProcReturn("select * from h_v_IF_SeOutStockBillList where hmainid=" + HInterID + " and 鍗曟嵁鍙�='" + HBillNo + "'", "h_v_IF_SeOutStockBillList");
+
+                if ((OperationType == 1 || OperationType == 2) && ds.Tables[0].Rows.Count == 0)//鏂板
+                {
+                    //涓昏〃
+                    oCN.RunProc(@"Insert Into Xs_SeOutStockBillMain   
+                        (HInterID,HYear,HPeriod,HBillType,HBillSubType,HDate,HBillNo,HBillStatus
+	                    ,HCusID,HManagerID,HDeptID,HRemark,HMaker,HMakeDate
+	                    ,HAddress,HSSID,HCurID,HWHID,HExRate,HEmpID,HExplanation,HInnerBillNo
+	                    ,HSALEORGID,HDELIVERYORGID,HOWNERID,HOWNERTYPEID
+	                    ,HChecker,HCheckDate,HCloseMan,HCloseDate,HERPInterID,HERPBillType,HDFflag)
+                        values(" + HInterID + "," + DateTime.Now.Year + "," + DateTime.Now.Month + ",'" + 1402 + "','" +
+                    1402 + "','" + HDate + "','" + HBillNo + "'," + HBillStatus + "," + HCusID +
+                    "," + HManagerID + "," + HDeptID + ",'" + HRemark + "','" + HMaker + "','" + HMakeDate +
+                    "','" + HAddress + "'," + HSSID + "," + HCurID + "," + HWHID + "," + HExRate + "," + HEmpID + ",'" +
+                    HExplanation + "','" + HInnerBillNo + "'," + HSALEORGID + "," + HDELIVERYORGID + "," + HOWNERID + ",'"
+                    + HOWNERTYPEID + "','" + HChecker + "','" + HCheckDate + "','" + HCloseMan + "','" + HCloseDate + "'," + HERPInterID +
+                    ",'" + HERPBillType + "'," + HDFflag + ")");
+                }
+                else if (OperationType == 3 || ds.Tables[0].Rows.Count != 0)
+                { //淇敼
+                    oCN.RunProc("update Xs_SeOutStockBillMain  set " +
+                                "HRemark='" + HRemark + "', HChecker='" + HMaker + "', HCheckDate=getdate()" + "' where HInterID=" + HInterID);
+
+                    //鍒犻櫎瀛愯〃
+                    oCN.RunProc("delete from Xs_SeOutStockBillSub where HInterID='" + HInterID + "'");
+                }
+                //淇濆瓨瀛愯〃
+                objJsonResult = AddBillSub(msg3, HInterID, OperationType);
+
+                if (objJsonResult.code == "0")
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = objJsonResult.Message;
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = null;
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "Exception锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        public json AddBillSub(string msg3, long HInterID, int OperationType)
+        {
+            List<ClsXs_SeOutStockBillSub> DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsXs_SeOutStockBillSub>>(msg3);
+
+            int i = 0;
+            foreach (ClsXs_SeOutStockBillSub oSub in DetailColl)
+            {
+                i++;
+                if (oSub.HQty <= 0 || oSub.HQty == null)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "绗�" + i + "琛岋紝鏁伴噺涓嶈兘涓�0鎴栬�呭皬浜�0";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+
+                if (oSub.HMaterID == 0)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "绗�" + i + "琛岋紝鐗╂枡涓嶈兘涓虹┖";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+
+                //if (oSub.HSourceID == 0)
+                //{
+                //    objJsonResult.code = "0";
+                //    objJsonResult.count = 0;
+                //    objJsonResult.Message = "绗�" + i + "琛岋紝鐢熶骇璧勬簮涓嶈兘涓虹┖";
+                //    objJsonResult.data = null;
+                //    return objJsonResult;
+                //}
+
+                if (oSub.HUnitID == 0)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "绗�" + i + "琛岋紝璁¢噺鍗曚綅涓嶈兘涓虹┖";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+
+                DataSet Cs;
+                Int64 NewHEntryID = 1;
+                Cs = oCN.RunProcReturn("select MAX(HEntryID)HEntryID from Xs_SeOutStockBillSub", "Xs_SeOutStockBillSub");
+                if (Cs.Tables[0].Rows.Count != 0 && ClsPub.isLong(Cs.Tables[0].Rows[0]["HEntryID"].ToString()) != 0)
+                {
+                    NewHEntryID = ClsPub.isLong(Cs.Tables[0].Rows[0]["HEntryID"].ToString());
+                    NewHEntryID += 1;
+                }
+
+                oCN.RunProc($@"Insert into Xs_SeOutStockBillSub 
+                (HInterID,HEntryID,HMaterID,HUnitID,HQty,HPrice,HMoney,HWHID,HSPID,HRemark
+	            ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HSeOrderInterID,HSeOrderEntryID,HSeORderBillNo
+	            ,HOWNERID,HOWNERTYPEID,HSETTLEORGID,HMoveStockQty
+	            ,HRelationQty,HAuxPropID,HBatchNO,HMTONo,HERPInterID,HERPEntryID) 
+                 values({HInterID},{NewHEntryID},{oSub.HMaterID},{oSub.HUnitID},{oSub.HQty}
+                ,{oSub.HPrice},{oSub.HMoney},{oSub.HWHID},{oSub.HSPID},'{oSub.HRemark}',{oSub.HSourceInterID},{oSub.HSourceEntryID},'{oSub.HSourceBillNo}','{oSub.HSourceBillType}',{oSub.HSeOrderInterID},{oSub.HSeOrderEntryID},'{oSub.HSeORderBillNo}',{oSub.HOWNERID},'{oSub.HOWNERTYPEID}',{oSub.HSETTLEORGID},{oSub.HMoveStockQty},{oSub.HRelationQty}
+                ,{oSub.HAuxPropID},'{oSub.HBatchNO}','{oSub.HMTONo}',{oSub.HERPInterID},{oSub.HERPEntryID})");
+            }
+
+            objJsonResult.code = "1";
+            objJsonResult.count = 1;
+            objJsonResult.Message = null;
+            objJsonResult.data = null;
+            return objJsonResult;
+        }
+
+        #endregion
 
         //
     }
diff --git "a/WebAPI/Controllers/\344\273\223\345\255\230\347\256\241\347\220\206/\350\260\203\346\213\250\347\233\230\347\202\271/Kf_MoveStockRequestBillController.cs" "b/WebAPI/Controllers/\344\273\223\345\255\230\347\256\241\347\220\206/\350\260\203\346\213\250\347\233\230\347\202\271/Kf_MoveStockRequestBillController.cs"
index f4c442a..d4c6f2c 100644
--- "a/WebAPI/Controllers/\344\273\223\345\255\230\347\256\241\347\220\206/\350\260\203\346\213\250\347\233\230\347\202\271/Kf_MoveStockRequestBillController.cs"
+++ "b/WebAPI/Controllers/\344\273\223\345\255\230\347\256\241\347\220\206/\350\260\203\346\213\250\347\233\230\347\202\271/Kf_MoveStockRequestBillController.cs"
@@ -1,4 +1,7 @@
-锘縰sing System;
+锘縰sing DBUtility;
+using Model;
+using Newtonsoft.Json.Linq;
+using System;
 using System.Collections.Generic;
 using System.Data;
 using System.Linq;
@@ -59,5 +62,264 @@
             }
         }
         #endregion
+
+        #region 璋冩嫧鍗� 淇濆瓨/缂栬緫鍔熻兘
+        [Route("Kf_MoveStockRequestBill/Kf_MoveStockRequestBillEdit")]
+        [HttpPost]
+        public object MoveStockRequestBillEdit([FromBody] JObject sMainSub)
+        {
+            try
+            {
+                var _value = sMainSub["sMainSub"].ToString();
+                string msg1 = _value.ToString();
+                oCn.BeginTran();
+                //淇濆瓨涓昏〃
+                objJsonResult = AddBillMain(msg1);
+                if (objJsonResult.code == "0")
+                {
+                    oCn.RollBack();
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = objJsonResult.Message;
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+                oCn.Commit();
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "鍗曟嵁淇濆瓨鎴愬姛锛�";
+                objJsonResult.data = null;
+                return objJsonResult;
+
+            }
+            catch (Exception e)
+            {
+                oCn.RollBack();
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        public json AddBillMain(string msg1)
+        {
+            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
+            string msg2 = sArray[0].ToString(); //涓昏〃鏁版嵁
+            string msg3 = sArray[1].ToString(); //瀛愯〃鏁版嵁
+            int OperationType = int.Parse(sArray[2].ToString()); // 鏁版嵁绫诲瀷 1娣诲姞 3淇敼
+            string user = sArray[3].ToString();
+            string msg_allVal = sArray[4].ToString(); //涓昏〃+瀛愯〃鎵�鏈夋暟鎹�
+
+            try
+            {
+                msg2 = "[" + msg2.ToString() + "]";
+                List<ClsKf_MoveStockRequestBillMain> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsKf_MoveStockRequestBillMain>>(msg2);
+
+                long HInterID = mainList[0].HInterID;//閫掑叆type寰楀埌鐨勫崟鎹甀D
+                string HBillNo = mainList[0].HBillNo;//閫掑叆type寰楀埌鐨勫崟鎹彿
+                long HPRDORGID = mainList[0].HPRDORGID;//缁勭粐
+                DateTime HDate = mainList[0].HDate;//鏃ユ湡
+                string HRemark = mainList[0].HRemark;//澶囨敞
+                long HSupID = mainList[0].HSupID;//寰�鏉ュ崟浣�
+                long HEmpID = mainList[0].HEmpID;//涓氬姟鍛�
+                long HDeptID = mainList[0].HDeptID;//閮ㄩ棬
+                long HWHID = mainList[0].HWHID;//璋冨叆浠撳簱
+                long HSCWHID = mainList[0].HSCWHID;//璋冨嚭浠撳簱
+                long HMangerID = mainList[0].HMangerID;//涓荤
+                long HSecManagerID = mainList[0].HSecManagerID;//楠屾敹鍛�
+                long HKeeperID = mainList[0].HKeeperID;//淇濈鍛�
+                string HMaker = user;//鍒跺崟浜�
+                string HExplanation = mainList[0].HExplanation;//鎽樿
+                string HInnerBillNo = mainList[0].HInnerBillNo;//鍐呴儴鍗曟嵁鍙� 
+
+                string HBillType = mainList[0].HBillType;
+                string HBillSubType = mainList[0].HBillSubType;
+                long HBillStatus = mainList[0].HBillStatus;
+                string HMakeDate = mainList[0].HMakeDate;
+                string HChecker = mainList[0].HChecker;
+                string HCheckDate = mainList[0].HCheckDate;
+                string HUpDater = mainList[0].HUpDater;
+                string HUpDateDate = mainList[0].HUpDateDate;
+                string HDeleteMan = mainList[0].HDeleteMan;
+                string HDeleteDate = mainList[0].HDeleteDate;
+                string HCloseMan = mainList[0].HCloseMan;
+                string HCloseDate = mainList[0].HCloseDate;
+                long HERPInterID = mainList[0].HERPInterID;
+                string HERPBillType = mainList[0].HERPBillType;
+                long HSTOCKINORGID = mainList[0].HSTOCKINORGID;
+                long HSTOCKOUTORGID = mainList[0].HSTOCKOUTORGID;
+                string HStockStyle = mainList[0].HStockStyle;
+                string HOWNERTYPEHEADID = mainList[0].HOWNERTYPEHEADID;
+                string HTRANSTYPE = mainList[0].HTRANSTYPE;
+                string HOWNERTYPEINID = mainList[0].HOWNERTYPEINID;
+                string HBUSINESSTYPE = mainList[0].HBUSINESSTYPE;
+
+                ds = oCn.RunProcReturn("select * from h_v_IF_MoveStockRequestBillList where hmainid=" + HInterID + " and 鍗曟嵁鍙�='" + HBillNo + "'", "h_v_IF_MoveStockRequestBillList");
+
+                if ((OperationType == 1 || OperationType == 2) && ds.Tables[0].Rows.Count == 0)//鏂板
+                {
+                    //涓昏〃
+                    oCn.RunProc(@"Insert Into Kf_MoveStockRequestBillMain   
+                        (HInterID,HBillNo,HDate,HBillType,HBillSubType,HBillStatus,HYear,HPeriod
+	                    ,HSupID,HWHID,HSCWHID,HEmpID,HMangerID,HSecManagerID,HKeeperID,HDeptID
+	                    ,HMaker,HMakeDate,HChecker,HCheckDate,HUpDater,HUpDateDate
+	                    ,HDeleteMan,HDeleteDate,HCloseMan,HCloseDate
+	                    ,HRemark,HExplanation,HInnerBillNo,HERPInterID,HERPBillType
+	                    ,HSTOCKINORGID,HSTOCKOUTORGID,HStockStyle
+	                    ,HOWNERTYPEHEADID,HTRANSTYPE,HOWNERTYPEINID,HBUSINESSTYPE)
+                        values(" + HInterID + ",'" + HBillNo + "','" + HDate + "','" + 1243 + "','" +
+                    HBillSubType + "'," + HBillStatus + "," + DateTime.Now.Year + "," + DateTime.Now.Month + "," + HSupID +
+                    "," + HWHID + "," + HSCWHID + "," + HEmpID + "," + HMangerID + "," + HSecManagerID +
+                    "," + HKeeperID + "," + HDeptID + ",'" + HMaker + "','" + HMakeDate + "','" + HChecker + "','" + HCheckDate + "','" +  HUpDater + "','" +
+                    HUpDateDate + "','" + HDeleteMan + "','" + HDeleteDate + "','" + HCloseMan + "','" + HCloseDate + "','"
+                    + HRemark + "','" + HExplanation + "','" + HInnerBillNo + "'," + HERPInterID + ",'" + HERPBillType + "',"
+                    + HSTOCKINORGID + "," + HSTOCKOUTORGID + ",'" + HStockStyle + "','" + HOWNERTYPEHEADID + "','" + HTRANSTYPE + "','"
+                    + HOWNERTYPEINID + "','" + HBUSINESSTYPE + "'" + ")");
+                }
+                else if (OperationType == 3 || ds.Tables[0].Rows.Count != 0)
+                { //淇敼
+                    oCn.RunProc("update Kf_MoveStockRequestBillMain  set " +
+                                "HRemark='" + HRemark + "', HChecker='" + HMaker + "', HCheckDate=getdate()" + "' where HInterID=" + HInterID);
+
+                    //鍒犻櫎瀛愯〃
+                    oCn.RunProc("delete from Kf_MoveStockRequestBillSub where HInterID='" + HInterID + "'");
+                }
+                //淇濆瓨瀛愯〃
+                objJsonResult = AddBillSub(msg3, HInterID, OperationType);
+
+                if (objJsonResult.code == "0")
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = objJsonResult.Message;
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = null;
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "Exception锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        public json AddBillSub(string msg3, long HInterID, int OperationType)
+        {
+            List<ClsKf_MoveStockRequestBillSub> DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsKf_MoveStockRequestBillSub>>(msg3);
+
+            int i = 0;
+            foreach (ClsKf_MoveStockRequestBillSub oSub in DetailColl)
+            {
+                i++;
+                if (oSub.HQty <= 0 || oSub.HQty == null)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "绗�" + i + "琛岋紝鏁伴噺涓嶈兘涓�0鎴栬�呭皬浜�0";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+
+                if (oSub.HMaterID == 0)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "绗�" + i + "琛岋紝鐗╂枡涓嶈兘涓虹┖";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+
+                //if (oSub.HSourceID == 0)
+                //{
+                //    objJsonResult.code = "0";
+                //    objJsonResult.count = 0;
+                //    objJsonResult.Message = "绗�" + i + "琛岋紝鐢熶骇璧勬簮涓嶈兘涓虹┖";
+                //    objJsonResult.data = null;
+                //    return objJsonResult;
+                //}
+
+                if (oSub.HUnitID == 0)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "绗�" + i + "琛岋紝璁¢噺鍗曚綅涓嶈兘涓虹┖";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+
+                DataSet Cs;
+                Int64 NewHEntryID = 1;
+                Cs = oCn.RunProcReturn("select MAX(HEntryID)HEntryID from Kf_MoveStockRequestBillSub", "Kf_MoveStockRequestBillSub");
+                if (Cs.Tables[0].Rows.Count != 0 && ClsPub.isLong(Cs.Tables[0].Rows[0]["HEntryID"].ToString()) != 0)
+                {
+                    NewHEntryID = ClsPub.isLong(Cs.Tables[0].Rows[0]["HEntryID"].ToString());
+                    NewHEntryID += 1;
+                }
+
+                oCn.RunProc($@"Insert into Kf_MoveStockRequestBillSub 
+                (HInterID,HEntryID,HBillNo_bak,HRemark,HMTONo,HPlanMode,HERPInterID,HERPEntryID
+	            ,HMaterID,HUnitID,HSecUnitID,HPropertyID,HAuxPropID,HBatchNO
+	            ,HWHID,HSCWHID,HSPID,HSCSPID
+	            ,HQtyMust,HQty,HRelationQty,HRelationMoney,HSecUnitRate,HPrice,HMoney,HOutPrice,HOutMoney
+	            ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType
+	            ,HICMOInterID,HICMOEntryID,HICMOBillNo,HPOOrderInterID,HPOOrderEntryID,HPOOrderBillNo,HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo
+	            ,HSTOCKORGID,HOWNERID,HOWNERTYPEID,HSTOCKORGINID,HOWNERINID,HOWNERTYPEINID,HPRODUCEDATE,HExpiryDate,HBASEUNITID,HEXTAUXUNITID,HSECQTY) 
+                 values({HInterID},{NewHEntryID},'{oSub.HBillNo_bak}','{oSub.HRemark}','{oSub.HMTONo}'
+                ,'{oSub.HPlanMode}',{oSub.HERPInterID},{oSub.HERPEntryID},{oSub.HMaterID},{oSub.HUnitID},{oSub.HSecUnitID},{oSub.HPropertyID},{oSub.HAuxPropID},'{oSub.HBatchNO}',{oSub.HWHID},{oSub.HSCWHID},{oSub.HSPID},{oSub.HSCSPID},{oSub.HQtyMust},{(oSub.HQty == null ? 0 : oSub.HQty)},{oSub.HRelationQty},{oSub.HRelationMoney},{oSub.HSecUnitRate},{oSub.HPrice},{oSub.HMoney},{oSub.HOutPrice},{oSub.HOutMoney}
+                ,{oSub.HSourceInterID},{oSub.HSourceEntryID},'{oSub.HSourceBillNo}','{oSub.HSourceBillType}',{oSub.HICMOInterID},{oSub.HICMOEntryID},'{oSub.HICMOBillNo}',{oSub.HPOOrderInterID},{oSub.HPOOrderEntryID}
+                ,'{oSub.HPOOrderBillNo}',{oSub.HSeOrderInterID},{oSub.HSeOrderEntryID},'{oSub.HSeOrderBillNo}',{oSub.HSTOCKORGID},{oSub.HOWNERID},'{oSub.HOWNERTYPEID}',{oSub.HSTOCKORGINID},{oSub.HOWNERINID}
+                ,'{oSub.HOWNERTYPEINID}','{oSub.HPRODUCEDATE}','{oSub.HExpiryDate}',{oSub.HBASEUNITID},{oSub.HEXTAUXUNITID},{oSub.HSECQTY})");
+            }
+
+            objJsonResult.code = "1";
+            objJsonResult.count = 1;
+            objJsonResult.Message = null;
+            objJsonResult.data = null;
+            return objJsonResult;
+        }
+
+        #endregion
+
+        /// <summary>
+        ///鍒犻櫎鍔熻兘
+        /// </summary>
+        /// <returns></returns>
+        [Route("Kf_MoveStockRequestBill/DeltetKf_MoveStockRequestBill")]
+        [HttpGet]
+        public object DeltetKf_MoveStockRequestBill(string HInterID)
+        {
+            try
+            {
+                oCn.BeginTran();
+                oCn.RunProc("Delete From Kf_MoveStockRequestBillMain where HInterID = " + HInterID);
+                oCn.RunProc("Delete From Kf_MoveStockRequestBillSub where HInterID = " + HInterID);
+                oCn.Commit();
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "鍒犻櫎鎴愬姛锛�";
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                oCn.RollBack();
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "Exception锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
     }
 }
\ No newline at end of file
diff --git "a/WebAPI/Controllers/\344\273\223\345\255\230\347\256\241\347\220\206/\351\242\206\346\226\231\345\217\221\350\264\247/Kf_StockOutRequestBillController.cs" "b/WebAPI/Controllers/\344\273\223\345\255\230\347\256\241\347\220\206/\351\242\206\346\226\231\345\217\221\350\264\247/Kf_StockOutRequestBillController.cs"
new file mode 100644
index 0000000..28a3b9c
--- /dev/null
+++ "b/WebAPI/Controllers/\344\273\223\345\255\230\347\256\241\347\220\206/\351\242\206\346\226\231\345\217\221\350\264\247/Kf_StockOutRequestBillController.cs"
@@ -0,0 +1,322 @@
+锘縰sing DBUtility;
+using Model;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Web;
+using System.Web.Http;
+using WebAPI.Models;
+
+
+namespace WebAPI.Controllers.浠撳瓨绠$悊.棰嗘枡鍙戣揣
+{
+    public class Kf_StockOutRequestBillController : ApiController
+    {
+        public DBUtility.ClsPub.Enum_BillStatus BillStatus;//鍗曟嵁鐘舵�侊紙鏂板锛屼慨鏀癸紝娴忚锛屾洿鏂板崟浠凤紝鍙樻洿锛�
+        private json objJsonResult = new json();
+        public DataSet ds = new DataSet();
+        public SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
+
+        #region 鍑哄簱鐢宠鍗曞垪琛�
+        [Route("Kf_StockOutRequestBill/GetStockOutRequestBillList")]
+        [HttpGet]
+        public object GetMoveStockRequestBillList(string sWhere, string user)
+        {
+            try
+            {
+                ////鍒ゆ柇鏄惁鏈夋煡璇㈡潈闄�
+                //if (!DBUtility.ClsPub.Security_Log("Kf_MoveStockRequestBill_Query", 1, false, user))
+                //{
+                //    objJsonResult.code = "0";
+                //    objJsonResult.count = 0;
+                //    objJsonResult.Message = "鏃犳潈闄愭煡璇�!";
+                //    objJsonResult.data = null;
+                //    return objJsonResult;
+                //}
+
+                string sql1 = string.Format("select * from h_v_IF_StockOutRequestBillList where 1=1 ");
+                if (sWhere == null || sWhere.Equals(""))
+                {
+                    ds = oCn.RunProcReturn(sql1 + " order by hmainid desc", "h_v_IF_StockOutRequestBillList");
+                }
+                else
+                {
+                    string sql = sql1 + sWhere + " order by hmainid desc";
+                    ds = oCn.RunProcReturn(sql, "h_v_IF_StockOutRequestBillList");
+                }
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "Sucess锛�";
+                objJsonResult.data = ds.Tables[0];
+                return objJsonResult;
+            }
+            catch (Exception ex)
+            {
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "娌℃湁杩斿洖浠讳綍璁板綍锛�" + ex.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+        #endregion
+
+        #region 鍑哄簱鐢宠鍗� 淇濆瓨/缂栬緫鍔熻兘
+        [Route("Kf_StockOutRequestBill/StockOutRequestBillEdit")]
+        [HttpPost]
+        public object StockOutRequestBillEdit([FromBody] JObject sMainSub)
+        {
+            try
+            {
+                var _value = sMainSub["sMainSub"].ToString();
+                string msg1 = _value.ToString();
+                oCn.BeginTran();
+                //淇濆瓨涓昏〃
+                objJsonResult = AddBillMain(msg1);
+                if (objJsonResult.code == "0")
+                {
+                    oCn.RollBack();
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = objJsonResult.Message;
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+                oCn.Commit();
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "鍗曟嵁淇濆瓨鎴愬姛锛�";
+                objJsonResult.data = null;
+                return objJsonResult;
+
+            }
+            catch (Exception e)
+            {
+                oCn.RollBack();
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        public json AddBillMain(string msg1)
+        {
+            string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
+            string msg2 = sArray[0].ToString(); //涓昏〃鏁版嵁
+            string msg3 = sArray[1].ToString(); //瀛愯〃鏁版嵁
+            int OperationType = int.Parse(sArray[2].ToString()); // 鏁版嵁绫诲瀷 1娣诲姞 3淇敼
+            string user = sArray[3].ToString();
+            string msg_allVal = sArray[4].ToString(); //涓昏〃+瀛愯〃鎵�鏈夋暟鎹�
+
+            try
+            {
+                msg2 = "[" + msg2.ToString() + "]";
+                List<ClsKf_StockOutRequestBillMain> mainList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsKf_StockOutRequestBillMain>>(msg2);
+
+                long HInterID = mainList[0].HInterID;//閫掑叆type寰楀埌鐨勫崟鎹甀D
+                string HBillNo = mainList[0].HBillNo;//閫掑叆type寰楀埌鐨勫崟鎹彿
+                long HPRDORGID = mainList[0].HPRDORGID;//缁勭粐
+                DateTime HDate = mainList[0].HDate;//鏃ユ湡
+                string HRemark = mainList[0].HRemark;//澶囨敞
+                long HSupID = mainList[0].HSupID;//寰�鏉ュ崟浣�
+                long HEmpID = mainList[0].HEmpID;//涓氬姟鍛�
+                long HDeptID = mainList[0].HDeptID;//閮ㄩ棬
+                long HWHID = mainList[0].HWHID;//浠撳簱
+                long HMangerID = mainList[0].HMangerID;//涓荤
+                long HSecManagerID = mainList[0].HSecManagerID;//楠屾敹
+                long HKeeperID = mainList[0].HKeeperID;//淇濈鍛�
+                string HMaker = user;//鍒跺崟浜�
+                string HExplanation = mainList[0].HExplanation;//鎽樿
+                string HInnerBillNo = mainList[0].HInnerBillNo;//鍐呴儴鍗曟嵁鍙� 
+
+                string HBillType = mainList[0].HBillType;
+                string HBillSubType = mainList[0].HBillSubType;
+                long HBillStatus = mainList[0].HBillStatus;
+                string HMakeDate = mainList[0].HMakeDate;
+                string HChecker = mainList[0].HChecker;
+                string HCheckDate = mainList[0].HCheckDate;
+                string HUpDater = mainList[0].HUpDater;
+                string HUpDateDate = mainList[0].HUpDateDate;
+                string HDeleteMan = mainList[0].HDeleteMan;
+                string HDeleteDate = mainList[0].HDeleteDate;
+                string HCloseMan = mainList[0].HCloseMan;
+                string HCloseDate = mainList[0].HCloseDate;
+                long HERPInterID = mainList[0].HERPInterID;
+                string HERPBillType = mainList[0].HERPBillType;
+                long HSTOCKORGID = mainList[0].HSTOCKORGID;
+                string HAPPLYTYPE = mainList[0].HAPPLYTYPE;
+                long HOWNERTYPEIDHEAD = mainList[0].HOWNERTYPEIDHEAD;
+                string HBIZTYPE = mainList[0].HBIZTYPE;
+
+                ds = oCn.RunProcReturn("select * from h_v_IF_StockOutRequestBillList where hmainid=" + HInterID + " and 鍗曟嵁鍙�='" + HBillNo + "'", "h_v_IF_StockOutRequestBillList");
+
+                if ((OperationType == 1 || OperationType == 2) && ds.Tables[0].Rows.Count == 0)//鏂板
+                {
+                    //涓昏〃
+                    oCn.RunProc(@"Insert Into Kf_StockOutRequestBillMain   
+                        (HInterID,HBillNo,HDate,HBillType,HBillSubType,HBillStatus,HYear,HPeriod
+	                    ,HSupID,HWHID,HEmpID,HMangerID,HSecManagerID,HKeeperID,HDeptID
+	                    ,HMaker,HMakeDate,HChecker,HCheckDate,HUpDater,HUpDateDate
+	                    ,HDeleteMan,HDeleteDate,HCloseMan,HCloseDate
+	                    ,HRemark,HExplanation,HInnerBillNo,HERPInterID,HERPBillType
+	                    ,HSTOCKORGID,HAPPLYTYPE,HOWNERTYPEIDHEAD,HBIZTYPE)
+                        values(" + HInterID + ",'" + HBillNo + "','" + HDate + "','" + 1242 + "','" +
+                    1242 + "'," + HBillStatus + "," + DateTime.Now.Year + "," + DateTime.Now.Month + "," + HSupID +
+                    "," + HWHID + "," + HEmpID + "," + HMangerID + "," + HSecManagerID + "," + HKeeperID +
+                    "," + HDeptID + ",'" + HMaker + "','" + HMakeDate + "','" + HChecker + "','" + HCheckDate + "','" + HUpDater + "','" +
+                    HUpDateDate + "','" + HDeleteMan + "','" + HDeleteDate + "','" + HCloseMan + "','" + HCloseDate + "','"
+                    + HRemark + "','" + HExplanation + "','" + HInnerBillNo + "'," + HERPInterID + ",'" + HERPBillType + "',"
+                    + HSTOCKORGID + ",'" + HAPPLYTYPE + "'," + HOWNERTYPEIDHEAD + ",'" + HBIZTYPE + "'" + ")");
+                }
+                else if (OperationType == 3 || ds.Tables[0].Rows.Count != 0)
+                { //淇敼
+                    oCn.RunProc("update Kf_StockOutRequestBillMain  set " +
+                                "HRemark='" + HRemark + "', HChecker='" + HMaker + "', HCheckDate=getdate()" + "' where HInterID=" + HInterID);
+
+                    //鍒犻櫎瀛愯〃
+                    oCn.RunProc("delete from Kf_StockOutRequestBillSub where HInterID='" + HInterID + "'");
+                }
+                //淇濆瓨瀛愯〃
+                objJsonResult = AddBillSub(msg3, HInterID, OperationType);
+
+                if (objJsonResult.code == "0")
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = objJsonResult.Message;
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = null;
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "Exception锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+        public json AddBillSub(string msg3, long HInterID, int OperationType)
+        {
+            List<ClsKf_StockOutRequestBillSub> DetailColl = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ClsKf_StockOutRequestBillSub>>(msg3);
+
+            int i = 0;
+            foreach (ClsKf_StockOutRequestBillSub oSub in DetailColl)
+            {
+                i++;
+                if (oSub.HQty <= 0 || oSub.HQty == null)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "绗�" + i + "琛岋紝鏁伴噺涓嶈兘涓�0鎴栬�呭皬浜�0";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+
+                if (oSub.HMaterID == 0)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "绗�" + i + "琛岋紝鐗╂枡涓嶈兘涓虹┖";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+
+                //if (oSub.HSourceID == 0)
+                //{
+                //    objJsonResult.code = "0";
+                //    objJsonResult.count = 0;
+                //    objJsonResult.Message = "绗�" + i + "琛岋紝鐢熶骇璧勬簮涓嶈兘涓虹┖";
+                //    objJsonResult.data = null;
+                //    return objJsonResult;
+                //}
+
+                if (oSub.HUnitID == 0)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "绗�" + i + "琛岋紝璁¢噺鍗曚綅涓嶈兘涓虹┖";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+
+                DataSet Cs;
+                Int64 NewHEntryID = 1;
+                Cs = oCn.RunProcReturn("select MAX(HEntryID)HEntryID from Kf_StockOutRequestBillSub", "Kf_StockOutRequestBillSub");
+                if (Cs.Tables[0].Rows.Count != 0 && ClsPub.isLong(Cs.Tables[0].Rows[0]["HEntryID"].ToString()) != 0)
+                {
+                    NewHEntryID = ClsPub.isLong(Cs.Tables[0].Rows[0]["HEntryID"].ToString());
+                    NewHEntryID += 1;
+                }
+
+                oCn.RunProc($@"Insert into Kf_StockOutRequestBillSub 
+                (HInterID,HEntryID,HBillNo_bak,HRemark,HMTONo,HPlanMode,HERPInterID,HERPEntryID
+	            ,HMaterID,HUnitID,HSecUnitID,HPropertyID,HAuxPropID,HBatchNO,HWHID,HSPID
+	            ,HQtyMust,HQty,HRelationQty,HRelationMoney,HSecUnitRate,HPrice,HMoney
+	            ,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType
+	            ,HICMOInterID,HICMOEntryID,HICMOBillNo,HPOOrderInterID,HPOOrderEntryID,HPOOrderBillNo
+	            ,HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo
+	            ,HSEQ,HSTOCKORGID,HSTOCKSTATUSID,HOWNERTYPEID,HEXTAUXUNITID
+	            ,HOWNERID,HBOMID,HBASEUNITID,HPRODUCEDATE,HEXPIRYDATE) 
+                 values({HInterID},{NewHEntryID},'{oSub.HBillNo_bak}','{oSub.HRemark}','{oSub.HMTONo}'
+                ,'{oSub.HPlanMode}',{oSub.HERPInterID},{oSub.HERPEntryID},{oSub.HMaterID},{oSub.HUnitID},{oSub.HSecUnitID},{oSub.HPropertyID},{oSub.HAuxPropID},'{oSub.HBatchNO}',{oSub.HWHID},{oSub.HSPID},{oSub.HQtyMust},{(oSub.HQty == null ? 0 : oSub.HQty)},{oSub.HRelationQty},{oSub.HRelationMoney},{oSub.HSecUnitRate},{oSub.HPrice},{oSub.HMoney}
+                ,{oSub.HSourceInterID},{oSub.HSourceEntryID},'{oSub.HSourceBillNo}','{oSub.HSourceBillType}',{oSub.HICMOInterID},{oSub.HICMOEntryID},'{oSub.HICMOBillNo}',{oSub.HPOOrderInterID},{oSub.HPOOrderEntryID}
+                ,'{oSub.HPOOrderBillNo}',{oSub.HSeOrderInterID},{oSub.HSeOrderEntryID},'{oSub.HSeOrderBillNo}',{oSub.HSEQ},{oSub.HSTOCKORGID},{oSub.HSTOCKSTATUSID},'{oSub.HOWNERTYPEID}',{oSub.HEXTAUXUNITID},{oSub.HOWNERID}
+                ,{oSub.HBOMID},{oSub.HBASEUNITID},'{oSub.HPRODUCEDATE}','{oSub.HEXPIRYDATE}')");
+            }
+
+            objJsonResult.code = "1";
+            objJsonResult.count = 1;
+            objJsonResult.Message = null;
+            objJsonResult.data = null;
+            return objJsonResult;
+        }
+
+        #endregion
+
+        /// <summary>
+        ///鍒犻櫎鍔熻兘
+        /// </summary>
+        /// <returns></returns>
+        [Route("Kf_StockOutRequestBill/DeltetKf_StockOutRequestBill")]
+        [HttpGet]
+        public object DeltetKf_StockOutRequestBill(string HInterID)
+        {
+            try
+            {
+                oCn.BeginTran();
+                oCn.RunProc("Delete From Kf_StockOutRequestBillMain where HInterID = " + HInterID);
+                oCn.RunProc("Delete From Kf_StockOutRequestBillSub where HInterID = " + HInterID);
+                oCn.Commit();
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "鍒犻櫎鎴愬姛锛�";
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                oCn.RollBack();
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "Exception锛�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+
+    }
+}
\ No newline at end of file
diff --git "a/WebAPI/Controllers/\345\237\272\347\241\200\350\265\204\346\226\231/\345\237\272\347\241\200\350\265\204\346\226\231/Gy_CustLocationController.cs" "b/WebAPI/Controllers/\345\237\272\347\241\200\350\265\204\346\226\231/\345\237\272\347\241\200\350\265\204\346\226\231/Gy_CustLocationController.cs"
index 12c083a..60b9271 100644
--- "a/WebAPI/Controllers/\345\237\272\347\241\200\350\265\204\346\226\231/\345\237\272\347\241\200\350\265\204\346\226\231/Gy_CustLocationController.cs"
+++ "b/WebAPI/Controllers/\345\237\272\347\241\200\350\265\204\346\226\231/\345\237\272\347\241\200\350\265\204\346\226\231/Gy_CustLocationController.cs"
@@ -342,5 +342,55 @@
             }
         }
         #endregion
+
+        #region 浜よ揣鍦扮偣 閲戣澏鍚屾
+        [Route("Gy_CustLocation/SaveGy_CustLocationListApi")]
+        [HttpPost]
+        public object SaveGy_CustLocationListApi([FromBody] JObject msg)
+        {
+            try
+            {
+                var _value = msg["model"].ToString();
+                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
+                ListModels oListModels = new ListModels();
+                List<Model.ClsGy_CustLocation_Model> lsmain = new List<Model.ClsGy_CustLocation_Model>();
+                lsmain = oListModels.getObjectByJson_Gy_CustLocation(_value);
+                string sql = string.Empty;
+                //淇濆瓨
+                oCN.BeginTran();
+                sql = $"delete Gy_CustLocation where HItemID = {lsmain[0].HItemID}";
+                oCN.RunProc(sql);
+                sql = "set identity_insert Gy_CustLocation on";
+                oCN.RunProc(sql);
+
+                oCN.RunProc($@"insert into Gy_CustLocation(HItemID,HNumber,HName ,HShortNumber,HParentID ,HLevel 
+                                ,HEndFla,HStopflag,HRemark ,HHelpCode ,HUseFlag
+                                 ,HMakeTime ,HMakeEmp ,HCheckEmp ,HCheckTime ,HModifyEmp 
+                                 ,HModifyTime ,HStopEmp ,HStopTime ,HUSEORGID,HCREATEORGID)
+                  values({lsmain[0].HItemID},'{lsmain[0].HNumber}','{lsmain[0].HName}','{lsmain[0].HShortNumber}',{lsmain[0].HParentID},{lsmain[0].HLevel}
+           ,{Convert.ToString(lsmain[0].HEndFlag ? 1 : 0)},{Convert.ToString(lsmain[0].HStopflag ? 1 : 0) },'{lsmain[0].HRemark}','{lsmain[0].HHelpCode}','{lsmain[0].HUseFlag}'
+            ,'{lsmain[0].HMakeTime}','{lsmain[0].HMakeEmp}','{lsmain[0].HCheckEmp}','{lsmain[0].HCheckTime}','{lsmain[0].HModifyEmp}'
+            ,'{lsmain[0].HModifyTime}','{lsmain[0].HStopEmp}',null,{lsmain[0].HUSEORGID},{lsmain[0].HCREATEORGID})", ref DBUtility.ClsPub.sExeReturnInfo);
+                //淇敼涓婄骇涓洪潪鏈骇浠g爜
+                sql = "set identity_insert Gy_CustLocation off";
+                oCN.RunProc(sql);
+                oCN.Commit();
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "淇濆瓨鎴愬姛锛�";
+                objJsonResult.data = 1;
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString();
+                objJsonResult.data = 1;
+                return objJsonResult;
+            }
+        }
+        #endregion
     }
 }
\ No newline at end of file
diff --git "a/WebAPI/Controllers/\345\237\272\347\241\200\350\265\204\346\226\231/\345\237\272\347\241\200\350\265\204\346\226\231/Gy_RateTypeController.cs" "b/WebAPI/Controllers/\345\237\272\347\241\200\350\265\204\346\226\231/\345\237\272\347\241\200\350\265\204\346\226\231/Gy_RateTypeController.cs"
index e461863..4a3490c 100644
--- "a/WebAPI/Controllers/\345\237\272\347\241\200\350\265\204\346\226\231/\345\237\272\347\241\200\350\265\204\346\226\231/Gy_RateTypeController.cs"
+++ "b/WebAPI/Controllers/\345\237\272\347\241\200\350\265\204\346\226\231/\345\237\272\347\241\200\350\265\204\346\226\231/Gy_RateTypeController.cs"
@@ -342,5 +342,55 @@
             }
         }
         #endregion
+
+        #region 姹囩巼 閲戣澏鍚屾
+        [Route("Gy_RateType/SaveGy_RateTypeListApi")]
+        [HttpPost]
+        public object SaveGy_RateTypeListApi([FromBody] JObject msg)
+        {
+            try
+            {
+                var _value = msg["model"].ToString();
+                SQLHelper.ClsCN oCN = new SQLHelper.ClsCN();
+                ListModels oListModels = new ListModels();
+                List<Model.ClsGy_RateType_Model> lsmain = new List<Model.ClsGy_RateType_Model>();
+                lsmain = oListModels.getObjectByJson_Gy_RateType(_value);
+                string sql = string.Empty;
+                //淇濆瓨
+                oCN.BeginTran();
+                sql = $"delete Gy_RateType where HItemID = {lsmain[0].HItemID}";
+                oCN.RunProc(sql);
+                sql = "set identity_insert Gy_RateType on";
+                oCN.RunProc(sql);
+
+                oCN.RunProc($@"insert into Gy_RateType(HItemID,HNumber,HName ,HShortNumber,HParentID ,HLevel 
+                                ,HEndFlag,HStopflag,HRemark ,HHelpCode ,HUseFlag
+                                 ,HMakeTime ,HMakeEmp ,HCheckEmp ,HCheckTime ,HModifyEmp 
+                                 ,HModifyTime ,HStopEmp ,HStopTime ,HUSEORGID,HCREATEORGID)
+                  values({lsmain[0].HItemID},'{lsmain[0].HNumber}','{lsmain[0].HName}','{lsmain[0].HShortNumber}',{lsmain[0].HParentID},{lsmain[0].HLevel}
+           ,{Convert.ToString(lsmain[0].HEndFlag ? 1 : 0)},{Convert.ToString(lsmain[0].HStopflag ? 1 : 0) },'{lsmain[0].HRemark}','{lsmain[0].HHelpCode}','{lsmain[0].HUseFlag}'
+            ,'{lsmain[0].HMakeTime}','{lsmain[0].HMakeEmp}','{lsmain[0].HCheckEmp}','{lsmain[0].HCheckTime}','{lsmain[0].HModifyEmp}'
+            ,'{lsmain[0].HModifyTime}','{lsmain[0].HStopEmp}',null,{lsmain[0].HUSEORGID},{lsmain[0].HCREATEORGID})", ref DBUtility.ClsPub.sExeReturnInfo);
+                //淇敼涓婄骇涓洪潪鏈骇浠g爜
+                sql = "set identity_insert Gy_RateType off";
+                oCN.RunProc(sql);
+                oCN.Commit();
+
+                objJsonResult.code = "1";
+                objJsonResult.count = 1;
+                objJsonResult.Message = "淇濆瓨鎴愬姛锛�";
+                objJsonResult.data = 1;
+                return objJsonResult;
+            }
+            catch (Exception e)
+            {
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString();
+                objJsonResult.data = 1;
+                return objJsonResult;
+            }
+        }
+        #endregion
     }
 }
\ No newline at end of file
diff --git "a/WebAPI/Models/\345\237\272\347\241\200\350\265\204\346\226\231/Warehouse.cs" "b/WebAPI/Models/\345\237\272\347\241\200\350\265\204\346\226\231/Warehouse.cs"
index 813b237..f0af683 100644
--- "a/WebAPI/Models/\345\237\272\347\241\200\350\265\204\346\226\231/Warehouse.cs"
+++ "b/WebAPI/Models/\345\237\272\347\241\200\350\265\204\346\226\231/Warehouse.cs"
@@ -16,12 +16,11 @@
         public long HParentID { get; set; }
         public string HRemark { get; set; }
         public string HShortNumber { get; set; }
-        public bool HStopflag { get; set; }
+        public bool HStopFlag { get; set; }
         public string HUseFlag { get; set; }
         public Int64 HEmpID { get; set; }
         public string HAddress { get; set; }
         public string HPhone { get; set; }
-        public bool HIsStockMgr { get; set; }
         public Int64 HSPGroupID { get; set; }
         public string HBarCode { get; set; }
         public Int64 HUSEORGID { get; set; }
diff --git "a/WebAPI/Models/\345\237\272\347\241\200\350\265\204\346\226\231/WorkDay.cs" "b/WebAPI/Models/\345\237\272\347\241\200\350\265\204\346\226\231/WorkDay.cs"
index 36320f9..00eb1e4 100644
--- "a/WebAPI/Models/\345\237\272\347\241\200\350\265\204\346\226\231/WorkDay.cs"
+++ "b/WebAPI/Models/\345\237\272\347\241\200\350\265\204\346\226\231/WorkDay.cs"
@@ -15,5 +15,9 @@
         public DateTime HNoonbreakEnd { get; set; }
         public DateTime HNightbreakBegin { get; set; }
         public DateTime HNightbreakEnd { get; set; }
+        public DateTime HNoonbreakBegin2 { get; set; }
+        public DateTime HNoonbreakEnd2 { get; set; }
+        public DateTime HNightbreakBegin2 { get; set; }
+        public DateTime HNightbreakEnd2 { get; set; }
     }
 }
\ No newline at end of file
diff --git a/WebAPI/WebAPI.csproj b/WebAPI/WebAPI.csproj
index 79619d3..e8bc19a 100644
--- a/WebAPI/WebAPI.csproj
+++ b/WebAPI/WebAPI.csproj
@@ -441,6 +441,7 @@
     <Compile Include="Controllers\浠撳瓨绠$悊\璋冩嫧鐩樼偣\Kf_MoveStockRequestBillController.cs" />
     <Compile Include="Controllers\浠撳瓨绠$悊\棰嗘枡鍙戣揣\apiController.cs" />
     <Compile Include="Controllers\浠撳瓨绠$悊\棰嗘枡鍙戣揣\Kf_StepFoldOutBillController.cs" />
+    <Compile Include="Controllers\浠撳瓨绠$悊\棰嗘枡鍙戣揣\Kf_StockOutRequestBillController.cs" />
     <Compile Include="Controllers\浠撳瓨绠$悊\楠屾敹鍏ュ簱\Kf_StepFoldinBillController.cs" />
     <Compile Include="Controllers\鍗氭棩鑷姩鎵爜绾縗ScanlineAPIController.cs" />
     <Compile Include="Controllers\鍩虹璧勬枡\鍩虹璧勬枡\Gy_COMMONCONTACTBillController.cs" />
@@ -911,6 +912,7 @@
     <Folder Include="Views\KF_PonderationBill\" />
     <Folder Include="Views\kf_StepFoldinBill\" />
     <Folder Include="Views\Kf_StepFoldOutBill\" />
+    <Folder Include="Views\Kf_StockOutRequestBill\" />
     <Folder Include="Views\Mes_OrderProcFlowAllReport\" />
     <Folder Include="Views\MoveStockBill\" />
     <Folder Include="Views\Pay_Report\" />
diff --git a/WebAPI/WebAPI.csproj.user b/WebAPI/WebAPI.csproj.user
index b5bf336..d152f2c 100644
--- a/WebAPI/WebAPI.csproj.user
+++ b/WebAPI/WebAPI.csproj.user
@@ -18,7 +18,7 @@
     <IISExpressWindowsAuthentication />
     <IISExpressUseClassicPipelineMode />
     <UseGlobalApplicationHostFile />
-    <ProjectView>ShowAllFiles</ProjectView>
+    <ProjectView>ProjectFiles</ProjectView>
     <Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>
     <Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath>
   </PropertyGroup>
diff --git "a/WorkM/\346\212\245\350\241\250\345\210\206\346\236\220/Sc_WorkShopReport.cs" "b/WorkM/\346\212\245\350\241\250\345\210\206\346\236\220/Sc_WorkShopReport.cs"
index 2ddd55c..8d13608 100644
--- "a/WorkM/\346\212\245\350\241\250\345\210\206\346\236\220/Sc_WorkShopReport.cs"
+++ "b/WorkM/\346\212\245\350\241\250\345\210\206\346\236\220/Sc_WorkShopReport.cs"
@@ -166,8 +166,8 @@
             {
                 sDlgWhere = sDlgWhere.Substring(1, sDlgWhere.Length - 1);
             }
-            //
-            DSet = SubCn.RunProcReturn("exec h_p_CJKB" + sDlgWhere, "Gy_Czygl");
+
+            DSet = SubCn.RunProcReturn("exec h_p_CJKB " + sDlgWhere, "h_p_CJKB");
             //鐢熸垚棣栬鏍囬
             if (DSet == null)
             {
@@ -176,33 +176,21 @@
             }
             //
             grdMain.DataSource = DSet.Tables[0].DefaultView;
-            //鑾峰彇鍔ㄦ�佸垪 锛堢墿鏂欎俊鎭級
 
-            //DsHead = SubCn.RunProcReturn("exec h_p_Sc_GetProcExchReportHead " + sDlgWhere, "Gy_Czygl");
-
-            //for (int a = 0; a < DsHead.Tables[0].Rows.Count; a++)
-            //{
-            //    if (ClsPub.isLong(DsHead.Tables[0].Rows[a]["HMaterID"]) != 0)
-            //    {
-            //        grdMain.Columns.Add(ClsPub.isStrNull(DsHead.Tables[0].Rows[a]["HMaterID"]), ClsPub.isStrNull(DsHead.Tables[0].Rows[a]["HName"]));
-            //        grdMain.Columns[BCol].Tag = ClsPub.isLong(DsHead.Tables[0].Rows[a]["HMaterID"]);
-            //        BCol = BCol + 1;
-            //    }
-            //}
             BCol = 7;
             //鑾峰彇鍔ㄦ�佸唴瀹�  锛堟暟閲忎俊鎭級
-            for (int row = 0; row <= grdMain.RowCount - 1; row++)
-            {
-                for (int col = BCol; col <= grdMain.ColumnCount - 1; col++)
-                {
-                    HDeptID = DBUtility.ClsPub.isLong(grdMain.Rows[row].Cells[Fun_GetCol("HDeptID")].Value);
-                    DsQty = SubCn.RunProcReturn("exec h_p_CJKB '" +  HDeptID.ToString(), "Gy_Czygl");
-                    if (DsQty != null && DsQty.Tables[0].Rows.Count > 0)
-                    {
-                        grdMain.Rows[row].Cells[col].Value = DBUtility.ClsPub.isDoule(DsQty.Tables[0].Rows[0]["HQty"], 2);
-                    }
-                }
-            }
+            //for (int row = 0; row <= grdMain.RowCount - 1; row++)
+            //{
+            //    for (int col = BCol; col <= grdMain.ColumnCount - 1; col++)
+            //    {
+            //        //HDeptID = DBUtility.ClsPub.isLong(grdMain.Rows[row].Cells[Fun_GetCol("HDeptID")].Value);
+            //        DsQty = SubCn.RunProcReturn("exec h_p_CJKB " + 0, "h_p_CJKB");
+            //        if (DsQty != null && DsQty.Tables[0].Rows.Count > 0)
+            //        {
+            //            grdMain.Rows[row].Cells[col].Value = DBUtility.ClsPub.isDoule(DsQty.Tables[0].Rows[0]["HQty"], 2);
+            //        }
+            //    }
+            //}
 
             //璁剧疆鍚堣鍒�
             string sTotalCol = "";

--
Gitblit v1.9.1