public async Task <IHttpActionResult> UpdateItem(oItem item) { try { if (!GlobalInstance.Instance.IsConnected) { GlobalInstance.Instance.InitializeSboComObject(); } var itm = await repo.GetItemByItemCode(item.ItemCode); if (itm == null) { errMsg = string.Format("Item {0} - {2} does not exist.", item.ItemCode, item.Description); var resp = new HttpResponseMessage(HttpStatusCode.NotFound); resp.Content = new StringContent(errMsg); resp.ReasonPhrase = "Object not found."; throw new HttpResponseException(resp); } if (repo.Update(item) < 0) { errMsg = GlobalInstance.Instance.SBOErrorMessage; var resp = new HttpResponseMessage(HttpStatusCode.Conflict); resp.Content = new StringContent(errMsg); resp.ReasonPhrase = "SBO Error"; throw new HttpResponseException(resp); } return(Ok(string.Format("Item {0} - {2} successfully updated.", item.ItemCode, item.Description))); } catch (HttpResponseException ex) { throw new HttpResponseException(HttpStatusCode.BadRequest); } }
public int Update(oItem obj) { Items itm = (Items)SboComObject.GetBusinessObject(BoObjectTypes.oItems); try { SboComObject.StartTransaction(); int retCode = 0; itm.GetByKey(obj.ItemCode); itm.ItemName = obj.Description; itm.Series = obj.Series; itm.ItemsGroupCode = obj.ItemGroup; itm.InventoryItem = obj.InventoryItem == "Y" ? BoYesNoEnum.tYES : BoYesNoEnum.tNO; itm.PurchaseItem = obj.PurchaseItem == "Y" ? BoYesNoEnum.tYES : BoYesNoEnum.tNO; itm.SalesItem = obj.SalesItem == "Y" ? BoYesNoEnum.tYES : BoYesNoEnum.tNO; itm.UoMGroupEntry = obj.UoMGroup; itm.BarCode = obj.Barcode; itm.PriceList.SetCurrentLine(0); itm.PriceList.Price = obj.SellPrice; retCode = itm.Update(); if (retCode != 0) { int errCode = 0; string errMessage = ""; SboComObject.GetLastError(out errCode, out errMessage); GlobalInstance.Instance.SBOErrorCode = errCode; GlobalInstance.Instance.SBOErrorMessage = errMessage; SboComObject.EndTransaction(BoWfTransOpt.wf_RollBack); } else { SboComObject.EndTransaction(BoWfTransOpt.wf_Commit); } return(retCode); } catch { throw new Exception(GlobalInstance.Instance.SBOErrorMessage); } finally { System.Runtime.InteropServices.Marshal.ReleaseComObject(itm); } }
public void LogItemTransaction(oItem obj, bool isPosted, ErrorLog errLog = null) { try { log.TransactionNo = obj.ItemCode; log.Origin = string.Format("{0}-{1}", HttpContext.Current.Request.UserHostAddress, HttpContext.Current.Request.UserHostName); log.Type = TransactionLog.SBOType.ITM; log.LogDate = DateTime.Now; log.IsPosted = isPosted; log.TransactionDataID = log.RawData.ID; log.RawData.PostedOn = obj.CreateDate; log.RawData.RawData = JsonConvert.SerializeObject(obj); repo.AddOrUpdate(log); } catch (Exception ex) { throw new Exception(ex.Message); } }
public void LogItemTransaction(oItem obj, bool isPosted, string action, string origin, ErrorLog errLog = null) { try { log.TransactionNo = obj.ItemCode; log.Origin = origin; log.Type = TransactionLog.SBOType.ITM; log.LogDate = DateTime.Now; log.IsPosted = isPosted; TransactionData rawData = new TransactionData(); rawData.PostedOn = obj.CreateDate; rawData.RawData = JsonConvert.SerializeObject(obj); log.RawData = rawData; log.Action = action; log.CreatedBy = obj.CreatedBy; log.CreatedOn = obj.CreateDate; repo.AddOrUpdate(log); } catch (Exception ex) { throw new Exception(ex.Message); } }
public async Task <object> UpdateItem(oItem item) { try { if (!GlobalInstance.Instance.IsConnected) { GlobalInstance.Instance.InitializeSboComObject(); } var itm = await repo.GetItemByItemCode(item.ItemCode); string validationStr = ModelValidator.ValidateModel(item); if (!string.IsNullOrEmpty(validationStr)) { errMsg = string.Format(validationStr); var resp = new HttpResponseMessage(HttpStatusCode.Conflict); resp.Content = new StringContent(errMsg); resp.ReasonPhrase = "Object property validation error"; var err = ErrorLogger.Log(new ErrorLog { ErrorCode = (int)HttpStatusCode.Conflict, Message = errMsg, StackTrace = Environment.StackTrace }); transactionLogger.LogItemTransaction(item, false, "U", this.Request.Headers.Host, err); throw new HttpResponseException(resp); } if (itm == null) { errMsg = string.Format("Item {0} - {1} does not exist.", item.ItemCode, item.Description); var resp = new HttpResponseMessage(HttpStatusCode.NotFound); resp.Content = new StringContent(errMsg); resp.ReasonPhrase = "Object not found."; var err = ErrorLogger.Log(new ErrorLog { ErrorCode = (int)HttpStatusCode.Conflict, Message = errMsg, StackTrace = Environment.StackTrace }); transactionLogger.LogItemTransaction(item, false, "U", this.Request.Headers.Host, err); throw new HttpResponseException(resp); } if (repo.Update(item) < 0) { errMsg = GlobalInstance.Instance.SBOErrorMessage; var resp = new HttpResponseMessage(HttpStatusCode.Conflict); resp.Content = new StringContent(errMsg); resp.ReasonPhrase = "SBO Error"; var err = ErrorLogger.Log(new ErrorLog { ErrorCode = (int)HttpStatusCode.Conflict, Message = errMsg, StackTrace = Environment.StackTrace }); transactionLogger.LogItemTransaction(item, false, "U", this.Request.Headers.Host, err); throw new HttpResponseException(resp); } transactionLogger.LogItemTransaction(item, true, "U", this.Request.Headers.Host); return(new { SAPItemCode = item.ItemCode, ReturnMessage = $"Item {item.ItemCode} - {item.Description} successfully added." }); } catch (HttpResponseException ex) { throw new HttpResponseException(ex.Response); } }
public async Task <object> AddItem(oItem item) { try { if (!GlobalInstance.Instance.IsConnected) { GlobalInstance.Instance.InitializeSboComObject(); } var list = await repo.GetList(null); var itm = list.FirstOrDefault(x => x.RDItemCode == item.RDItemCode); string validationStr = ModelValidator.ValidateModel(item); if (!string.IsNullOrEmpty(validationStr)) { errMsg = string.Format(validationStr); ErrorLog _err = new ErrorLog(); _err.ErrorCode = (int)HttpStatusCode.Conflict; _err.Message = errMsg; _err.StackTrace = Environment.StackTrace; var err = ErrorLogger.Log(_err); transactionLogger.LogItemTransaction(item, false, "A", HttpContext.Current.Request.UserHostAddress, _err); throw new HttpResponseException(new HttpResponseMessage { StatusCode = HttpStatusCode.Conflict, Content = new StringContent(errMsg) }); } if (itm != null) { errMsg = string.Format("Item {0} - {1} already exist.", itm.RDItemCode, itm.Description); ErrorLog _err = new ErrorLog(); _err.ErrorCode = (int)HttpStatusCode.Conflict; _err.Message = errMsg; _err.StackTrace = Environment.StackTrace; var err = ErrorLogger.Log(_err); transactionLogger.LogItemTransaction(item, false, "A", HttpContext.Current.Request.UserHostAddress, _err); throw new HttpResponseException(new HttpResponseMessage { StatusCode = HttpStatusCode.Conflict, Content = new StringContent(errMsg) }); } if (repo.Add(item) < 0) { errMsg = GlobalInstance.Instance.SBOErrorMessage; ErrorLog _err = new ErrorLog(); _err.ErrorCode = (int)HttpStatusCode.Conflict; _err.Message = errMsg; _err.StackTrace = Environment.StackTrace; var err = ErrorLogger.Log(_err); transactionLogger.LogItemTransaction(item, false, "A", HttpContext.Current.Request.UserHostAddress, _err); throw new HttpResponseException(new HttpResponseMessage { StatusCode = HttpStatusCode.Conflict, Content = new StringContent(errMsg) }); } transactionLogger.LogItemTransaction(item, true, "A", HttpContext.Current.Request.UserHostAddress); var _itm = await repo.GetByRDItemCode(item.RDItemCode); return(new { SAPItemCode = _itm.ItemCode, ReturnMessage = $"Item {item.RDItemCode} - {item.Description} successfully added." }); } catch (HttpResponseException ex) { throw new HttpResponseException(ex.Response); } }