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> /// 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; } }