示例#1
0
        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);
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
 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);
            }
        }