public void LogGoodsReceiptTransaction(oGoodsReceipt obj, bool isPosted, string action, string origin, ErrorLog errLog = null) { try { log.TransactionNo = obj.DocNo.ToString(); log.Origin = origin; log.Type = TransactionLog.SBOType.GR; log.LogDate = DateTime.Now; log.IsPosted = isPosted; TransactionData rawData = new TransactionData(); rawData.PostedOn = obj.DocDate; 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> AddGR(oGoodsReceipt goodsReceipt) { try { if (goodsReceipt == null) { return new { SAPGRDocumentNumber = -1, ReturnMessage = $"Object cannot be null!!" } } ;; oGoodsReceipt _grpo = null; string isOldItem = goodsReceipt.GoodsReceiptLines.Select(x => x.IsOldItem).First(); if (isOldItem == null) { errMsg = string.Format("Item classification cannot be null. (Is Old Item)", goodsReceipt.BatchNumber); var resp = new HttpResponseMessage(HttpStatusCode.Conflict); resp.Content = new StringContent(errMsg); resp.ReasonPhrase = "Field cannot be null"; ErrorLog _err = new ErrorLog(); _err.ErrorCode = (int)HttpStatusCode.Conflict; _err.Message = errMsg; _err.StackTrace = Environment.StackTrace; var err = ErrorLogger.Log(_err); transactionLogger.LogGoodsReceiptTransaction(goodsReceipt, false, "A", HttpContext.Current.Request.UserHostAddress, _err); throw new HttpResponseException(resp); } goodsReceipt.BatchNumber = isOldItem.ToUpper() == "Y" ? $"R-{goodsReceipt.BatchNumber}" : $"N-{goodsReceipt.BatchNumber}"; if (goodsReceipt.GoodsReceiptLines.Count > 0) { foreach (var l in goodsReceipt.GoodsReceiptLines) { if (l.IsOldItem.ToLower() == "y") { if (l.WarehouseCode == "" || string.IsNullOrEmpty(l.WarehouseCode)) { l.WarehouseCode = ConfigurationManager.AppSettings["DefaultRemaWarehouse"]; l.BinCode = Int32.Parse(ConfigurationManager.AppSettings["DefaultRemaBin"]); } } } } if (!GlobalInstance.Instance.IsConnected) { GlobalInstance.Instance.InitializeSboComObject(); } if (goodsReceipt.BatchNumber != null) { _grpo = await repo.GetByBatchNo(goodsReceipt.BatchNumber); } string validationStr = ModelValidator.ValidateModel(goodsReceipt); 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"; ErrorLog _err = new ErrorLog(); _err.ErrorCode = (int)HttpStatusCode.Conflict; _err.Message = errMsg; _err.StackTrace = Environment.StackTrace; var err = ErrorLogger.Log(_err); transactionLogger.LogGoodsReceiptTransaction(goodsReceipt, false, "A", HttpContext.Current.Request.UserHostAddress, _err); throw new HttpResponseException(resp); } if (_grpo != null) { errMsg = string.Format("Goods Receipt {0} already exist.", goodsReceipt.BatchNumber); var resp = new HttpResponseMessage(HttpStatusCode.Conflict); resp.Content = new StringContent(errMsg); resp.ReasonPhrase = "Object already exist."; ErrorLog _err = new ErrorLog(); _err.ErrorCode = (int)HttpStatusCode.Conflict; _err.Message = errMsg; _err.StackTrace = Environment.StackTrace; var err = ErrorLogger.Log(_err); transactionLogger.LogGoodsReceiptTransaction(goodsReceipt, false, "A", HttpContext.Current.Request.UserHostAddress, _err); throw new HttpResponseException(resp); } if (repo.Add(goodsReceipt) != 0) { errMsg = GlobalInstance.Instance.SBOErrorMessage; var resp = new HttpResponseMessage(HttpStatusCode.Conflict); resp.Content = new StringContent(errMsg); resp.ReasonPhrase = "SBO Error"; ErrorLog _err = new ErrorLog(); _err.ErrorCode = (int)HttpStatusCode.Conflict; _err.Message = errMsg; _err.StackTrace = Environment.StackTrace; var err = ErrorLogger.Log(_err); transactionLogger.LogGoodsReceiptTransaction(goodsReceipt, false, "A", HttpContext.Current.Request.UserHostAddress, _err); throw new HttpResponseException(resp); } transactionLogger.LogGoodsReceiptTransaction(goodsReceipt, true, "A", HttpContext.Current.Request.UserHostAddress); var grpo = await repo.GetByBatchNo(goodsReceipt.BatchNumber); return(new { SAPGRDocumentNumber = grpo.DocNo, ReturnMessage = $"Goods receipt {goodsReceipt.BatchNumber} successfully added." }); } catch (HttpResponseException ex) { throw new HttpResponseException(ex.Response); } }