From cd1c62ccfd8cf9c582686b6aec02d394a9f4528e Mon Sep 17 00:00:00 2001
From: yusijie <ysj@hz-kingdee.com>
Date: 星期日, 29 六月 2025 19:00:15 +0800
Subject: [PATCH] 保存送货单方法外取消事务;生成送货单前校验完善实物回滚;验证采购订单方法添加防死锁;采购订单列表分页查询;物料标准包装模块;

---
 WebAPI/Controllers/POInStockController.cs |  640 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 488 insertions(+), 152 deletions(-)

diff --git a/WebAPI/Controllers/POInStockController.cs b/WebAPI/Controllers/POInStockController.cs
index c220110..3e2bb42 100644
--- a/WebAPI/Controllers/POInStockController.cs
+++ b/WebAPI/Controllers/POInStockController.cs
@@ -37,7 +37,7 @@
         {
             try
             {
-                SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM();
+                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                 //鍐欏叆 System_Log 鎿嶄綔鏃ュ織琛�
                 WebAPIController.Add_Log("閫佽揣鍗曟墦鍗�", CurUserName, "閫佽揣鍗曟墦鍗�");
                 oCn.RunProc("exec H_p_SRM_POInStockBill_PrintQty " + msg.ToString());
@@ -68,6 +68,8 @@
             try
             {
                 DataSet ds = new DataSet();
+                DataSet da = new DataSet();
+                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                 if (DBUtility.ClsPub.isLong(sMsg) == 0)
                 {
                     objjson.code = "0";
@@ -85,20 +87,35 @@
                     return objjson;
                 }
                 string HBillNo, HInnerBillNo, HDate;
+                string HInterID = "-1";
                 HBillNo = DBUtility.ClsPub.CreateBillCode_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo, true);
                 HInnerBillNo = DBUtility.ClsPub.CreateBillCode_SRMProd("777", ref DBUtility.ClsPub.sExeReturnInfo, true);//閫佽揣鍗曞彿
                 HDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd"));
+
+                da = oCn.RunProcReturn("exec h_p_Xt_GetMaxBillID '" + 1103 + "'", "h_p_Xt_GetMaxBillID");
+                if (da == null || da.Tables[0].Rows.Count == 0)
+                {
+                    HInterID = "1";
+                }
+                else
+                {
+                    HInterID = ClsPub.isStrNull(da.Tables[0].Rows[0]["HBillNo"]);
+                }
+
+                //HInterID = DBUtility.ClsPub.CreateBillID_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo);
                 //鍒涘缓涓存椂琛�
                 DataTable dt = new DataTable();
                 //鍒涘缓琛ㄤ腑鐨勫垪
                 dt.Columns.Add("HBillNo", typeof(string));//娣诲姞鍒�
                 dt.Columns.Add("HInnerBillNo", typeof(string));//娣诲姞鍒�
                 dt.Columns.Add("HDate", typeof(string));//娣诲姞鍒�
+                dt.Columns.Add("HInterID", typeof(string));//娣诲姞鍒�
                 DataRow row = dt.NewRow();
                 //缁欏垪璧嬪��
                 row["HBillNo"] = HBillNo;
                 row["HInnerBillNo"] = HInnerBillNo;
                 row["HDate"] = HDate;
+                row["HInterID"] = HInterID;
                 //鎶婃湁鍊肩殑鍒楁坊鍔犲埌琛�
                 dt.Rows.Add(row);
                 //鎶婅〃娣诲姞鍒癲ataset
@@ -256,7 +273,7 @@
             try
             {
                 string sql = $"update銆�Cg_POInStockBillMain銆� set  HDeliveryNo ='{HDeliveryNo}' where HInterID in ({HmainId})";
-                SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM();
+                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                 oCn.RunProc(sql);
 
                 objJsonResult.code = "1";
@@ -283,13 +300,19 @@
         [HttpPost]
         public object SaverPOInStock([FromBody] JObject msg)
         {
-            SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM();
+            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
             var _value = msg["msg"].ToString();
             string msg1 = _value.ToString();
             string[] sArray = msg1.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
             string msg2 = sArray[0].ToString();
             string msg3 = sArray[1].ToString();
             string UserName = "";
+            string HOpType = "";
+            if (sArray.Length > 2)
+            {
+                HOpType = sArray[2].ToString();
+            }
+           
             ListModels oListModels = new ListModels();
             try
             {
@@ -300,9 +323,11 @@
                 msg2 = msg2.Replace("\\", "");
                 msg2 = msg2.Replace("\n", "");  //\n
                 lsmain = oListModels.getObjectByJson_POInStockMain(msg2);
+
+                /*  娣诲姞缂栬緫鍔熻兘鍚庡睆钄�
                 string billno = lsmain[0].HBillNo;
                 string yzsql = $"select count(*) as rows from Cg_POInStockBillMain where HBillNo = '{billno}'";
-                DataTable yzdt = oCn.RunProcReturn(yzsql, "yzds").Tables[0];
+                DataTable yzdt = oCn.RunProcReturn(yzsql, "yzds").Tables[0]; 
                 if (Convert.ToInt32(yzdt.Rows[0][0]) > 0)
                 {
                     objJsonResult.code = "0";
@@ -311,6 +336,8 @@
                     objJsonResult.data = 1;
                     return objJsonResult;
                 }
+                */
+
                 //鏍规嵁鏀舵枡閫氱煡鍗曞彿鏍¢獙鏄惁宸茬敓鎴�
                 //string jysql = $"select * from ":
                 foreach (Model.ClsCg_POInStockBillMain oItem in lsmain)
@@ -323,7 +350,7 @@
                     oItem.HCurID = 1;
                     oItem.HExRate = 1;
                     oItem.HMainSourceInterID = oItem.HInterID;
-                    oItem.HInterID = 0;
+                    //oItem.HInterID = 0;
                     //oItem.HInterID = DBUtility.ClsPub.CreateBillID_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo);
                     if (FCusName.Contains("瀹夌憺")) //绯荤粺鍙傛暟  瀹㈡埛瀹氬埗鍖栧悕绉�     绌虹櫧涓洪�氱敤
                     {
@@ -359,43 +386,45 @@
                 int i = 0;
                 foreach (Model.ClsCg_POInStockBillSub oItemSub in ls)
                 {
-                    if (FCusName.Contains("鍑礉濂堢壒")) //绯荤粺鍙傛暟  瀹㈡埛瀹氬埗鍖栧悕绉�     绌虹櫧涓洪�氱敤
-                    {
-                        if (oItemSub.HBatChNo.Length != 8 || Regex.IsMatch(oItemSub.HBatChNo, @"^[0-9]+$") == false)
-                        {
-                            objJsonResult.code = "0";
-                            objJsonResult.count = 0;
-                            objJsonResult.Message = "淇濆瓨澶辫触锛佺" + i.ToString() + "琛� 鐢熶骇鏃ユ湡D/C 鏍煎紡閿欒鏃犳硶淇濆瓨锛佹纭牸寮忎负8浣嶆暟鐨勭函鏁板瓧鏃ユ湡";
-                            objJsonResult.data = 1;
-                            return objJsonResult;
-                        }
-                       
-                        //鑾峰彇骞存湀鏃�
-                        string year = oItemSub.HBatChNo.Substring(0, 4);
-                        string month = oItemSub.HBatChNo.Substring(4, 2);
-                        string day = oItemSub.HBatChNo.Substring(6, 2);
+                    //if (FCusName.Contains("鍑礉濂堢壒")) //绯荤粺鍙傛暟  瀹㈡埛瀹氬埗鍖栧悕绉�     绌虹櫧涓洪�氱敤
+                    //{
+                    //    if (oItemSub.HBatChNo.Length != 8 || Regex.IsMatch(oItemSub.HBatChNo, @"^[0-9]+$") == false)
+                    //    {
+                    //        objJsonResult.code = "0";
+                    //        objJsonResult.count = 0;
+                    //        objJsonResult.Message = "淇濆瓨澶辫触锛佺" + i.ToString() + "琛� 鐢熶骇鏃ユ湡D/C 鏍煎紡閿欒鏃犳硶淇濆瓨锛佹纭牸寮忎负8浣嶆暟鐨勭函鏁板瓧鏃ユ湡";
+                    //        objJsonResult.data = 1;
+                    //        return objJsonResult;
+                    //    }
 
-                        //楠岃瘉鍚堟硶鎬�
-                        if (Convert.ToInt32(year) < 1900 || Convert.ToInt32(year) > 2100)
-                        {
-                            objJsonResult.code = "0";
-                            objJsonResult.count = 0;
-                            objJsonResult.Message = "淇濆瓨澶辫触锛佺" + i.ToString() + "琛� 鐢熶骇鏃ユ湡D/C 鏃ユ湡涓嶅悎娉曟棤娉曚繚瀛橈紒姝g‘鏍煎紡涓�8浣嶆暟鐨勭函鏁板瓧鏃ユ湡";
-                            objJsonResult.data = 1;
-                            return objJsonResult;
-                        }
-                        if (Convert.ToInt32(month) > 12 || Convert.ToInt32(day) > 31)
-                        {
-                            objJsonResult.code = "0";
-                            objJsonResult.count = 0;
-                            objJsonResult.Message = "淇濆瓨澶辫触锛佺" + i.ToString() + "琛� 鐢熶骇鏃ユ湡D/C 鏃ユ湡涓嶅悎娉曟棤娉曚繚瀛橈紒";
-                            objJsonResult.data = 1;
-                            return objJsonResult;
-                        }
+                    //    //鑾峰彇骞存湀鏃�
+                    //    string year = oItemSub.HBatChNo.Substring(0, 4);
+                    //    string month = oItemSub.HBatChNo.Substring(4, 2);
+                    //    string day = oItemSub.HBatChNo.Substring(6, 2);
 
-                }
-                //鍒ゆ柇閲囪喘璁㈠崟鐘舵�� 
-                objJsonResult = TestPOOrder(oItemSub.HPOOrderEntryID.ToString());
+                    //    //楠岃瘉鍚堟硶鎬�
+                    //    if (Convert.ToInt32(year) < 1900 || Convert.ToInt32(year) > 2100)
+                    //    {
+                    //        objJsonResult.code = "0";
+                    //        objJsonResult.count = 0;
+                    //        objJsonResult.Message = "淇濆瓨澶辫触锛佺" + i.ToString() + "琛� 鐢熶骇鏃ユ湡D/C 鏃ユ湡涓嶅悎娉曟棤娉曚繚瀛橈紒姝g‘鏍煎紡涓�8浣嶆暟鐨勭函鏁板瓧鏃ユ湡";
+                    //        objJsonResult.data = 1;
+                    //        return objJsonResult;
+                    //    }
+                    //    if (Convert.ToInt32(month) > 12 || Convert.ToInt32(day) > 31)
+                    //    {
+                    //        objJsonResult.code = "0";
+                    //        objJsonResult.count = 0;
+                    //        objJsonResult.Message = "淇濆瓨澶辫触锛佺" + i.ToString() + "琛� 鐢熶骇鏃ユ湡D/C 鏃ユ湡涓嶅悎娉曟棤娉曚繚瀛橈紒";
+                    //        objJsonResult.data = 1;
+                    //        return objJsonResult;
+                    //    }
+
+                    //}
+                    
+                    //鍒ゆ柇閲囪喘璁㈠崟鐘舵�� 
+                    objJsonResult = TestPOOrder(oItemSub.HPOOrderEntryID.ToString());
+
                     if (objJsonResult.code == "0")
                         return objJsonResult;
                     //澧炲姞鍒ゆ柇 閫佽揣鏁伴噺瓒呭嚭閲囪喘璁㈠崟鏁伴噺
@@ -427,16 +456,21 @@
                 //淇濆瓨
                 //淇濆瓨瀹屾瘯鍚庡鐞�
                 bool bResult;
-                if (oBill.omodel.HInterID == 0)
-                {
-                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
-                }
-                else
+
+                //oCn.BeginTran(); //寮�濮嬩簨鐗�
+
+                if (HOpType.ToString() == "edit"/*oBill.omodel.HInterID != 0 && oBill.omodel.HInterID.ToString() != null && oBill.omodel.HInterID.ToString() != "undefined"*/)
                 {
                     bResult = oBill.ModifyBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo);
                 }
+                else
+                {
+                    bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo);
+                }
                 if (bResult)
                 {
+                    //oCn.Commit(); //鎻愪氦浜嬬墿
+
                     objJsonResult.code = "0";
                     objJsonResult.count = 1;
                     objJsonResult.Message = "淇濆瓨鎴愬姛锛�";
@@ -446,6 +480,8 @@
                 }
                 else
                 {
+                    //oCn.RollBack(); //鍥炴粴浜嬬墿
+
                     objJsonResult.code = "0";
                     objJsonResult.count = 0;
                     objJsonResult.Message = "淇濆瓨澶辫触锛�" + DBUtility.ClsPub.sExeReturnInfo;
@@ -455,6 +491,7 @@
             }
             catch (Exception e)
             {
+                //oCn.RollBack(); //鍥炴粴浜嬬墿
                 objJsonResult.code = "0";
                 objJsonResult.count = 0;
                 objJsonResult.Message = "淇濆瓨澶辫触锛�" + e.ToString();
@@ -475,17 +512,17 @@
         //閫佽揣鍗曞垪琛�
         public object GetPOInStockBill([FromBody] JObject msg)
         {
-            string HSupNo = msg["HSupNo"].ToString(); string sqlWhere = msg["sqlWhere"].ToString();
+            string HSupIDs = msg["HSupIDs"].ToString(); string sqlWhere = msg["sqlWhere"].ToString();
             try
             {
                 Stopwatch sw = new Stopwatch();
                 sw.Start();//寮�濮嬭鏃�
                 string VsWhere = "";
                 string PcWhere = "";
-                SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM();
+                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                 DataSet ds;
                 //鍏朵粬杩囨护
-                string sql = " Where hsupid in (select HSupID from h_v_Gy_UserSupplierList where 鐢ㄦ埛 =^^" + HSupNo.Trim() + "^^) " + sqlWhere;
+                string sql = " Where hsupid in (" + HSupIDs.Trim() + ")" + sqlWhere;
                 //杞崲鐗规畩瀛楃
                 if (Common.SQLtoChange(sql, ref VsWhere, ref PcWhere) == false)
                 {
@@ -496,7 +533,7 @@
                     return objjson;
                 }
                 //鑾峰彇鎬昏鏁�
-                Int64 RowTotal = Common.GetRowTotal("H_v_SRM_POInStockBillList", VsWhere, ref DBUtility.ClsPub.sExeReturnInfo);
+                //Int64 RowTotal = Common.GetRowTotal("H_v_SRM_POInStockBillList", VsWhere, ref DBUtility.ClsPub.sExeReturnInfo);
                 //鑾峰彇杩斿洖鏁版嵁
                 ds = oCn.RunProcReturn("exec H_p_SRM_POInStockBillList '" + PcWhere + "'", "H_p_SRM_POInStockBillList");
 
@@ -639,9 +676,9 @@
         public object AuditPOInStockBill(string HInterID, string CurUserName, string HBillNo)
         {
             json objjson = new json();
+            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
             try
-            {
-                SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM();
+            {                
                 //閲囪喘璁㈠崟 鐢熸垚閫佽揣鍗曞垪琛�
                 if (!String.IsNullOrEmpty(HBillNo))
                     HInterID = GetHinterIDByBillNo(HBillNo, "Aduit").ToString();
@@ -662,36 +699,73 @@
                 //var HValue = oCn.RunProcReturn(parameterSql, "dt").Tables[0].Rows[0][0].ToString();
                 string HValue = "Y";
                 string CustomFields = "";//鑷畾涔夊瓧娈�
+
+                oCn.BeginTran(); //寮�濮嬩簨鐗�
+
                 if (HValue == "Y")
                 {
-                    if (FCusName == "澶忓疂鐢靛櫒")
+                    //==================================== Begin 閫佽揣鍗曞鏍稿墠鎺у埗 Begin ====================================
+                    DataSet ds;
+
+                    string[] sArray = HInterID.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
+
+                    for (int i = 0; i < sArray.Length; i++)
                     {
-                        sql = string.Format(@"
-SELECT T3.FNAME AS FTYPENAME,M.HBILLNO,B.HINTERID,B.HENTRYID,C.FID,C.FENTRYID, D.FBILLNO,B.HQTY,CD.FRECEIVEORGID,CDOO.FNUMBER AS FRECEIVENUMBER
-,D.FSUPPLIERID,DS.FNUMBER AS FSUPPLIERNUMBER,D.FPURCHASEORGID,DOO.FNUMBER AS FPURCHASEORGNUMBER,CROO.FNUMBER  AS FSETTLEORGNUMBER,
-E.FPRICETIMEPOINT,E.FSETTLECURRID,EC.FNUMBER AS FSETTLECURRNUMBER,C.FMATERIALID,CM.FNUMBER AS FMATERIALNUMBER ,C.FUNITID 
-,CU.FNUMBER AS FUNITNUMBER,D.F_XBKF_COMBO1,CR.FPRICE,CR.FTAXPRICE,CR.FTAXRATE,D.FPURCHASERID,isnull(T4.FNUMBER,'') AS FPURCHASERNUMBER,D.F_XBKF_BASE1,isnull(T5.FNUMBER,'') AS FRECEIVEMENNUMBER
-FROM CG_POINSTOCKBILLSUB B  
-JOIN CG_POINSTOCKBILLMAIN M ON B.HINTERID = M.HINTERID
-JOIN {0}..T_PUR_POORDERENTRY C ON B.HSOURCEINTERID = C.FID AND B.HSOURCEENTRYID = C.FENTRYID
-LEFT JOIN {0}..T_BD_MATERIAL CM ON C.FMATERIALID =CM.FMATERIALID
-LEFT JOIN {0}..T_BD_UNIT CU ON C.FUNITID =CU.FUNITID
-JOIN {0}..T_PUR_POORDERENTRY_D CD ON    C.FENTRYID = CD.FENTRYID
-LEFT JOIN {0}..T_ORG_ORGANIZATIONS CDOO ON CD.FRECEIVEORGID = CDOO.FORGID
-JOIN {0}..T_PUR_POORDERENTRY_F CR ON    C.FENTRYID = CR.FENTRYID
-LEFT JOIN {0}..T_ORG_ORGANIZATIONS CROO ON CR.FSETTLEORGID = CROO.FORGID
-LEFT JOIN {0}..T_PUR_POORDER D ON C.FID =D.FID
-LEFT JOIN {0}..T_BAS_BILLTYPE T2 ON D.FBILLTYPEID = T2.FBILLTYPEID
-LEFT JOIN {0}..T_BAS_BILLTYPE_L T3 ON T2.FBILLTYPEID = T3.FBILLTYPEID and FLOCALEID = 2052
-LEFT JOIN  {0}..V_BD_BUYER T4 ON D.FPURCHASERID =T4.FID
-LEFT JOIN  {0}..T_HR_EMPINFO T5 ON D.F_XBKF_BASE1 = T5.FID
-LEFT JOIN {0}..T_BD_SUPPLIER DS ON D.FSUPPLIERID = DS.FSUPPLIERID
-LEFT JOIN {0}..T_ORG_ORGANIZATIONS DOO ON D.FPURCHASEORGID = DOO.FORGID
-JOIN {0}..T_PUR_POORDERFIN E ON C.FID =E.FID
-LEFT JOIN {0}..T_BD_CURRENCY EC ON E. FSETTLECURRID =EC.FCURRENCYID  
- WHERE b.hinterid in ({1}) and M.HERPInterID = 0
-", kdTbaleName, HInterID);
+                        ds = oCn.RunProcReturn("exec h_p_SRM_Cg_POInStockBill_BeforeCheckCtrl " + sArray[i] + ",'" + HBillNo + "','" + CurUserName + "'", "h_p_SRM_Cg_POInStockBill_BeforeCheckCtrl");
+                        if (ds == null)
+                        {
+                            oCn.RollBack(); //鍥炴粴浜嬬墿
+                            objjson.code = "0";
+                            objjson.count = 0;
+                            objjson.Message = "瀹℃牳鍓嶅垽鏂け璐ワ紒鏃犳暟鎹繑鍥�";
+                            objjson.data = null;
+                            return objjson;
+                        }
+                        if (DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBack"]) != "0")
+                        {
+                            oCn.RollBack(); //鍥炴粴浜嬬墿
+                            objjson.code = "0";
+                            objjson.count = 0;
+                            objjson.Message = "瀹℃牳澶辫触锛�" + DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemarkBack"]);
+                            objjson.data = null;
+                            return objjson;
+                        }
+                    }
+                    
+                    //====================================== End 閫佽揣鍗曞鏍稿墠鎺у埗 End ======================================
+                    if (FCusName == "澶忓疂鐢靛櫒")
+                    {                      
+//                        sql = string.Format(@"
+//SELECT T3.FNAME AS FTYPENAME,M.HBILLNO,B.HINTERID,B.HENTRYID,C.FID,C.FENTRYID, D.FBILLNO,B.HQTY,CD.FRECEIVEORGID,CDOO.FNUMBER AS FRECEIVENUMBER
+//,D.FSUPPLIERID,DS.FNUMBER AS FSUPPLIERNUMBER,D.FPURCHASEORGID,DOO.FNUMBER AS FPURCHASEORGNUMBER,CROO.FNUMBER  AS FSETTLEORGNUMBER,
+//E.FPRICETIMEPOINT,E.FSETTLECURRID,EC.FNUMBER AS FSETTLECURRNUMBER,C.FMATERIALID,CM.FNUMBER AS FMATERIALNUMBER ,C.FUNITID 
+//,CU.FNUMBER AS FUNITNUMBER,D.F_XBKF_COMBO1,CR.FPRICE,CR.FTAXPRICE,CR.FTAXRATE,D.FPURCHASERID,isnull(T4.FNUMBER,'') AS FPURCHASERNUMBER,D.F_XBKF_BASE1,isnull(T5.FNUMBER,'') AS FRECEIVEMENNUMBER
+//,C.FGiveAway AS FGiveAway
+//FROM CG_POINSTOCKBILLSUB B  
+//JOIN CG_POINSTOCKBILLMAIN M ON B.HINTERID = M.HINTERID
+//JOIN {0}.T_PUR_POORDERENTRY C ON B.HSOURCEINTERID = C.FID AND B.HSOURCEENTRYID = C.FENTRYID
+//LEFT JOIN {0}.T_BD_MATERIAL CM ON C.FMATERIALID =CM.FMATERIALID
+//LEFT JOIN {0}.T_BD_UNIT CU ON C.FUNITID =CU.FUNITID
+//JOIN {0}.T_PUR_POORDERENTRY_D CD ON    C.FENTRYID = CD.FENTRYID
+//LEFT JOIN {0}.T_ORG_ORGANIZATIONS CDOO ON CD.FRECEIVEORGID = CDOO.FORGID
+//JOIN {0}.T_PUR_POORDERENTRY_F CR ON    C.FENTRYID = CR.FENTRYID
+//LEFT JOIN {0}.T_ORG_ORGANIZATIONS CROO ON CR.FSETTLEORGID = CROO.FORGID
+//LEFT JOIN {0}.T_PUR_POORDER D ON C.FID =D.FID
+//LEFT JOIN {0}.h_v_T_BAS_BILLTYPE T2 ON D.FBILLTYPEID = T2.FBILLTYPEID
+//LEFT JOIN {0}.T_BAS_BILLTYPE_L T3 ON T2.FBILLTYPEID = T3.FBILLTYPEID and FLOCALEID = 2052
+//LEFT JOIN  {0}.V_BD_BUYER T4 ON D.FPURCHASERID =T4.FID
+//LEFT JOIN  {0}.T_HR_EMPINFO T5 ON D.F_XBKF_BASE1 = T5.FID
+//LEFT JOIN {0}.T_BD_SUPPLIER DS ON D.FSUPPLIERID = DS.FSUPPLIERID
+//LEFT JOIN {0}.T_ORG_ORGANIZATIONS DOO ON D.FPURCHASEORGID = DOO.FORGID
+//JOIN {0}.T_PUR_POORDERFIN E ON C.FID =E.FID
+//LEFT JOIN {0}.T_BD_CURRENCY EC ON E. FSETTLECURRID =EC.FCURRENCYID  
+// WHERE b.hinterid in ({1}) and M.HERPInterID = 0
+//", kdTbaleName, HInterID);
+//                        dt = oCn.RunProcReturn(sql, "sltz").Tables[0];
+
+                        sql = string.Format($"exec h_p_Cg_POInStock_GetInfoToERP '{HInterID}'");
                         dt = oCn.RunProcReturn(sql, "sltz").Tables[0];
+
                         if (dt.Rows.Count > 0)
                         {
                             foreach (DataRow dr in dt.Rows)
@@ -749,6 +823,7 @@
                                     FentityModel.Add("FPrice", item["FPRICE"].ToString());//鍗曚环
                                     FentityModel.Add("FTaxPrice", item["FTAXPRICE"].ToString());//鍚◣鍗曚环
                                     FentityModel.Add("FEntryTaxRate", item["FTAXRATE"].ToString());//绋庣巼
+                                    FentityModel.Add("FGiveAway", item["FGiveAway"].ToString());//鏄惁璧犲搧
 
                                     JArray Fentity2 = new JArray();
                                     JObject FentityModel2 = new JObject();
@@ -828,7 +903,8 @@
 E.FPRICETIMEPOINT,E.FSETTLECURRID,EC.FNUMBER AS FSETTLECURRNUMBER,C.FMATERIALID,CM.FNUMBER AS FMATERIALNUMBER ,C.FUNITID 
 ,CU.FNUMBER AS FUNITNUMBER,CR.FPRICE,CR.FTAXPRICE,CR.FTAXRATE,D.FPURCHASERID,isnull(T4.FNUMBER,'') AS FPURCHASERNUMBER
 ,B.HExpressNumberSub,B.HExpressSupplierSub,B.HRemark,B.HPlanArrivalDate,B.HBoxNumber,B.HBatChNo,D.FBILLTYPEID 
-,isnull(VW.FNUMBER,'') AS FReceiverNUMBER
+,isnull(VW.FNUMBER,'') AS FReceiverNUMBER,isnull(B.HKFDate,'') As FProduceDate,B.HTAXPRICE_T AS F_AAAA_PRICE1
+,C.FGiveAway AS FGiveAway
 FROM CG_POINSTOCKBILLSUB B  
 JOIN CG_POINSTOCKBILLMAIN M ON B.HINTERID = M.HINTERID
 JOIN {0}..T_PUR_POORDERENTRY C ON B.HSOURCEINTERID = C.FID AND B.HSOURCEENTRYID = C.FENTRYID
@@ -895,6 +971,11 @@
                                     //3鍘�
                                     if (dr["FBILLTYPEID"].ToString() == "83d822ca3e374b4ab01e5dd46a0062bd")
                                     {
+                                        fTypeName = "SLD10_SYS";
+                                    }
+                                    //鏍囧噯閲囪喘璁㈠崟
+                                    if (dr["FBILLTYPEID"].ToString() == "65a5124e3be263")
+                                    {
                                         fTypeName = "SLD01_SYS";
                                     }
                                     model.Add("FReceiverId", new JObject() { ["Fnumber"] = dr["FReceiverNUMBER"].ToString() }); //鏀舵枡鍛�
@@ -928,18 +1009,20 @@
                                     FentityModel.Add("FSRCENTRYID", item["FENTRYID"].ToString());//婧愬崟鍒嗗綍鍐呯爜
                                     FentityModel.Add("FORDERBILLNO", item["FBILLNO"].ToString());//婧愬崟鍗曞彿
                                     FentityModel.Add("FPOORDERENTRYID", item["FENTRYID"].ToString());//婧愬崟鍒嗗綍鍐呯爜
-                                    FentityModel.Add("FSRMENTRYID", item["HENTRYID"].ToString());//SRM hentryid
-                                    FentityModel.Add("FPrice", item["FPRICE"].ToString());//鍗曚环
-                                    FentityModel.Add("FTaxPrice", item["FTAXPRICE"].ToString());//鍚◣鍗曚环
-                                    FentityModel.Add("FEntryTaxRate", item["FTAXRATE"].ToString());//绋庣巼
+                                    FentityModel.Add("FSRMENTRYID", item["HENTRYID"].ToString());//SRM hentryid                                    
                                     FentityModel.Add("FLot", new JObject() { ["Fnumber"] = item["HBatChNo"].ToString() }); // 鎵瑰彿   
+                                    FentityModel.Add("FProduceDate", item["FProduceDate"].ToString());//鐢熶骇鏃ユ湡
+                                    FentityModel.Add("F_aaaa_Price1", item["F_aaaa_Price1"].ToString());//鍚◣閲嶉噺鍗曚环/鍚�
 
                                     FentityModel.Add("F_bsv_Text1", item["HExpressSupplierSub"].ToString());//鐗╂祦鍗曚綅 (鐟炵惇)
                                     FentityModel.Add("F_bsv_Text2", item["HExpressNumberSub"].ToString());//鐗╂祦鍗曞彿 (鐟炵惇)
                                     FentityModel.Add("FDescription", item["HRemark"].ToString());//琛ㄤ綋澶囨敞 (鐟炵惇)
                                     FentityModel.Add("F_bsv_dhrq", item["HPlanArrivalDate"].ToString());//鍒拌揣鏃ユ湡 (鐟炵惇)
                                     FentityModel.Add("F_bsv_xh", item["HBoxNumber"].ToString());//绠卞彿 (鐟炵惇)
-
+                                    FentityModel.Add("FPrice", item["FPRICE"].ToString());//鍗曚环
+                                    FentityModel.Add("FTaxPrice", item["FTAXPRICE"].ToString());//鍚◣鍗曚环
+                                    FentityModel.Add("FEntryTaxRate", item["FTAXRATE"].ToString());//绋庣巼
+                                    FentityModel.Add("FGiveAway", item["FGiveAway"].ToString());//鏄惁璧犲搧
                                     JArray Fentity2 = new JArray();
                                     JObject FentityModel2 = new JObject();
                                     FentityModel2.Add("FDetailEntity_Link_FRULEID", "PUR_PurchaseOrder-PUR_ReceiveBill");
@@ -1016,31 +1099,37 @@
                     }
                     else
                     {                        
-                        sql = string.Format(@"
-SELECT T3.FNAME AS FTYPENAME,M.HBILLNO,B.HINTERID,B.HENTRYID,C.FID,C.FENTRYID, D.FBILLNO,B.HQTY,CD.FRECEIVEORGID,CDOO.FNUMBER AS FRECEIVENUMBER
-,D.FSUPPLIERID,DS.FNUMBER AS FSUPPLIERNUMBER,D.FPURCHASEORGID,DOO.FNUMBER AS FPURCHASEORGNUMBER,CROO.FNUMBER  AS FSETTLEORGNUMBER,
-E.FPRICETIMEPOINT,E.FSETTLECURRID,EC.FNUMBER AS FSETTLECURRNUMBER,C.FMATERIALID,CM.FNUMBER AS FMATERIALNUMBER ,C.FUNITID 
-,CU.FNUMBER AS FUNITNUMBER,CR.FPRICE,CR.FTAXPRICE,CR.FTAXRATE,D.FPURCHASERID,isnull(T4.FNUMBER,'') AS FPURCHASERNUMBER
-,B.HExpressNumberSub,B.HExpressSupplierSub,B.HRemark,B.HPlanArrivalDate,B.HBoxNumber,B.HBatChNo,D.FBILLTYPEID 
-FROM CG_POINSTOCKBILLSUB B  
-JOIN CG_POINSTOCKBILLMAIN M ON B.HINTERID = M.HINTERID
-JOIN {0}..T_PUR_POORDERENTRY C ON B.HSOURCEINTERID = C.FID AND B.HSOURCEENTRYID = C.FENTRYID
-LEFT JOIN {0}..T_BD_MATERIAL CM ON C.FMATERIALID =CM.FMATERIALID
-LEFT JOIN {0}..T_BD_UNIT CU ON C.FUNITID =CU.FUNITID
-JOIN {0}..T_PUR_POORDERENTRY_D CD ON    C.FENTRYID = CD.FENTRYID
-LEFT JOIN {0}..T_ORG_ORGANIZATIONS CDOO ON CD.FRECEIVEORGID = CDOO.FORGID
-JOIN {0}..T_PUR_POORDERENTRY_F CR ON    C.FENTRYID = CR.FENTRYID
-LEFT JOIN {0}..T_ORG_ORGANIZATIONS CROO ON CR.FSETTLEORGID = CROO.FORGID
-LEFT JOIN {0}..T_PUR_POORDER D ON C.FID =D.FID
-LEFT JOIN {0}..T_BAS_BILLTYPE T2 ON D.FBILLTYPEID = T2.FBILLTYPEID
-LEFT JOIN {0}..T_BAS_BILLTYPE_L T3 ON T2.FBILLTYPEID = T3.FBILLTYPEID and FLOCALEID = 2052
-LEFT JOIN  {0}..V_BD_BUYER T4 ON D.FPURCHASERID =T4.FID
-LEFT JOIN {0}..T_BD_SUPPLIER DS ON D.FSUPPLIERID = DS.FSUPPLIERID
-LEFT JOIN {0}..T_ORG_ORGANIZATIONS DOO ON D.FPURCHASEORGID = DOO.FORGID
-JOIN {0}..T_PUR_POORDERFIN E ON C.FID =E.FID
-LEFT JOIN {0}..T_BD_CURRENCY EC ON E. FSETTLECURRID =EC.FCURRENCYID  
- WHERE b.hinterid in ({1}) and M.HERPInterID = 0
-", kdTbaleName, HInterID, CustomFields);
+//                        sql = string.Format(@"
+//SELECT T3.FNAME AS FTYPENAME,M.HBILLNO,B.HINTERID,B.HENTRYID,C.FID,C.FENTRYID, D.FBILLNO,B.HQTY,CD.FRECEIVEORGID,CDOO.FNUMBER AS FRECEIVENUMBER
+//,D.FSUPPLIERID,DS.FNUMBER AS FSUPPLIERNUMBER,D.FPURCHASEORGID,DOO.FNUMBER AS FPURCHASEORGNUMBER,CROO.FNUMBER  AS FSETTLEORGNUMBER,
+//E.FPRICETIMEPOINT,E.FSETTLECURRID,EC.FNUMBER AS FSETTLECURRNUMBER,C.FMATERIALID,CM.FNUMBER AS FMATERIALNUMBER ,C.FUNITID 
+//,CU.FNUMBER AS FUNITNUMBER,CR.FPRICE,CR.FTAXPRICE,CR.FTAXRATE,D.FPURCHASERID,isnull(T4.FNUMBER,'') AS FPURCHASERNUMBER
+//,B.HExpressNumberSub,B.HExpressSupplierSub,case when B.HRemark = 'CLOUD瀵煎叆' then '' else B.HRemark end HRemark,B.HPlanArrivalDate,B.HBoxNumber,B.HBatChNo,D.FBILLTYPEID 
+//,CU2.FNUMBER AS FPRICEUNITNUMBER 
+//,C.FGiveAway AS FGiveAway
+//FROM CG_POINSTOCKBILLSUB B  
+//JOIN CG_POINSTOCKBILLMAIN M ON B.HINTERID = M.HINTERID
+//JOIN {0}..T_PUR_POORDERENTRY C ON B.HSOURCEINTERID = C.FID AND B.HSOURCEENTRYID = C.FENTRYID
+//LEFT JOIN {0}..T_BD_MATERIAL CM ON C.FMATERIALID =CM.FMATERIALID
+//LEFT JOIN {0}..T_BD_UNIT CU ON C.FUNITID =CU.FUNITID
+//JOIN {0}..T_PUR_POORDERENTRY_D CD ON    C.FENTRYID = CD.FENTRYID
+//LEFT JOIN {0}..T_ORG_ORGANIZATIONS CDOO ON CD.FRECEIVEORGID = CDOO.FORGID
+//JOIN {0}..T_PUR_POORDERENTRY_F CR ON    C.FENTRYID = CR.FENTRYID
+//LEFT JOIN {0}..T_ORG_ORGANIZATIONS CROO ON CR.FSETTLEORGID = CROO.FORGID
+//LEFT JOIN {0}..T_PUR_POORDER D ON C.FID =D.FID
+//LEFT JOIN {0}..T_BAS_BILLTYPE T2 ON D.FBILLTYPEID = T2.FBILLTYPEID
+//LEFT JOIN {0}..T_BAS_BILLTYPE_L T3 ON T2.FBILLTYPEID = T3.FBILLTYPEID and FLOCALEID = 2052
+//LEFT JOIN  {0}..V_BD_BUYER T4 ON D.FPURCHASERID =T4.FID
+//LEFT JOIN {0}..T_BD_SUPPLIER DS ON D.FSUPPLIERID = DS.FSUPPLIERID
+//LEFT JOIN {0}..T_ORG_ORGANIZATIONS DOO ON D.FPURCHASEORGID = DOO.FORGID
+//JOIN {0}..T_PUR_POORDERFIN E ON C.FID =E.FID
+//LEFT JOIN {0}..T_BD_CURRENCY EC ON E. FSETTLECURRID =EC.FCURRENCYID  
+//LEFT JOIN {0}..T_PUR_POORDERENTRY_F CF ON C.FID = CF.FID AND C.FENTRYID = CF.FENTRYID
+//LEFT JOIN {0}..T_BD_UNIT CU2 ON CF.FPRICEUNITID =CU2.FUNITID
+// WHERE b.hinterid in ({1}) and M.HERPInterID = 0
+//", kdTbaleName, HInterID, CustomFields);
+
+                        sql = string.Format($"exec h_p_Cg_POInStock_GetInfoToERP '{HInterID}'");
                         dt = oCn.RunProcReturn(sql, "sltz").Tables[0];
                         if (dt.Rows.Count > 0)
                         {
@@ -1108,9 +1197,16 @@
 
                                     FentityModel.Add("F_bsv_Text1", item["HExpressSupplierSub"].ToString());//鐗╂祦鍗曚綅 (鐟炵惇)
                                     FentityModel.Add("F_bsv_Text2", item["HExpressNumberSub"].ToString());//鐗╂祦鍗曞彿 (鐟炵惇)
-                                    FentityModel.Add("FDescription", item["HRemark"].ToString());//琛ㄤ綋澶囨敞 (鐟炵惇)
+                                    FentityModel.Add("FDescription", item["HRemark"].ToString());//琛ㄤ綋鎻忚堪 (鐟炵惇)
+
+                                    if (FCusName == "娣诲悍绉戞妧")
+                                    {
+                                        FentityModel.Add("F_RXSD_TEXT_QTR", item["HPOOREntryRemark"].ToString());//琛ㄤ綋澶囨敞
+                                    }
+                                    
                                     FentityModel.Add("F_bsv_dhrq", item["HPlanArrivalDate"].ToString());//鍒拌揣鏃ユ湡 (鐟炵惇)
                                     FentityModel.Add("F_bsv_xh", item["HBoxNumber"].ToString());//绠卞彿 (鐟炵惇)
+                                    FentityModel.Add("FGiveAway", item["FGiveAway"].ToString());//鏄惁璧犲搧
 
                                     JArray Fentity2 = new JArray();
                                     JObject FentityModel2 = new JObject();
@@ -1149,12 +1245,13 @@
                                     objjson.data = null;
                                     return objjson;
                                 }
-                                //LogService.Write("jsonRoot:" + jsonRoot.ToString());
+                                LogService.Write("jsonRoot:" + jsonRoot.ToString());
                                 var result = InvokeHelper.Save("PUR_ReceiveBill", jsonRoot.ToString());                               
 
                                 //LogService.Write(result);
                                 if (JObject.Parse(result)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() == "TRUE")
                                 {
+                                    LogService.Write("SRM-鏀舵枡閫氱煡鍗曞鏍稿け璐SON锛�" + jsonRoot.ToString());
                                     //鏇存柊閫佽揣鍗� 涓昏〃 ERP鍗曟嵁鍙� 浠ュ強 ERP涓诲唴鐜�
                                     string FBillNo = JObject.Parse(result)["Result"]["Number"].ToString();
                                     string FID = JObject.Parse(result)["Result"]["Id"].ToString();
@@ -1172,6 +1269,8 @@
                                 }
                                 else
                                 {
+                                    LogService.Write("SRM-鏀舵枡閫氱煡鍗曞鏍稿け璐SON锛�" + jsonRoot.ToString() );
+
                                     objjson.code = "0";
                                     objjson.count = 0;
                                     objjson.Message = result;
@@ -1186,7 +1285,30 @@
                             LogService.Write("鏀舵枡閫氱煡鍗曞鏍告棤鏁版嵁锛�" + sql);
                         }
                     }
-
+                    //==================================== Begin 閫佽揣鍗曞鏍稿悗鎺у埗 Begin ====================================
+                    for (int i = 0; i < sArray.Length; i++)
+                    {
+                        ds = oCn.RunProcReturn("exec h_p_SRM_Cg_POInStockBill_AfterCheckCtrl " + sArray[i] + ",'" + HBillNo + "','" + CurUserName + "'", "h_p_SRM_Cg_POInStockBill_AfterCheckCtrl");
+                        if (ds == null)
+                        {
+                            oCn.RollBack(); //鍥炴粴浜嬬墿
+                            objjson.code = "0";
+                            objjson.count = 0;
+                            objjson.Message = "瀹℃牳鍚庡垽鏂け璐ワ紒鏃犳暟鎹繑鍥�";
+                            objjson.data = null;
+                            return objjson;
+                        }
+                        if (DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBack"]) != "0")
+                        {
+                            oCn.RollBack(); //鍥炴粴浜嬬墿
+                            objjson.code = "0";
+                            objjson.count = 0;
+                            objjson.Message = "瀹℃牳澶辫触锛�" + DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemarkBack"]);
+                            objjson.data = null;
+                            return objjson;
+                        }
+                    }                    
+                    //====================================== End 閫佽揣鍗曞鏍稿悗鎺у埗 End ======================================
                 }
 
                 ////鏇存柊鐗╂祦瀛楁 锛堢憺涓庣惇锛�
@@ -1199,6 +1321,9 @@
 HCheckDate   = getdate()
 where HInterID in ({1})", CurUserName, HInterID);
                 oCn.RunProc(sql);
+
+                oCn.Commit(); //鎻愪氦浜嬬墿
+
                 objjson.code = "1";
                 objjson.count = 1;
                 objjson.Message = "鎿嶄綔鎴愬姛";
@@ -1207,7 +1332,7 @@
             }
             catch (Exception ex)
             {
-
+                oCn.RollBack(); //鍥炴粴浜嬬墿
                 objjson.code = "0";
                 objjson.count = 0;
                 objjson.Message = "鎿嶄綔澶辫触" + ex.Message.ToString();
@@ -1235,9 +1360,46 @@
             objjson.data = HinterID;
             return objjson;
         }
+
+        [Route("DeAuditPOInStockBill")]
+        [HttpGet]
+        public object DeAuditPOInStockBill(string HInterID,string HBillNo, string CurUserName)
+        {
+            json objjson = new json();
+            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
+
+            //==================================== Begin 鍙嶅鏍搁�佽揣鍗� Begin ====================================
+            DataSet ds;
+
+            ds = oCn.RunProcReturn("exec h_p_SRM_Cg_POInStockBill_DeAudit " + HInterID + ",'" + HBillNo + "','" + CurUserName + "'", "h_p_SRM_Cg_POInStockBill_DeAudit");
+            if (ds == null)
+            {
+                objjson.code = "0";
+                objjson.count = 0;
+                objjson.Message = "鍙嶅鏍稿墠鍒ゆ柇澶辫触锛佹棤鏁版嵁杩斿洖";
+                objjson.data = null;
+                return objjson;
+            }
+            if (DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBack"]) != "0")
+            {
+                objjson.code = "0";
+                objjson.count = 0;
+                objjson.Message = "鍙嶅鏍稿け璐ワ紒" + DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemarkBack"]);
+                objjson.data = null;
+                return objjson;
+            }
+            //====================================== End 鍙嶅鏍搁�佽揣鍗� End ======================================
+
+            objjson.code = "1";
+            objjson.count = 1;
+            objjson.Message = "鎿嶄綔鎴愬姛";
+            objjson.data = "";
+            return objjson;
+        }
+
         public int GetHinterIDByBillNo(string HBillNo, string type)
         {
-            SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM();
+            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
             int HInterID = 0;
             string sql = "select HInterID from CG_POINSTOCKBILLMAIN where HBILLNO = '" + HBillNo + "'";
             //if (type == "Print")
@@ -1255,8 +1417,43 @@
             try
             {
                 DAL.ClsCg_POInStockBill oBill = new DAL.ClsCg_POInStockBill();
-                //鍏堝垹闄� 閲戣澏鏁版嵁
-                objjson = DeleteKingDee(HInterID);
+                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
+                //鑾峰彇瀹㈡埛鍚嶇О
+                string FCusName = oSystemParameter.GetSingleSystemParameter("WMS_CampanyName", ref DBUtility.ClsPub.sExeReturnInfo);
+                //澶忓疂闇�瑕佸厛鍦ㄩ噾铦跺垹闄ゆ敹鏂欓�氱煡鍗曞悗鎵嶈兘鍦ㄤ緵搴斿晢鍗忓悓骞冲彴鍒犻櫎閫佽揣鍗�
+                if (FCusName == "澶忓疂鐢靛櫒" || FCusName == "娣诲悍绉戞妧")
+                {
+                    string sqlBeforeDel = $"exec h_p_SRM_POInStockBeforeDelCtrl " + HInterID;
+
+                    DataSet ds = oCn.RunProcReturn(sqlBeforeDel, "h_p_SRM_POInStockBeforeDelCtrl");
+
+                    if (ds == null || ds.Tables[0].Rows.Count <= 0)
+                    {
+                        objJsonResult.code = "0";
+                        objJsonResult.count = 0;
+                        objJsonResult.Message = "鍒犻櫎閫佽揣鍗曞彂鐢熷紓甯革紝娌℃湁浠讳綍杩斿洖璁板綍锛�";
+                        objJsonResult.data = null;
+                        return objJsonResult;
+                    }
+                    else
+                    {
+                        if (ds.Tables[0].Rows[0]["HBackCount"].ToString() == "1")
+                        {
+                            objJsonResult.code = "0";
+                            objJsonResult.count = 0;
+                            objJsonResult.Message = ds.Tables[0].Rows[0]["HRemarkBack"].ToString();
+                            objJsonResult.data = null;
+                            return objJsonResult;
+                        }
+                    }
+                }
+                else
+                {
+                    //鍏堝垹闄� 閲戣澏鏁版嵁
+                    objjson = DeleteKingDee(HInterID);
+                }
+
+               
                 //LogService.Write(objjson.ToString());
                 if (objjson.code == "0")
                     return objjson;
@@ -1423,9 +1620,12 @@
         /// <returns></returns>
         public object TestSaverPOInStock(string ids, string entryids)
         {
+            //List<string> mylist = new List<string>(ids.Split(','));//.Distinct()
+            //List<string> entryList = new List<string>(entryids.Split(','));//.Distinct()
+
             List<string> mylist = new List<string>(ids.Split(',').Distinct());
             List<string> entryList = new List<string>(entryids.Split(',').Distinct());
-            SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM();
+            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
             string FCusName = oSystemParameter.GetSingleSystemParameter("WMS_CampanyName", ref DBUtility.ClsPub.sExeReturnInfo);
             if (FCusName == "澶忓疂鐢靛櫒" && mylist.Count > 1)
             {
@@ -1437,35 +1637,76 @@
             }
             try
             {
+                DataSet ds2;
+                oCn.BeginTran(); //寮�濮嬩簨鐗�
+
                 //閲囪喘璁㈠崟涓嬫帹鐢熸垚閫佽揣鍗� 鏃跺�� 鍒ゆ柇鏄惁鏈夌敓鎴愰噰璐鍗曞彉鏇村崟 濡傛灉鏈変笖鍙樻洿鍗曠姸鎬佷笉涓哄凡瀹℃牳 闄愬埗涓嬫帹
                 objJsonResult = TestPOOrder(entryids);
                 if (objJsonResult.code == "0")
                     return objJsonResult;
 
+                //if (mylist.Count != entryList.Count)
+                //{
+                //    objJsonResult.code = "0";
+                //    objJsonResult.count = 0;
+                //    objJsonResult.Message = "涓诲唴鐮佷笌瀛愬唴鐮佹暟閲忎笉涓�鑷达紒";
+                //    objJsonResult.data = null;
+                //    return objJsonResult;
+                //}
+                for (int i = 0;i < mylist.Count;i++)
+                {
+                    //閲囪喘璁㈠崟涓嬫帹鐢熸垚閫佽揣鍗曞墠鎺у埗
+                    string sql = "exec h_p_SRM_POOrderBill_BeforePushDownCtrl " + mylist[i] + "," + entryList[i];
+                    ds2 = oCn.RunProcReturn(sql, "h_p_SRM_POOrderBill_BeforePushDownCtrl");
+
+                    if (DBUtility.ClsPub.isStrNull(ds2.Tables[0].Rows[0]["HBack"]) != "0")
+                    {
+                        LogService.Write("閫佽揣鏁伴噺鍚屾杩涘叆鍥炴粴");
+                        oCn.RollBack(); //鍥炴粴浜嬬墿
+                        objjson.code = "0";
+                        objjson.count = 0;
+                        objjson.Message = "瀹℃牳鍓嶅垽鏂け璐ワ紒" + DBUtility.ClsPub.isStrNull(ds2.Tables[0].Rows[0]["HRemarkBack"]);
+                        objjson.data = null;
+                        return objjson;
+                    }
+                }
+               
                 for (int i = 0; i < mylist.Count; i++)
                 {
                     //鏇存柊鍏宠仈鏁伴噺
                     var HinterID = mylist[i].ToString();
                     var HEntryID = entryList[i].ToString();
+                    LogService.Write("閫佽揣鏁伴噺鍚屾锛� exec h_p_SRM_UpDatePPBomRelationQty" + HinterID + "," + HEntryID);
                     oCn.RunProc($"exec h_p_SRM_UpDatePPBomRelationQty {HinterID},{HEntryID},{i+1}");
                 }
 
                 //鍒ゆ柇鏈叧鑱旀暟閲忔槸鍚︿负0
-                //瀹夌憺锛欰IS20220914133941   鐟炰笌鐞細AIS20220308151944  鏈湴锛欰IS20210811135644  澶忓疂锛欰IS20211130140219  鍑礉锛欰IS20210820164804
-                DataSet ds = oCn.RunProcReturn($"select T1.hqty-T1.hrelationqty+q.FMRBQTY as hqty,鍗曟嵁鍙�,鐗╂枡缂栫爜 from H_v_SRM_POOrderBillList t1 left join AIS20210820164804..T_PUR_POORDERENTRY_R q on q.FENTRYID=t1.HEntryID  where hentryid in ({string.Join(", ", entryList)}) ", "H_v_SRM_POOrderBillList");
+                //瀹夌憺锛欰IS20220914133941   鐟炰笌鐞細AIS20220308151944  鏈湴锛欰IS20210811135644  澶忓疂锛歴rv_lnk.AIS20211130140219.dbo.  鍑礉锛欰IS20210820164804 娣诲悍锛欰IS20240809105013
+                //DataSet ds = oCn.RunProcReturn($"select T1.hqty-T1.hrelationqty+q.FMRBQTY as hqty,q.FRemainReceiveQty as 鍓╀綑鏀舵枡鏁伴噺,T1.hrelationqty as 宸插彂璐ф暟閲�,T1.hqty as 璁㈠崟鏁伴噺,鍗曟嵁鍙�,鐗╂枡缂栫爜 from H_v_SRM_POOrderBillList t1 left join AIS20210811135644..T_PUR_POORDERENTRY_R q on q.FENTRYID=t1.HEntryID  where hentryid in ({string.Join(", ", entryList)})", "H_v_SRM_POOrderBillList");
+
+                var kdTbaleName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DataBaseName");
+
+                string sql2 = string.Format(@"select T1.hqty - T1.hrelationqty + q.FMRBQTY as hqty, q.FRemainReceiveQty as 鍓╀綑鏀舵枡鏁伴噺, T1.hrelationqty as 宸插彂璐ф暟閲�, T1.hqty as 璁㈠崟鏁伴噺, 鍗曟嵁鍙�, 鐗╂枡缂栫爜 from H_v_SRM_POOrderBillList_JY t1 left join {0}.T_PUR_POORDERENTRY_R q with(nolock) on q.FENTRYID = t1.HEntryID  where hentryid in ({1})", kdTbaleName, string.Join(", ", entryList));
+
+                DataSet ds = oCn.RunProcReturn(sql2, "H_v_SRM_POOrderBillList");
+
                 DataTable dt = ds.Tables[0];
                 if (dt.Rows.Count > 0)
                 {
                     DataRow[] dr = dt.Select("hqty  <=" + 0);
                     if (dr.Count() > 0)
                     {
+                        oCn.RollBack();//鍥炴粴浜嬪姟
                         objJsonResult.code = "0";
                         objJsonResult.count = 0;
-                        objJsonResult.Message = $"璇锋鏌ユ暟鎹紝鍗曟嵁鍙凤細{dr[0]["鍗曟嵁鍙�"]},鐗╂枡缂栫爜锛歿dr[0]["鐗╂枡缂栫爜"]},鍙互鍙戣揣鏁伴噺涓�0锛屽凡鍏ㄩ儴鐢熸垚閫佽揣鍗曪紒";
+                        objJsonResult.Message = $"璇锋鏌ユ暟鎹紝鍗曟嵁鍙凤細{dr[0]["鍗曟嵁鍙�"]},鐗╂枡缂栫爜锛歿dr[0]["鐗╂枡缂栫爜"]},鍙互鍙戣揣鏁伴噺涓�0锛屽凡鍏ㄩ儴鐢熸垚閫佽揣鍗曪紒,璁㈠崟鏁伴噺锛歿Convert.ToDouble(dr[0]["璁㈠崟鏁伴噺"]).ToString("f2")},宸插彂璐ф暟閲忥細{Convert.ToDouble(dr[0]["宸插彂璐ф暟閲�"]).ToString("f2")},鍓╀綑鏀舵枡鏁伴噺锛歿Convert.ToDouble(dr[0]["鍓╀綑鏀舵枡鏁伴噺"]).ToString("f2")}";
                         objJsonResult.data = null;
                         return objJsonResult;
                     }
                 }
+
+                oCn.Commit(); //鎻愪氦浜嬬墿
+
                 objJsonResult.code = "1";
                 objJsonResult.count = 1;
                 objJsonResult.Message = "鎿嶄綔鎴愬姛!";
@@ -1489,20 +1730,39 @@
         /// <returns></returns>
         public JsonResult TestPOOrder(string entryids)
         {
-            SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM();
+            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();            
             try
             {
+                //鑾峰彇绯荤粺鍙傛暟--瀹㈡埛鍚嶇О
+                string FCusName = oSystemParameter.GetSingleSystemParameter("WMS_CampanyName", ref DBUtility.ClsPub.sExeReturnInfo);
                 var kdTbaleName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DataBaseName");
+                string sql = "";
                 //楠岃瘉閲戣澏閲囪喘璁㈠崟鏄惁瀛樺湪
-                string sql = string.Format(@"
-select M.HBillNo,B.HMaterID,E.HNumber,E.HName 
-FROM Cg_POOrderBillSub B  
-JOIN Cg_POOrderBillMAIN M ON B.HINTERID = M.HINTERID
-JOIN Gy_Material E ON B.HMaterID = E.HItemID
-LEFT JOIN {1}..T_PUR_POORDERENTRY C ON B.HInterID = C.FID AND B.HEntryID = C.FENTRYID
-WHERE ISNULL(C.FENTRYID,0) = 0
-AND B.HEntryID in ({0})"
-        , entryids, kdTbaleName);
+                if (FCusName == "澶忓疂鐢靛櫒")
+                {
+                    sql = string.Format(@"
+                    select M.HBillNo,B.HMaterID,E.HNumber,E.HName 
+                    FROM Cg_POOrderBillSub B with(nolock)
+                    JOIN Cg_POOrderBillMAIN M with(nolock) ON B.HINTERID = M.HINTERID
+                    JOIN Gy_Material E with(nolock) ON B.HMaterID = E.HItemID
+                    LEFT JOIN {1}.T_PUR_POORDERENTRY C with(nolock) ON B.HInterID = C.FID AND B.HEntryID = C.FENTRYID
+                    WHERE ISNULL(C.FENTRYID,0) = 0
+                    AND B.HEntryID in ({0})"
+                            , entryids, kdTbaleName);
+                }
+                else
+                {
+                    sql = string.Format(@"
+                    select M.HBillNo,B.HMaterID,E.HNumber,E.HName 
+                    FROM Cg_POOrderBillSub B with(nolock) 
+                    JOIN Cg_POOrderBillMAIN M with(nolock) ON B.HINTERID = M.HINTERID
+                    JOIN Gy_Material E with(nolock) ON B.HMaterID = E.HItemID
+                    LEFT JOIN {1}..T_PUR_POORDERENTRY C with(nolock) ON B.HInterID = C.FID AND B.HEntryID = C.FENTRYID
+                    WHERE ISNULL(C.FENTRYID,0) = 0
+                    AND B.HEntryID in ({0})"
+                            , entryids, kdTbaleName);
+                }
+                
                 DataSet ds = oCn.RunProcReturn(sql, "temp");
                 if (ds.Tables[0].Rows.Count > 0)
                 {
@@ -1513,18 +1773,37 @@
                     return objJsonResult;
                 }
 
+
                 //閲囪喘璁㈠崟涓嬫帹鐢熸垚閫佽揣鍗� 鏃跺�� 鍒ゆ柇鏄惁鏈夌敓鎴愰噰璐鍗曞彉鏇村崟 濡傛灉鏈変笖鍙樻洿鍗曠姸鎬佷笉涓哄凡瀹℃牳 闄愬埗涓嬫帹
-                sql = string.Format(@"
-select M.HBillNo,B.HMaterID,E.HNumber,E.HName,F.FBILLNO
-FROM Cg_POOrderBillSub B  
-JOIN Cg_POOrderBillMAIN M ON B.HINTERID = M.HINTERID
-JOIN Gy_Material E ON B.HMaterID = E.HItemID
-JOIN {1}..T_PUR_POORDERENTRY C ON B.HInterID = C.FID AND B.HEntryID = C.FENTRYID
-LEFT join {1}..T_PUR_POCHANGEENTRY D ON C.FENTRYID = D.FOFENTRYID
-LEFT join {1}..T_PUR_POCHANGE F ON D.FID = F.FID   
-where b.HEntryID in ({0}) 
-and F.FDOCUMENTSTATUS <> 'C'"
-        , entryids, kdTbaleName);
+                if (FCusName == "澶忓疂鐢靛櫒")
+                {
+                    sql = string.Format(@"
+                    select M.HBillNo,B.HMaterID,E.HNumber,E.HName,F.FBILLNO
+                    FROM Cg_POOrderBillSub B with(nolock)
+                    JOIN Cg_POOrderBillMAIN M with(nolock) ON B.HINTERID = M.HINTERID
+                    JOIN Gy_Material E with(nolock) ON B.HMaterID = E.HItemID
+                    JOIN {1}.T_PUR_POORDERENTRY C with(nolock) ON B.HInterID = C.FID AND B.HEntryID = C.FENTRYID
+                    LEFT join {1}.T_PUR_POCHANGEENTRY D with(nolock) ON C.FENTRYID = D.FOFENTRYID
+                    LEFT join {1}.T_PUR_POCHANGE F with(nolock) ON D.FID = F.FID   
+                    where b.HEntryID in ({0}) 
+                    and F.FDOCUMENTSTATUS <> 'C'"
+                            , entryids, kdTbaleName);
+                }
+                else
+                {
+                    sql = string.Format(@"
+                    select M.HBillNo,B.HMaterID,E.HNumber,E.HName,F.FBILLNO
+                    FROM Cg_POOrderBillSub B with(nolock) 
+                    JOIN Cg_POOrderBillMAIN M with(nolock) ON B.HINTERID = M.HINTERID
+                    JOIN Gy_Material E with(nolock) ON B.HMaterID = E.HItemID
+                    JOIN {1}..T_PUR_POORDERENTRY C with(nolock) ON B.HInterID = C.FID AND B.HEntryID = C.FENTRYID
+                    LEFT join {1}..T_PUR_POCHANGEENTRY D with(nolock) ON C.FENTRYID = D.FOFENTRYID
+                    LEFT join {1}..T_PUR_POCHANGE F with(nolock) ON D.FID = F.FID   
+                    where b.HEntryID in ({0}) 
+                    and F.FDOCUMENTSTATUS <> 'C'"
+                            , entryids, kdTbaleName);
+                }
+                
                 ds = oCn.RunProcReturn(sql, "temp");
                 if (ds.Tables[0].Rows.Count > 0)
                 {
@@ -1535,17 +1814,35 @@
                     return objJsonResult;
                 }
 
+
                 //閲囪喘璁㈠崟涓嬫帹鐢熸垚閫佽揣鍗� 鏃跺�� 鍒ゆ柇鏄惁鏈夌敓鎴愰噰璐鍗曟柊鍙樻洿鍗� 濡傛灉鏈変笖鍙樻洿鍗曠姸鎬佷笉涓哄凡瀹℃牳 闄愬埗涓嬫帹
-                sql = string.Format(@"
-select M.HBillNo,B.HMaterID,E.HNumber,E.HName,F.FBILLNO
-FROM Cg_POOrderBillSub B  
-JOIN Cg_POOrderBillMAIN M ON B.HINTERID = M.HINTERID
-JOIN Gy_Material E ON B.HMaterID = E.HItemID
-JOIN {1}..T_PUR_POORDERENTRY C ON B.HInterID = C.FID AND B.HEntryID = C.FENTRYID
-LEFT join {1}..t_PUR_XPOOrderENTRY D ON C.FENTRYID = D.FPKIDX
-LEFT join {1}..t_PUR_XPOOrder F ON D.FID = F.FID   
-where F.FDOCUMENTSTATUS <> 'C' and  b.HEntryID in ({0}) "
-        , entryids, kdTbaleName);
+                if (FCusName == "澶忓疂鐢靛櫒")
+                {
+                    sql = string.Format(@"
+                    select M.HBillNo,B.HMaterID,E.HNumber,E.HName,F.FBILLNO
+                    FROM Cg_POOrderBillSub B  with(nolock)
+                    JOIN Cg_POOrderBillMAIN M with(nolock) ON B.HINTERID = M.HINTERID
+                    JOIN Gy_Material E with(nolock) ON B.HMaterID = E.HItemID
+                    JOIN {1}.T_PUR_POORDERENTRY C with(nolock) ON B.HInterID = C.FID AND B.HEntryID = C.FENTRYID
+                    LEFT join {1}.t_PUR_XPOOrderENTRY D with(nolock) ON C.FENTRYID = D.FPKIDX
+                    LEFT join {1}.t_PUR_XPOOrder F with(nolock) ON D.FID = F.FID   
+                    where F.FDOCUMENTSTATUS <> 'C' and  b.HEntryID in ({0}) "
+                           , entryids, kdTbaleName);
+                }
+                else
+                {
+                    sql = string.Format(@"
+                    select M.HBillNo,B.HMaterID,E.HNumber,E.HName,F.FBILLNO
+                    FROM Cg_POOrderBillSub B  with(nolock)
+                    JOIN Cg_POOrderBillMAIN M with(nolock) ON B.HINTERID = M.HINTERID
+                    JOIN Gy_Material E with(nolock) ON B.HMaterID = E.HItemID
+                    JOIN {1}..T_PUR_POORDERENTRY C with(nolock) ON B.HInterID = C.FID AND B.HEntryID = C.FENTRYID
+                    LEFT join {1}..t_PUR_XPOOrderENTRY D with(nolock) ON C.FENTRYID = D.FPKIDX
+                    LEFT join {1}..t_PUR_XPOOrder F with(nolock) ON D.FID = F.FID   
+                    where F.FDOCUMENTSTATUS <> 'C' and  b.HEntryID in ({0}) "
+                           , entryids, kdTbaleName);
+                }
+               
                 ds = oCn.RunProcReturn(sql, "temp");
                 if (ds.Tables[0].Rows.Count > 0)
                 {
@@ -1585,7 +1882,7 @@
         {
             try
             {
-                SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM();
+                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                 //鏌ヨ涓昏〃
                 DataSet Ds;
                 Ds = oCn.RunProcReturn(" exec h_p_SRM_POInStockBillMain_ForWeb " + lngBillKey.ToString() + ",'" + HBillType + "'", "h_p_SRM_POInStockBillMain_ForWeb");
@@ -1618,7 +1915,7 @@
             string s = "";
             try
             {
-                SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM();
+                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
                 //鏌ヨ涓昏〃
                 DataSet Ds;
                 Ds = oCn.RunProcReturn(" exec h_p_SRM_POInStockBillSub_ForWeb '" + lngBillKey2 + "','" + HBillType + "'", "h_p_SRM_POInStockBillSub_ForWeb");
@@ -1637,6 +1934,45 @@
             }
         }
 
+        #region 閫佽揣鍗曠紪杈戣幏鍙栧崟鎹暟鎹�
+        [Route("Cg_POInStockBill/cx")]
+        [HttpGet]
+        public object Cg_POInStockBill_cx(long HInterID)
+        {
+            try
+            {
+                //鏌ヨ涓昏〃
+                DataSet ds;
+                SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
+
+                ds = oCn.RunProcReturn("select * from h_v_SRM_POInStockBillEdit where hmainid =" + HInterID, "h_v_SRM_POInStockBillEdit");
+                if (ds == null || ds.Tables[0].Rows.Count == 0)
+                {
+                    objJsonResult.code = "0";
+                    objJsonResult.count = 0;
+                    objJsonResult.Message = "false锛佹病鏈夎繑鍥為�佽揣鍗曚俊鎭紝璇锋牳瀵归�佽揣鍗曟槸鍚﹀瓨鍦�";
+                    objJsonResult.data = null;
+                    return objJsonResult;
+                }
+                else
+                {
+                    objJsonResult.code = "1";
+                    objJsonResult.count = 1;
+                    objJsonResult.Message = "Sucess锛�";
+                    objJsonResult.data = ds.Tables[0];
+                    return objJsonResult;
+                }
+            }
+            catch (Exception e)
+            {
+                objJsonResult.code = "0";
+                objJsonResult.count = 0;
+                objJsonResult.Message = "鑾峰彇閫佽揣鍗曚俊鎭紓甯�" + e.ToString();
+                objJsonResult.data = null;
+                return objJsonResult;
+            }
+        }
+        #endregion
 
     }
 }
\ No newline at end of file

--
Gitblit v1.9.1