public JsonResult ProductLog_Insert(AddProductLogRequest request) { GeneralResponse response = new GeneralResponse(); #region Access Check bool hasPermission = GetEmployee().IsGuaranteed("ProductLog_Transfer"); if (!hasPermission) { response.ErrorMessages.Add("AccessDenied"); return(Json(response, JsonRequestBehavior.AllowGet)); } #endregion response = _productLogService.AddProductLog(request, GetEmployee().ID); return(Json(response, JsonRequestBehavior.AllowGet)); }
public GeneralResponse AddProductLog(AddProductLogRequest request, Guid CreateEmployeeID) { GeneralResponse response = new GeneralResponse(); try { ProductLog productLog = new ProductLog(); //if (request.IO == -1) // productLog.UnitsIO = -request.DisplayUnitsIO; //else // productLog.UnitsIO = request.DisplayUnitsIO; productLog.ID = Guid.NewGuid(); productLog.CreateDate = PersianDateTime.Now; productLog.CreateEmployee = _employeeRepository.FindBy(CreateEmployeeID); productLog.Note = request.Note; productLog.Closed = request.Closed; productLog.InputSerialNumber = GetNewSerialNumber; productLog.LogDate = request.LogDate; productLog.Product = this._productRepository.FindBy(request.ProductID); productLog.ProductSerialFrom = request.ProductSerialFrom; productLog.ProductSerialTo = request.ProductSerialTo; productLog.PurchaseBillNumber = request.PurchaseBillNumber; productLog.PurchaseDate = request.PurchaseDate; productLog.PurchaseUnitPrice = request.PurchaseUnitPrice; productLog.SellerName = request.SellerName; productLog.RowVersion = 1; #region Validation if (productLog.GetBrokenRules().Count() > 0) { foreach (BusinessRule businessRule in productLog.GetBrokenRules()) { response.ErrorMessages.Add(businessRule.Rule); } return(response); } #endregion Product product = productLog.Product; if (request.IO == -1) { if (productLog.Product.UnitsInStock < request.DisplayUnitsIO) { response.ErrorMessages.Add("موجودی انبار کافی نیست"); return(response); } else { product.UnitsInStock -= request.DisplayUnitsIO; productLog.UnitsIO = -request.DisplayUnitsIO; } } else { product.UnitsInStock += request.DisplayUnitsIO; productLog.UnitsIO = request.DisplayUnitsIO; } //product.UnitsInStock += productLog.UnitsIO; _productRepository.Save(product); _productLogRepository.Add(productLog); _uow.Commit(); } catch (Exception ex) { response.ErrorMessages.Add(ex.Message); if (ex.InnerException != null) { response.ErrorMessages.Add(ex.InnerException.Message); } } return(response); }