public JsonResult ProductLogs_Transfer_Insert(AddProductLogStoreRequest 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.AddProductLogToStore(request, GetEmployee().ID); return(Json(response, JsonRequestBehavior.AllowGet)); }
public GeneralResponse AddProductLogToStore(AddProductLogStoreRequest request, Guid CreateEmployeeID) { GeneralResponse response = new GeneralResponse(); ProductLog productLog = new ProductLog(); 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; productLog.Store = _storRepository.FindBy(request.StoreID); Product product = productLog.Product; if (request.IO == -1) { productLog.UnitsIO = +request.DisplayUnitsIO; } else { productLog.UnitsIO = -request.DisplayUnitsIO; } #region If record exists, Edit UnitsInStock StoreProduct storeProduct = new StoreProduct(); storeProduct = _storeProductrepository.FindBy(request.StoreID, request.ProductID); if (storeProduct != null) { storeProduct.ModifiedDate = PersianDateTime.Now; storeProduct.ModifiedEmployee = _employeeRepository.FindBy(CreateEmployeeID); if (request.ProductID != null) { storeProduct.Product = this._productRepository.FindBy(request.ProductID); } if (request.StoreID != null) { storeProduct.Store = this._storRepository.FindBy(request.StoreID); } if (request.IO == -1) { if (storeProduct.UnitsInStock < request.DisplayUnitsIO) { response.ErrorMessages.Add("موجودی انبار مجازی کافی نیست"); return(response); } else { product.UnitsInStock += request.DisplayUnitsIO; storeProduct.UnitsInStock -= request.DisplayUnitsIO; } } if (request.IO == 1) { if (productLog.Product.UnitsInStock < request.DisplayUnitsIO) { response.ErrorMessages.Add("موجودی انبار اصلی کافی نیست"); return(response); } else { product.UnitsInStock -= request.DisplayUnitsIO; storeProduct.UnitsInStock += request.DisplayUnitsIO; } } storeProduct.RowVersion += 1; _storeProductrepository.Save(storeProduct); } else { StoreProduct _storeProduct = new StoreProduct(); _storeProduct.ID = Guid.NewGuid(); _storeProduct.CreateDate = PersianDateTime.Now; _storeProduct.CreateEmployee = _employeeRepository.FindBy(CreateEmployeeID); _storeProduct.Product = this._productRepository.FindBy(request.ProductID); _storeProduct.Store = this._storRepository.FindBy(request.StoreID); _storeProduct.UnitsInStock = 0; if (request.IO == -1) { if (storeProduct.UnitsInStock < request.DisplayUnitsIO) { response.ErrorMessages.Add("موجودی انبار مجازی کافی نیست"); return(response); } else { product.UnitsInStock += request.DisplayUnitsIO; _storeProduct.UnitsInStock -= request.DisplayUnitsIO; } } else { if (productLog.Product.UnitsInStock < request.DisplayUnitsIO) { response.ErrorMessages.Add("موجودی انبار اصلی کافی نیست"); return(response); } else { product.UnitsInStock -= request.DisplayUnitsIO; _storeProduct.UnitsInStock += request.DisplayUnitsIO; } } _storeProduct.RowVersion = 1; _storeProductrepository.Add(_storeProduct); } _productRepository.Save(product); _productLogRepository.Add(productLog); #endregion _uow.Commit(); return(response); }