using DBUtility; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using SQLHelper; using System; using System.Collections.Generic; using System.Data; using System.Diagnostics; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Web; using System.Web.Http; using WebAPI.Code; using WebAPI.Models; using WebAPI.Utility; namespace WebAPI.Controllers { public class POInStockController : ApiController { private JsonResult objJsonResult = new JsonResult(); private json objjson = new json(); //获取系统参数 Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter(); /// /// 更新打印次数 /// /// /// /// [Route("UpdatePOInStockBillPrintQty")] [HttpGet] public object UpdatePOInStockBillPrintQty(string msg, string CurUserName) { try { SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM(); //写入 System_Log 操作日志表 WebAPIController.Add_Log("送货单打印", CurUserName, "送货单打印"); oCn.RunProc("exec H_p_SRM_POInStockBill_PrintQty " + msg.ToString()); objJsonResult.code = "0"; objJsonResult.count = 0; 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; } } /// /// 生成送货单单据号、日期 /// /// /// [Route("GetNewPOInStockBillNo")] [HttpGet] public object GetNewPOInStockBillNo(string sMsg, string sMsg3) { try { DataSet ds = new DataSet(); if (DBUtility.ClsPub.isLong(sMsg) == 0) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败!无效的主键"; objjson.data = null; return objjson; } if (DBUtility.ClsPub.isStrNull(sMsg3) == "") { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败!无效的单据类型"; objjson.data = null; return objjson; } string HBillNo, HInnerBillNo, HDate; 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")); //创建临时表 DataTable dt = new DataTable(); //创建表中的列 dt.Columns.Add("HBillNo", typeof(string));//添加列 dt.Columns.Add("HInnerBillNo", typeof(string));//添加列 dt.Columns.Add("HDate", typeof(string));//添加列 DataRow row = dt.NewRow(); //给列赋值 row["HBillNo"] = HBillNo; row["HInnerBillNo"] = HInnerBillNo; row["HDate"] = HDate; //把有值的列添加到表 dt.Rows.Add(row); //把表添加到dataset ds.Tables.Add(dt); if (ds == null || ds.Tables[0].Rows.Count == 0) { objjson.code = "0"; objjson.count = 1; objjson.Message = "获取失败!没有返回任何记录"; objjson.data = null; return objjson; } else { objjson.code = "0"; objjson.count = 10000; objjson.Message = "获取成功"; objjson.data = ds.Tables[0]; return objjson; } } catch (Exception e) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败" + e.ToString(); objjson.data = null; return objjson; } } /// /// 生成送货单表头信息 /// /// /// [Route("GetNewPOInStockShowBillMain")] [HttpGet] public object GetNewPOInStockShowBillMain(string sMsg, string sMsg3) { try { DataSet ds; string ShowItem = " * ";//显示的字段 if (DBUtility.ClsPub.isLong(sMsg) == 0) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败!无效的主键"; objjson.data = null; return objjson; } if (DBUtility.ClsPub.isStrNull(sMsg3) == "") { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败!无效的单据类型"; objjson.data = null; return objjson; } ds = ShowNewBillMainTo(DBUtility.ClsPub.isLong(sMsg), DBUtility.ClsPub.isStrNull(sMsg3), ShowItem, ref DBUtility.ClsPub.sExeReturnInfo); if (ds == null || ds.Tables[0].Rows.Count == 0) { objjson.code = "0"; objjson.count = 1; objjson.Message = "获取失败!没有返回任何记录"; objjson.data = null; return objjson; } else { objjson.code = "0"; objjson.count = 10000; objjson.Message = "获取成功"; objjson.data = ds.Tables[0]; return objjson; } } catch (Exception e) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败" + e.ToString(); objjson.data = null; return objjson; } } /// /// 生成送货单明细表体信息 /// /// /// /// [Route("GetNewPOInStockShowBillSub")] [HttpGet] public object GetNewPOInStockShowBillSub(string sMsg, string sMsg2, string sMsg3) { try { DataSet ds = null; string ShowItem = " * ";//显示的字段 if (DBUtility.ClsPub.isLong(sMsg) == 0) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败!无效的主键"; objjson.data = null; return objjson; } if (DBUtility.ClsPub.isStrNull(sMsg3) == "") { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败!无效的单据类型"; objjson.data = null; return objjson; } ds = ShowNewBillSubTo(DBUtility.ClsPub.isLong(sMsg), DBUtility.ClsPub.isStrNull(sMsg2), DBUtility.ClsPub.isStrNull(sMsg3), ShowItem, ref DBUtility.ClsPub.sExeReturnInfo); if (ds == null || ds.Tables[0].Rows.Count == 0) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败"; objjson.data = null; return objjson; } else { objjson.code = "0"; objjson.count = 10000; objjson.Message = "获取成功"; objjson.data = ds.Tables[0]; return objjson; } //return s; } catch (Exception e) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败" + e.ToString(); objjson.data = null; return objjson; } } /// /// 更新物流单号 /// /// [Route("SavePOInStock")] [HttpGet] public object SavePOInStock(string HmainId, string HDeliveryNo) { try { string sql = $"update Cg_POInStockBillMain  set HDeliveryNo ='{HDeliveryNo}' where HInterID in ({HmainId})"; SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM(); oCn.RunProc(sql); objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "操作成功!"; return objJsonResult; } catch (Exception e) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "Exception!" + e.ToString(); objJsonResult.data = null; return objJsonResult; } } /// /// 保存送货单 /// /// /// /// [Route("SaverPOInStock")] [HttpPost] public object SaverPOInStock([FromBody] JObject msg) { SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM(); 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 = ""; ListModels oListModels = new ListModels(); try { //获取客户名称 string FCusName = oSystemParameter.GetSingleSystemParameter("WMS_CampanyName", ref DBUtility.ClsPub.sExeReturnInfo); DAL.ClsCg_POInStockBill oBill = new DAL.ClsCg_POInStockBill(); List lsmain = new List(); 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]; if (Convert.ToInt32(yzdt.Rows[0][0]) > 0) { objJsonResult.code = "0"; objJsonResult.count = 1; objJsonResult.Message = "保存成功!"; objJsonResult.data = 1; return objJsonResult; } //根据收料通知单号校验是否已生成 //string jysql = $"select * from ": foreach (Model.ClsCg_POInStockBillMain oItem in lsmain) { //oItem.HMaker = ""; UserName = oItem.HMaker; oItem.HMakeDate = DBUtility.ClsPub.isStrNull(DateTime.Now.ToString("yyyy-MM-dd")); oItem.HYear = DBUtility.ClsPub.isLong(DateTime.Now.Year); //oItem.HDate = DBUtility.ClsPub.isDate(DateTime.Now.ToString("yyyy-MM-dd")); oItem.HCurID = 1; oItem.HExRate = 1; oItem.HMainSourceInterID = oItem.HInterID; oItem.HInterID = 0; //oItem.HInterID = DBUtility.ClsPub.CreateBillID_SRMProd("1103", ref DBUtility.ClsPub.sExeReturnInfo); if (FCusName.Contains("安瑞")) //系统参数 客户定制化名称 空白为通用 { if (DBUtility.ClsPub.isStrNull(oItem.HDHDate) == "") { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "保存失败!没有填写预计到货日期,无法保存!"; objJsonResult.data = 1; return objJsonResult; } if (DBUtility.ClsPub.isStrNull(oItem.HDeliveryNo) == "") { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "保存失败!没有填写物流单号,无法保存!"; objJsonResult.data = 1; return objJsonResult; } } oBill.omodel = oItem; } //表体数据 //按 },{来拆分数组 //去掉【和】 msg3 = msg3.Substring(1, msg3.Length - 2); msg3 = msg3.Replace("\\", ""); msg3 = msg3.Replace("\n", ""); //\n //msg2 = msg2.Replace("'", "’"); List ls = new List(); ls = oListModels.getObjectByJson_POInStockSub(msg3); int i = 0; foreach (Model.ClsCg_POInStockBillSub oItemSub in ls) { //判断采购订单状态 objJsonResult = TestPOOrder(oItemSub.HPOOrderEntryID.ToString()); if (objJsonResult.code == "0") return objJsonResult; //增加判断 送货数量超出采购订单数量 i++; if (oItemSub.HQty <= 0) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "保存失败!第" + i.ToString() + "行数量不大于0无法保存!"; objJsonResult.data = 1; return objJsonResult; } if (oItemSub.HQty > oItemSub.HRQty) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "保存失败!第" + i.ToString() + "行数量不能大于未关联数量!"; objJsonResult.data = 1; return objJsonResult; } oItemSub.HEntryID = i; oItemSub.HEntryCloseDate = DBUtility.ClsPub.isDate(DateTime.Now); oItemSub.HRemark = ""; oItemSub.HCloseMan = ""; oItemSub.HCloseType = false; oBill.DetailColl.Add(oItemSub); } //保存前判断(单据号重复,笔录项目) //保存 //保存完毕后处理 bool bResult; if (oBill.omodel.HInterID == 0) { bResult = oBill.AddBill(ref DBUtility.ClsPub.sExeReturnInfo); } else { bResult = oBill.ModifyBill(oBill.omodel.HInterID, ref DBUtility.ClsPub.sExeReturnInfo); } if (bResult) { objJsonResult.code = "0"; objJsonResult.count = 1; objJsonResult.Message = "保存成功!"; WebAPIController.Add_Log("送货单下推", UserName, "生成送货单"); objJsonResult.data = 1; return objJsonResult; } else { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "保存失败!" + DBUtility.ClsPub.sExeReturnInfo; objJsonResult.data = 1; return objJsonResult; } } catch (Exception e) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "保存失败!" + e.ToString(); objJsonResult.data = 1; return objJsonResult; } } /// /// 送货单列表 /// /// /// /// /// [Route("GetPOInStockBill")] [HttpPost] //送货单列表 public object GetPOInStockBill([FromBody] JObject msg) { string HSupNo = msg["HSupNo"].ToString(); string sqlWhere = msg["sqlWhere"].ToString(); try { Stopwatch sw = new Stopwatch(); sw.Start();//开始计时 string VsWhere = ""; string PcWhere = ""; SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM(); DataSet ds; //其他过滤 string sql = " Where hsupid in (select HSupID from h_v_Gy_UserSupplierList where 用户 =^^" + HSupNo.Trim() + "^^) " + sqlWhere; //转换特殊字符 if (Common.SQLtoChange(sql, ref VsWhere, ref PcWhere) == false) { objjson.code = "0"; objjson.count = 0; objjson.Message = "转换特殊字符失败"; objjson.data = null; return objjson; } //获取总行数 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"); //添加列名 List columnNameList = new List(); foreach (DataColumn col in ds.Tables[0].Columns) { Type dataType = col.DataType; string ColmString = "{\"ColmCols\":\"" + col.ColumnName + "\",\"ColmType\":\"" + dataType.Name + "\"}"; columnNameList.Add(JsonConvert.DeserializeObject(ColmString));//获取到DataColumn列对象的列名 } LogService.Write("送货单列表加载sql:exec H_p_SRM_POInStockBillList '" + PcWhere + "'"); LogService.Write("数据查询返回" + sw.Elapsed); sw.Stop();//结束计时 objjson.code = "0"; objjson.count = 10000; objjson.Message = "获取成功"; objjson.data = ds.Tables[0]; objjson.list = columnNameList; return objjson; } catch (Exception e) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败" + e.ToString(); objjson.data = null; return objjson; } } /// /// 送货单表头信息 /// /// /// [Route("GetPOInStockShowBillMain")] [HttpGet] public object GetPOInStockShowBillMain(string sMsg) { try { DataSet ds; string s = ""; string ShowItem = " * ";//显示的字段 if (DBUtility.ClsPub.isLong(sMsg) == 0) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败"; objjson.data = null; return objjson; } DAL.ClsCg_POInStockBill oClsCg_POInStockBill = new DAL.ClsCg_POInStockBill(); ds = oClsCg_POInStockBill.ShowBillMainTo(DBUtility.ClsPub.isLong(sMsg), ShowItem, ref DBUtility.ClsPub.sExeReturnInfo); if (ds == null || ds.Tables[0].Rows.Count == 0) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败"; objjson.data = null; return objjson; } else { objjson.code = "0"; objjson.count = 10000; objjson.Message = "获取成功"; objjson.data = ds.Tables[0]; return objjson; } } catch (Exception e) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败" + e.ToString(); objjson.data = null; return objjson; } } /// /// 送货单明细表体信息 /// /// /// /// [Route("GetPOInStockShowBillSub")] [HttpGet] public object GetPOInStockShowBillSub(string sMsg) { //string sMsg="28"; //string sMsg2 = "28,5;" try { DataSet ds = null; //string s = ""; //string sMsg3 = "'" + sMsg2 + "'"; string ShowItem = " * ";//显示的字段 if (DBUtility.ClsPub.isLong(sMsg) == 0) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败"; objjson.data = null; return objjson; } DAL.ClsCg_POInStockBill oClsCg_POInStockBill = new DAL.ClsCg_POInStockBill(); ds = oClsCg_POInStockBill.ShowBillSubTo(DBUtility.ClsPub.isLong(sMsg), ShowItem, ref DBUtility.ClsPub.sExeReturnInfo); if (ds == null || ds.Tables[0].Rows.Count == 0) { //return DBUtility.ClsPub.sExeReturnInfo; objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败"; objjson.data = null; return objjson; } else { objjson.code = "0"; objjson.count = 10000; objjson.Message = "获取成功"; objjson.data = ds.Tables[0]; return objjson; } //return s; } catch (Exception e) { objjson.code = "0"; objjson.count = 0; objjson.Message = "获取失败" + e.ToString(); objjson.data = null; return objjson; } } [Route("AuditPOInStockBill")] [HttpGet] public object AuditPOInStockBill(string HInterID, string CurUserName, string HBillNo) { json objjson = new json(); try { SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM(); //采购订单 生成送货单列表 if (!String.IsNullOrEmpty(HBillNo)) HInterID = GetHinterIDByBillNo(HBillNo, "Aduit").ToString(); if (HInterID == "0") { objjson.code = "0"; objjson.count = 0; objjson.Message = "操作失败,请先保存订单"; objjson.data = null; return objjson; } var kdTbaleName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DataBaseName"); string FCusName = oSystemParameter.GetSingleSystemParameter("WMS_CampanyName", ref DBUtility.ClsPub.sExeReturnInfo); string sql = string.Empty; DataTable dt = new DataTable(); List fidList = new List(); string parameterSql = $"select HValue from Xt_SystemParameter where HKey ='Cg_POInStockBill_ErpAduit'"; //var HValue = oCn.RunProcReturn(parameterSql, "dt").Tables[0].Rows[0][0].ToString(); string HValue = "Y"; if (HValue == "Y") { 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 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); dt = oCn.RunProcReturn(sql, "sltz").Tables[0]; if (dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { if (fidList.Contains(dr["FID"].ToString() + dr["HINTERID"].ToString())) continue; else fidList.Add(dr["FID"].ToString() + dr["HINTERID"].ToString()); DataRow[] drs = dt.Select("FID = " + dr["FID"].ToString() + " and HINTERID = " + dr["HINTERID"].ToString()); JObject model = new JObject(); string fTypeName = "SLD01_SYS";//标准采购订单类型 string ywTypeName = "CG";//标准业务类型 if (dr["FTYPENAME"].ToString().Contains("委外")) { fTypeName = "SLD03_SYS"; ywTypeName = "WW"; } if (dr["FTYPENAME"].ToString().Contains("资产")) { fTypeName = "SLD04_SYS"; ywTypeName = "ZCCG"; } model.Add("FBILLTYPEID", new JObject() { ["Fnumber"] = fTypeName }); //单据类型 model.Add("FBusinessType", ywTypeName); //业务类型 model.Add("FBILLNO", dr["HBillNo"].ToString()); //单据编号 model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //通知日期 model.Add("FStockOrgId", new JObject() { ["Fnumber"] = dr["FRECEIVENUMBER"].ToString() }); // 收料组织 model.Add("FPurOrgId", new JObject() { ["Fnumber"] = dr["FPURCHASEORGNUMBER"].ToString() }); //采购组织 model.Add("FSupplierId", new JObject() { ["Fnumber"] = dr["FSUPPLIERNUMBER"].ToString() }); //供应商 model.Add("FPURCHASERID", new JObject() { ["Fnumber"] = dr["FPURCHASERNUMBER"].ToString() }); //采购员 model.Add("F_xbkf_Base", new JObject() { ["Fnumber"] = dr["FRECEIVEMENNUMBER"].ToString() }); //收料员 model.Add("FOwnerTypeIdHead", "BD_Supplier");// 货主类型 model.Add("FOwnerIdHead", new JObject() { ["Fnumber"] = dr["FSUPPLIERNUMBER"].ToString() });//货主 供应商 model.Add("F_XBKF_COMBO", dr["F_xbkf_Combo1"].ToString());//是否有票 JArray Fentity = new JArray(); foreach (var item in drs) { JObject FentityModel = new JObject(); FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = item["FMATERIALNUMBER"].ToString() }); // 物料编码 FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = item["FUNITNUMBER"].ToString() }); // 单位 FentityModel.Add("FPreDeliveryDate", DateTime.Now.ToString("yyyy-MM-dd")); //预计到货日期 FentityModel.Add("FPriceUnitId", new JObject() { ["Fnumber"] = item["FUNITNUMBER"].ToString() }); // 计价单位 FentityModel.Add("FStockUnitID", new JObject() { ["Fnumber"] = item["FUNITNUMBER"].ToString() }); // 库存单位 FentityModel.Add("FActReceiveQty", Convert.ToDecimal(item["HQTY"])); // 供应商送货数量(提料计划数量 - 已生成送货单数量) FentityModel.Add("FOwnerTypeId", "BD_OwnerOrg");//货主类型 FentityModel.Add("FOwnerID", new JObject() { ["Fnumber"] = dr["FPURCHASEORGNUMBER"].ToString() });//货主 FentityModel.Add("FSrcId", item["FID"].ToString());//源单内码 FentityModel.Add("FSRCFORMID", "PUR_PurchaseOrder");//源单类型 FentityModel.Add("FSrcBillNo", item["FBILLNO"].ToString());//源单单号 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());//税率 JArray Fentity2 = new JArray(); JObject FentityModel2 = new JObject(); FentityModel2.Add("FDetailEntity_Link_FRULEID", "PUR_PurchaseOrder-PUR_ReceiveBill"); FentityModel2.Add("FDetailEntity_Link_FSTableName", "t_PUR_POOrderEntry"); FentityModel2.Add("FDetailEntity_Link_FSBillId", item["FID"].ToString()); FentityModel2.Add("FDetailEntity_Link_FSId", item["FEntryID"].ToString()); Fentity2.Add(FentityModel2); FentityModel.Add("FDetailEntity_Link", Fentity2); Fentity.Add(FentityModel); } model.Add("FDetailEntity", Fentity); //明细信息 JObject _FentityModel = new JObject(); _FentityModel.Add("FSettleOrgId", new JObject() { ["Fnumber"] = dr["FSETTLEORGNUMBER"].ToString() }); // 结算组织 _FentityModel.Add("FSettleCurrId", new JObject() { ["Fnumber"] = dr["FSETTLECURRNUMBER"].ToString() }); // 结算币别 _FentityModel.Add("FPricePoint", 0); // 定价时点 model.Add("FinanceEntity ", _FentityModel);//财务信息 JObject jsonRoot = new JObject() { ["Creator"] = "", ["NeedUpDateFields"] = new JArray(), ["NeedReturnFields"] = new JArray(), ["IsDeleteEntry"] = "false", ["SubSystemId"] = "", ["IsVerifyBaseDataField"] = "false", ["Model"] = model }; var loginRet = InvokeHelper.Login(); var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value(); if (isSuccess == 0) { objjson.code = "0"; objjson.count = 0; objjson.Message = loginRet; objjson.data = null; return objjson; } 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") { //更新送货单 主表 ERP单据号 以及 ERP主内玛 string FBillNo = JObject.Parse(result)["Result"]["Number"].ToString(); string FID = JObject.Parse(result)["Result"]["Id"].ToString(); string updateSql = string.Format(@" update a set a.HERPInterID = {0} , a.HERPBillNO ='{1}' from Cg_POInStockBillMain a join Cg_POInStockBillSub b on a.hinterid = b.hinterid where b.HInterID = ({2}) and b. HSOURCEINTERID = {3} and a.HERPInterID = 0 ", FID, FBillNo, dr["HINTERID"].ToString(), dr["FID"].ToString()); oCn.RunProc(updateSql); } else { objjson.code = "0"; objjson.count = 0; objjson.Message = result; objjson.data = null; return objjson; } } } } 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 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); dt = oCn.RunProcReturn(sql, "sltz").Tables[0]; if (dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { //采购订单下推生成送货单 时候 判断是否有生成采购订单变更单 如果有且变更单状态不为已审核 限制下推 objJsonResult = TestPOOrder(dr["FEntryID"].ToString()); if (objJsonResult.code == "0") return objJsonResult; } foreach (DataRow dr in dt.Rows) { if (fidList.Contains(dr["HINTERID"].ToString())) continue; else fidList.Add(dr["HINTERID"].ToString()); DataRow[] drs = dt.Select("HINTERID = " + dr["HINTERID"].ToString()); JObject model = new JObject(); string fTypeName = "SLD01_SYS";//标准采购订单类型 string ywTypeName = "CG";//标准业务类型 if (dr["FTYPENAME"].ToString().Contains("委外")) { fTypeName = "SLD03_SYS"; ywTypeName = "WW"; } if (dr["FTYPENAME"].ToString().Contains("资产")) { fTypeName = "SLD04_SYS"; ywTypeName = "ZCCG"; } model.Add("FBILLTYPEID", new JObject() { ["Fnumber"] = fTypeName }); //单据类型 model.Add("FBusinessType", ywTypeName); //业务类型 model.Add("FBILLNO", dr["HBillNo"].ToString()); //单据编号 model.Add("FDate", DateTime.Now.ToString("yyyy-MM-dd")); //通知日期 model.Add("FStockOrgId", new JObject() { ["Fnumber"] = dr["FRECEIVENUMBER"].ToString() }); // 收料组织 model.Add("FPurOrgId", new JObject() { ["Fnumber"] = dr["FPURCHASEORGNUMBER"].ToString() }); //采购组织 model.Add("FSupplierId", new JObject() { ["Fnumber"] = dr["FSUPPLIERNUMBER"].ToString() }); //供应商 model.Add("FPURCHASERID", new JObject() { ["Fnumber"] = dr["FPURCHASERNUMBER"].ToString() }); //采购员 model.Add("FOwnerTypeIdHead", "BD_Supplier");// 货主类型 model.Add("FOwnerIdHead", new JObject() { ["Fnumber"] = dr["FSUPPLIERNUMBER"].ToString() });//货主 供应商 JArray Fentity = new JArray(); foreach (var item in drs) { JObject FentityModel = new JObject(); FentityModel.Add("FMaterialId", new JObject() { ["Fnumber"] = item["FMATERIALNUMBER"].ToString() }); // 物料编码 FentityModel.Add("FUnitID", new JObject() { ["Fnumber"] = item["FUNITNUMBER"].ToString() }); // 单位 FentityModel.Add("FPreDeliveryDate", DateTime.Now.ToString("yyyy-MM-dd")); //预计到货日期 FentityModel.Add("FPriceUnitId", new JObject() { ["Fnumber"] = item["FUNITNUMBER"].ToString() }); // 计价单位 FentityModel.Add("FStockUnitID", new JObject() { ["Fnumber"] = item["FUNITNUMBER"].ToString() }); // 库存单位 FentityModel.Add("FStockID", new JObject() { ["Fnumber"] = "BJCK-SH.01.005" }); // 库存单位 FentityModel.Add("FActReceiveQty", Convert.ToDecimal(item["HQTY"])); // 供应商送货数量(提料计划数量 - 已生成送货单数量) FentityModel.Add("FOwnerTypeId", "BD_OwnerOrg");//货主类型 FentityModel.Add("FOwnerID", new JObject() { ["Fnumber"] = dr["FPURCHASEORGNUMBER"].ToString() });//货主 FentityModel.Add("FSrcId", item["FID"].ToString());//源单内码 FentityModel.Add("FSRCFORMID", "PUR_PurchaseOrder");//源单类型 FentityModel.Add("FSrcBillNo", item["FBILLNO"].ToString());//源单单号 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());//税率 JArray Fentity2 = new JArray(); JObject FentityModel2 = new JObject(); FentityModel2.Add("FDetailEntity_Link_FRULEID", "PUR_PurchaseOrder-PUR_ReceiveBill"); FentityModel2.Add("FDetailEntity_Link_FSTableName", "t_PUR_POOrderEntry"); FentityModel2.Add("FDetailEntity_Link_FSBillId", item["FID"].ToString()); FentityModel2.Add("FDetailEntity_Link_FSId", item["FEntryID"].ToString()); Fentity2.Add(FentityModel2); FentityModel.Add("FDetailEntity_Link", Fentity2); Fentity.Add(FentityModel); } model.Add("FDetailEntity", Fentity); //明细信息 JObject _FentityModel = new JObject(); _FentityModel.Add("FSettleOrgId", new JObject() { ["Fnumber"] = dr["FSETTLEORGNUMBER"].ToString() }); // 结算组织 _FentityModel.Add("FSettleCurrId", new JObject() { ["Fnumber"] = dr["FSETTLECURRNUMBER"].ToString() }); // 结算币别 _FentityModel.Add("FPricePoint", 0); // 定价时点 model.Add("FinanceEntity ", _FentityModel);//财务信息 JObject jsonRoot = new JObject() { ["Creator"] = "", ["NeedUpDateFields"] = new JArray(), ["NeedReturnFields"] = new JArray(), ["IsDeleteEntry"] = "false", ["SubSystemId"] = "", ["IsVerifyBaseDataField"] = "false", ["Model"] = model }; var loginRet = InvokeHelper.Login(); var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value(); if (isSuccess == 0) { objjson.code = "0"; objjson.count = 0; objjson.Message = loginRet; objjson.data = null; return objjson; } //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") { //更新送货单 主表 ERP单据号 以及 ERP主内玛 string FBillNo = JObject.Parse(result)["Result"]["Number"].ToString(); string FID = JObject.Parse(result)["Result"]["Id"].ToString(); string updateSql = string.Format(@" update a set a.HERPInterID = {0} , a.HERPBillNO ='{1}' from Cg_POInStockBillMain a join Cg_POInStockBillSub b on a.hinterid = b.hinterid where b.HInterID = ({2}) and b. HSOURCEINTERID = {3} and a.HERPInterID = 0 ", FID, FBillNo, dr["HINTERID"].ToString(), dr["FID"].ToString()); oCn.RunProc(updateSql); } else { objjson.code = "0"; objjson.count = 0; objjson.Message = result; objjson.data = null; return objjson; } } } else { LogService.Write("收料通知单审核无数据:" + sql); } } } //更新主表状态 审核 sql = string.Format(@"update Cg_POInStockBillMain set HBillStatus = 2 , HChecker ='{0}', HCheckDate = getdate() where HInterID in ({1})", CurUserName, HInterID); oCn.RunProc(sql); objjson.code = "1"; objjson.count = 1; objjson.Message = "操作成功"; objjson.data = null; return objjson; } catch (Exception ex) { objjson.code = "0"; objjson.count = 0; objjson.Message = "操作失败" + ex.Message.ToString(); objjson.data = null; return objjson; } } [Route("GetHinterID")] [HttpGet] public object GetHinterID(string HBillNo) { int HinterID = GetHinterIDByBillNo(HBillNo, "Print"); if (HinterID == 0) { objjson.code = "0"; objjson.count = 0; objjson.Message = "操作失败,请先保存并审核订单"; objjson.data = HinterID; return objjson; } objjson.code = "1"; objjson.count = 1; objjson.Message = "操作成功"; objjson.data = HinterID; return objjson; } public int GetHinterIDByBillNo(string HBillNo, string type) { SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM(); int HInterID = 0; string sql = "select HInterID from CG_POINSTOCKBILLMAIN where HBILLNO = '" + HBillNo + "'"; if (type == "Print") sql += " and HBillStatus = '2' ";//打印判断是否审核 DataTable dt = oCn.RunProcReturn(sql, "HInterID").Tables[0]; if (dt.Rows.Count > 0) HInterID = Convert.ToInt32(dt.Rows[0]["HInterID"]); return HInterID; } [Route("DeltetPOInStockBill")] [HttpGet] public object DeltetPOInStockBill(string HInterID, string HUserName) { SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); try { DAL.ClsCg_POInStockBill oBill = new DAL.ClsCg_POInStockBill(); //先删除 金蝶数据 objjson = DeleteKingDee(HInterID); //LogService.Write(objjson.ToString()); if (objjson.code == "0") return objjson; oCN.BeginTran(); string sql = $"select HInterID,HBillNo from Cg_POInStockBillMain where HInterID in ({HInterID})"; DataTable dt = oCN.RunProcReturn(sql, "deleteTable").Tables[0]; foreach (DataRow dr in dt.Rows) { WebAPIController.Add_Log("送货单删除", HUserName, "送货单删除,单号:" + dr["HBillNo"]); oBill.DeleteRelation(ref DBUtility.ClsPub.sExeReturnInfo, Convert.ToInt32(dr["HInterID"])); oCN.RunProc($"Delete From Cg_POInStockBillMain where HInterID in ({dr["HInterID"]})"); oCN.RunProc($"Delete From Cg_POInStockBillSub where HInterID in ({dr["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; } } //审核 删除 删除金蝶数据库对应 收料通知到数据 public json DeleteKingDee(string hinterid) { var kdTbaleName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DataBaseName"); SQLHelper.ClsCN oCN = new SQLHelper.ClsCN(); //string sql = string.Format("select HinterID,HERPBillNO,HERPInterID from Cg_POInStockBillMain where HERPInterID>0 and hinterid in (" + hinterid + ")"); //string FCusName = oSystemParameter.GetSingleSystemParameter("WMS_CampanyName", ref DBUtility.ClsPub.sExeReturnInfo); var sql = $"select HinterID,HERPBillNO,HERPInterID from Cg_POInStockBillMain t1 join {kdTbaleName}..T_PUR_RECEIVE t2 on t1.HERPInterID = t2.FID where HERPInterID>0 and hinterid in (" + hinterid + ")"; DataTable dt = oCN.RunProcReturn(sql, "deleteDt").Tables[0]; if (dt.Rows.Count == 0) { objjson.code = "1"; objjson.count = 1; objjson.Message = "Sucess!"; objjson.data = null; return objjson; } List HERPInterIdList = new List(); foreach (DataRow dr in dt.Rows) { HERPInterIdList.Add(dr["HERPInterID"].ToString()); } var sJson = new { Ids = string.Join(",", HERPInterIdList) }; var loginRet = InvokeHelper.Login(); var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value(); if (isSuccess <= 0) { objjson.code = "0"; objjson.count = 0; objjson.Message = "操作失败,金蝶账号登录异常。" + loginRet; objjson.data = null; return objjson; } //LogService.Write(""); var result = InvokeHelper.Delete("PUR_ReceiveBill", JsonConvert.SerializeObject(sJson)); //LogService.Write("api结果删除:" + result); if (JObject.Parse(result)["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE") { objjson.code = "0"; objjson.count = 0; objjson.Message = "对应金蝶收料通知单删除失败 !\r\n" + result; objjson.data = null; return objjson; } objjson.code = "1"; objjson.count = 1; objjson.Message = "Sucess!"; objjson.data = null; return objjson; } //[Route("POInStockAccept")] //[HttpGet] ///// ///// 订单接受 ///// ///// ///// //public object POInStockAccept(string HInterID,string HEntryID,long HBillType,string HUser) //{ // try // { // if (DBUtility.ClsPub.isLong(HInterID) == 0) // { // objJsonResult.code = "0"; // objJsonResult.count = 0; // objJsonResult.Message = "接受失败!"; // objJsonResult.data = null; // return objJsonResult; // } // DAL.ClsSRM_POInStockBill oBill = new DAL.ClsSRM_POInStockBill(); // oBill.WebAccept_Sub(DBUtility.ClsPub.isLong(HInterID), DBUtility.ClsPub.isLong(HEntryID), DBUtility.ClsPub.isLong(HBillType), DBUtility.ClsPub.isStrNull(HUser), ref DBUtility.ClsPub.sExeReturnInfo); // objJsonResult.code = "0"; // 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 = null; // return objJsonResult; // } //} // [Route("POInStockRefuse")] // [HttpGet] // /// // /// 订单拒绝 // /// // /// // /// // public object POInStockRefuse(string HInterID, string HEntryID,string HBackRemark, long HBillType,string HUser) // { // try // { // if (DBUtility.ClsPub.isLong(HInterID) == 0) // { // objJsonResult.code = "0"; // objJsonResult.count = 0; // objJsonResult.Message = "失败!"; // objJsonResult.data = null; // return objJsonResult; // } // DAL.ClsSRM_POInStockBill oBill = new DAL.ClsSRM_POInStockBill(); // oBill.WebRefuse_Sub(DBUtility.ClsPub.isLong(HInterID), DBUtility.ClsPub.isLong(HEntryID), DBUtility.ClsPub.isStrNull(HBackRemark), DBUtility.ClsPub.isLong(HBillType),DBUtility.ClsPub.isStrNull(HUser), ref DBUtility.ClsPub.sExeReturnInfo); // objJsonResult.code = "0"; // 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 = null; // return objJsonResult; // } // } [Route("TestSaverPOInStock")] [HttpGet] /// /// 生成送货单前验证金蝶采购订单是否删除和关闭,然后更新关联数量 /// /// /// public object TestSaverPOInStock(string ids, string entryids) { List mylist = new List(ids.Split(',').Distinct()); List entryList = new List(entryids.Split(',').Distinct()); SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM(); string FCusName = oSystemParameter.GetSingleSystemParameter("WMS_CampanyName", ref DBUtility.ClsPub.sExeReturnInfo); if (FCusName == "夏宝电器" && mylist.Count > 1) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "操作失败!请选择相同采购订单数据行下推!"; objJsonResult.data = null; return objJsonResult; } try { //采购订单下推生成送货单 时候 判断是否有生成采购订单变更单 如果有且变更单状态不为已审核 限制下推 objJsonResult = TestPOOrder(entryids); if (objJsonResult.code == "0") return objJsonResult; for (int i = 0; i < mylist.Count; i++) { //更新关联数量 var HinterID = mylist[i].ToString(); oCn.RunProc($"exec h_p_SRM_UpDatePPBomRelationQty {HinterID}"); } //判断未关联数量是否为0 DataSet ds = oCn.RunProcReturn($"select hqty-hrelationqty as hqty from Cg_POOrderBillSub where hentryid in ({string.Join(", ", entryList)}) ", "H_v_SRM_POOrderBillList"); DataTable dt = ds.Tables[0]; if (dt.Rows.Count > 0) { DataRow[] dr = dt.Select("hqty <=" + 0); if (dr.Count() > 0) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = $"请检查数据,单据号:{dr[0]["单据号"]},物料代码:{dr[0]["物料代码"]},未发货数量为0,已全部生成送货单!"; objJsonResult.data = null; return objJsonResult; } } objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "操作成功!"; objJsonResult.data = null; return objJsonResult; } catch (Exception e) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "失败!" + e.Message.ToString(); objJsonResult.data = null; return objJsonResult; } } /// /// 验证 采购订单 /// /// 采购订单FENTRYID /// public JsonResult TestPOOrder(string entryids) { SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM(); try { var kdTbaleName = Util.GetConfigKey(AppDomain.CurrentDomain.BaseDirectory + "/Config/kdapi.config", "DataBaseName"); //验证金蝶采购订单是否存在 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); DataSet ds = oCn.RunProcReturn(sql, "temp"); if (ds.Tables[0].Rows.Count > 0) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "单据号:" + ds.Tables[0].Rows[0]["HBillNo"].ToString() + ",物料编码:" + ds.Tables[0].Rows[0]["HNumber"].ToString() + ",对应的金蝶采购订单已删除,不能下推送货单!"; objJsonResult.data = null; 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); ds = oCn.RunProcReturn(sql, "temp"); if (ds.Tables[0].Rows.Count > 0) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "单据号:" + ds.Tables[0].Rows[0]["HBillNo"].ToString() + ",物料编码:" + ds.Tables[0].Rows[0]["HNumber"].ToString() + ",存在对应采购订单变更单:" + ds.Tables[0].Rows[0]["FBILLNO"].ToString() + "未审核,不能下推送货单!"; objJsonResult.data = null; 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); ds = oCn.RunProcReturn(sql, "temp"); if (ds.Tables[0].Rows.Count > 0) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "单据号:" + ds.Tables[0].Rows[0]["HBillNo"].ToString() + ",物料编码:" + ds.Tables[0].Rows[0]["HNumber"].ToString() + ",存在对应采购订单新变更单:" + ds.Tables[0].Rows[0]["FBILLNO"].ToString() + "未审核,不能下推送货单!"; objJsonResult.data = null; return objJsonResult; } objJsonResult.code = "1"; objJsonResult.count = 1; objJsonResult.Message = "操作成功!"; objJsonResult.data = null; return objJsonResult; } catch (Exception e) { objJsonResult.code = "0"; objJsonResult.count = 0; objJsonResult.Message = "失败!" + e.Message.ToString(); objJsonResult.data = null; return objJsonResult; } } /// /// 采购订单生成送货单按钮 显示单据头 /// /// /// /// /// /// public DataSet ShowNewBillMainTo(Int64 lngBillKey, string HBillType, string sShowItem, ref string sReturn) { try { SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM(); //查询主表 DataSet Ds; Ds = oCn.RunProcReturn(" exec h_p_SRM_POInStockBillMain_ForWeb " + lngBillKey.ToString() + ",'" + HBillType + "'", "h_p_SRM_POInStockBillMain_ForWeb"); if (Ds == null || Ds.Tables[0].Rows.Count == 0) { sReturn = "单据头未找到!"; return null; } sReturn = "显示单据头成功!"; return Ds; } catch (Exception e) { sReturn = e.Message; return null; } } /// /// 采购订单生成送货单按钮 显示单据体 /// /// /// /// /// /// /// public DataSet ShowNewBillSubTo(Int64 lngBillKey, string lngBillKey2, string HBillType, string sShowItem, ref string sReturn) { string s = ""; try { SQLHelper.ClsCNSRM oCn = new SQLHelper.ClsCNSRM(); //查询主表 DataSet Ds; Ds = oCn.RunProcReturn(" exec h_p_SRM_POInStockBillSub_ForWeb '" + lngBillKey2 + "','" + HBillType + "'", "h_p_SRM_POInStockBillSub_ForWeb"); if (Ds == null || Ds.Tables[0].Rows.Count == 0) { sReturn = "单据体未找到!"; return null; } sReturn = "显示单据体成功!"; return Ds; } catch (Exception e) { sReturn = e.Message; //+ s return null; } } } }