private async Task <List <DeptStockModel> > GetERPDptStokAsync(string userName) { DeptStockModel deptStock; List <DeptStockModel> deptStockList = new List <DeptStockModel>(); Prdts pd; int serNo = 1; #if DEBUG userName = "******"; #endif ERPservicesSoapClient ERPWebServices = new ERPservicesSoapClient(ERPservicesSoapClient.EndpointConfiguration.ERPservicesSoap); var objs = await ERPWebServices.GetStockAsync("", userName); string s = objs.Body.GetStockResult; List <WsStock> stocks = JsonConvert.DeserializeObject <List <WsStock> >(s); foreach (var obj in stocks) { var objs2 = await ERPWebServices.GetProductAsync(obj.PRD_NO, "", ""); s = objs2.Body.GetProductResult; pd = JsonConvert.DeserializeObject <List <Prdts> >(s).FirstOrDefault(); deptStock = new DeptStockModel(); deptStock.StockId = serNo; deptStock.StockName = obj.PRD_NAME; deptStock.StockNo = obj.PRD_NO; deptStock.Unite = pd.UT; deptStock.Qty = obj.QTY == null ? 0 : Convert.ToInt32(obj.QTY); deptStock.CUS_NM = obj.CUS_NM; deptStockList.Add(deptStock); serNo++; } return(deptStockList); }
private async Task <string> SaveToERPAsync(string docId) { ERPservicesSoapClient ERPWebServices = new ERPservicesSoapClient(ERPservicesSoapClient.EndpointConfiguration.ERPservicesSoap); string msg = ""; // ERPRepHead hd = new ERPRepHead(); hd.BIL_NO = docId; hd.PS_DD = DateTime.Now.Date; hd.SAL_NO = User.Identity.Name; #if DEBUG hd.SAL_NO = "344033"; #endif //Get repair doc's stock. var repairCosts = _context.BMEDRepairCosts.Where(rc => rc.DocId == docId).ToList(); if (repairCosts.Count() > 0) { var stocks = repairCosts.Where(rc => rc.StockType == "0").OrderBy(rc => rc.SeqNo).ToList(); if (stocks.Count() > 0) { int i = 1; List <ERPRepBody> body = new List <ERPRepBody>(); foreach (var stock in stocks) { body.Add(new ERPRepBody { ITM = i, PRD_NO = stock.PartNo.ToString(), PRD_NAME = stock.PartName.ToString(), QTY = Convert.ToDecimal(stock.Qty), UP = Convert.ToDecimal(stock.Price), AMT = Convert.ToDecimal(stock.TotalCost) }); i++; } // string mf = JsonConvert.SerializeObject(hd); string bf = JsonConvert.SerializeObject(body); var response = await ERPWebServices.PostRepStuffAsync(mf, bf); msg = response.Body.PostRepStuffResult; //回傳銷貨單號,回寫至請修單主檔 var repair = _context.BMEDRepairs.Find(docId); if (repair != null) { repair.SalesDocId = msg; _context.Entry(repair).State = EntityState.Modified; _context.SaveChanges(); } } } return(msg); }
/// <summary> /// Get the ERP vendor by uno. /// </summary> /// <param name="uno"></param> /// <returns></returns> public async Task <ERPVendors> GetERPVendorAsync(string uno) { ERPservicesSoapClient ERPWebServices = new ERPservicesSoapClient(ERPservicesSoapClient.EndpointConfiguration.ERPservicesSoap); try { var objs = await ERPWebServices.GetVendorAsync("", uno, ""); string s = objs.Body.GetVendorResult; List <ERPVendors> vendors = JsonConvert.DeserializeObject <List <ERPVendors> >(s); var vendor = vendors.First(); return(vendor); } catch (Exception e) { return(null); } }
/// <summary> /// Get ERP Vendor list by keyname. /// </summary> /// <param name="uno"></param> /// <param name="vname"></param> /// <returns></returns> public async Task <List <ERPVendors> > GetERPVendorsByKeyNameAsync(string uno, string vname) { ERPservicesSoapClient ERPWebServices = new ERPservicesSoapClient(ERPservicesSoapClient.EndpointConfiguration.ERPservicesSoap); try { List <ERPVendors> vendors1 = new List <ERPVendors>(); List <ERPVendors> vendors2 = new List <ERPVendors>(); if (float.TryParse(uno, out float result)) { var objs1 = await ERPWebServices.GetVendorAsync("", uno, ""); string s1 = objs1.Body.GetVendorResult; if (!s1.Contains("過濾無資料")) { vendors1 = JsonConvert.DeserializeObject <List <ERPVendors> >(s1); } } var objs2 = await ERPWebServices.GetVendorAsync("", "", vname); string s2 = objs2.Body.GetVendorResult; if (!s2.Contains("過濾無資料")) { vendors2 = JsonConvert.DeserializeObject <List <ERPVendors> >(s2); } vendors1.AddRange(vendors2); if (vendors1.Count() > 0) { vendors1 = vendors1.GroupBy(v => v.CUS_NO).Select(group => group.First()).ToList(); } return(vendors1); } catch (Exception e) { return(null); } }
public ERPservicesSoapClient(EndpointConfiguration endpointConfiguration, System.ServiceModel.EndpointAddress remoteAddress) : base(ERPservicesSoapClient.GetBindingForEndpoint(endpointConfiguration), remoteAddress) { this.Endpoint.Name = endpointConfiguration.ToString(); ConfigureEndpoint(this.Endpoint, this.ClientCredentials); }
public ERPservicesSoapClient(EndpointConfiguration endpointConfiguration) : base(ERPservicesSoapClient.GetBindingForEndpoint(endpointConfiguration), ERPservicesSoapClient.GetEndpointAddress(endpointConfiguration)) { this.Endpoint.Name = endpointConfiguration.ToString(); ConfigureEndpoint(this.Endpoint, this.ClientCredentials); }
/// <summary> /// Sync Stock to ERP system. /// </summary> /// <param name="docId"></param> /// <returns></returns> private async Task<string> SaveToERPAsync(string docId) { ERPservicesSoapClient ERPWebServices = new ERPservicesSoapClient(ERPservicesSoapClient.EndpointConfiguration.ERPservicesSoap); string msg = ""; // var keep = _context.BMEDKeeps.Find(docId); ERPRepHead hd = new ERPRepHead(); hd.ZHANG_ID = "2"; hd.ADD = 0; hd.BIL_NO = "K" + docId; hd.PS_DD = DateTime.Now.Date; hd.SAL_NO = User.Identity.Name; //Get SAL_NO var salStocks = _context.BMEDKeepCosts.Where(rc => rc.DocId == docId) .Where(rc => rc.StockType == "0").ToList(); var salTickets = _context.BMEDKeepCosts.Where(rc => rc.DocId == docId) .Where(rc => rc.StockType == "2").ToList(); if (salStocks.Count() > 0) { var salId = salStocks.FirstOrDefault().Rtp; var user = _context.AppUsers.Find(salId); hd.SAL_NO = user.UserName; } else { var salId = salTickets.OrderByDescending(s => s.Rtt).FirstOrDefault().Rtp; var user = _context.AppUsers.Find(salId); hd.SAL_NO = user.UserName; } #if DEBUG hd.SAL_NO = "344033"; #endif if (keep != null) { hd.CUS_NO = keep.AccDpt; var asset = _context.BMEDAssets.Find(keep.AssetNo); if (asset != null) { hd.WEBMAC = asset.Type; hd.WEBITM = asset.MakeNo; } if (!string.IsNullOrEmpty(keep.SalesDocId)) { hd.ADD = 1; } } //Get keep doc's costs. DateTime? ticketDate = null; var keepCosts = _context.BMEDKeepCosts.Where(rc => rc.DocId == docId).ToList(); if (keepCosts.Count() > 0) { // 讀取庫存明細 (2020/9/30增加發票明細) var stocks = keepCosts.Where(rc => rc.StockType == "0" || rc.StockType == "2").OrderBy(rc => rc.SeqNo).ToList(); if (stocks.Count() > 0) { int i = 1; List<ERPRepBody> body = new List<ERPRepBody>(); ERPVendors ERPvendor = new ERPVendors(); foreach (var stock in stocks) { // get ERP vendor id. if (stock.VendorId != null) { var vendor = _context.BMEDVendors.Find(stock.VendorId); ERPvendor = await new ERPVendors().GetERPVendorAsync(vendor.UniteNo); } // get ticket date. if (stock.AccountDate.HasValue) { if (ticketDate == null) { ticketDate = stock.AccountDate.Value.Date; } else if (stock.AccountDate.Value < ticketDate) { ticketDate = stock.AccountDate.Value.Date; } } // var isPay = "F"; if (stock.IsPetty == "Y") { isPay = "T"; } body.Add(new ERPRepBody { ITM = i, PRD_NO = stock.PartNo, PRD_NAME = stock.PartName, QTY = Convert.ToDecimal(stock.Qty), UP = Convert.ToDecimal(stock.Price), AMT = Convert.ToDecimal(stock.TotalCost), INV_CUS_NO = stock.VendorId == null || stock.StockType == "0" ? null : ERPvendor.CUS_NO, ISPAY = isPay, TAX_ID = stock.TaxClass }); i++; } // if (ticketDate != null) { hd.PS_DD = ticketDate.Value; } // string mf = JsonConvert.SerializeObject(hd); string bf = JsonConvert.SerializeObject(body); var response = await ERPWebServices.PostRepStuffAsync(mf, bf); JObject objs = JObject.Parse(response.Body.PostRepStuffResult); string rtnCode = objs["RtnCode"].ToString(); if (rtnCode == "1") { msg = objs["RtnMsg"].ToString(); //回傳銷貨單號,回寫至請修單主檔 if (keep != null) { keep.SalesDocId = msg; _context.Entry(keep).State = EntityState.Modified; _context.SaveChanges(); } msg = "成功"; } else { var rtnMsg = objs["RtnMsg"].ToString().Replace(Environment.NewLine, ""); msg = "寫入ERP失敗!" + Environment.NewLine + "請將錯誤訊息【" + rtnMsg + "】告知ERP管理人員協助處理。"; } return msg; } msg = "無費用明細,寫入ERP失敗!"; return msg; } else { msg = "無費用明細,寫入ERP失敗!"; return msg; } }