public async Task RegisterPurchaseAsync(StockMovement stockMovement) { using (var client = BuildClient()) { var route = routeProvider.BuildPurchaseRoute(BaseUrl, stockMovement.Id); HttpResponseMessage response = await client.PostAsJsonAsync(route, stockMovement); } }
public void UpdateStore(DBSite site, StockMovement store) { string qry = "DELETE FROM tblProductLedger WHERE productLedgerNumber = " + store.ProductLedgerNumber; site.Execute(qry); // update SaveStore(site, store, 1); }
public async Task <int> Outbound(StockMovement stockMovement) { using (var db = new CyzaTestEntities()) { var repository = new StockMovementRepository(db); await repository.Outbound(stockMovement); return(await db.SaveChangesAsync()); } }
public EntityByAdded(int MoveId, int StockId, short Input, short Out) { StockMovement movement = new StockMovement(); movement.HAREKETID = MoveId; movement.STOCKID = StockId; movement.GIRIS = Input; movement.CIKIS = Out; EntityByConnection.Edmx.StockMovement.Add(movement); EntityByConnection.Edmx.SaveChanges(); }
public static StockMovementDto FromModel(StockMovement model) { return(new StockMovementDto() { Id = model.Id, product = ProductDto.FromModel(model.product), DocumentID = model.DocumentID, Quantity = model.Quantity, StockMovementType = StockMovementTypeDto.FromModel(model.StockMovementType), }); }
public async Task ShouldDeleteLocationWithProducts_TheProductsStockShouldBeMovedToMainLocation() { // Arrange User admin = await AppServices.UserService.GetByIdAsync(1); Location mainLocation = await AppServices.LocationService.GetMainAsync(); await AppServices.LocationService.CreateAsync(_mockLocation); Product product = new Product() { Reference = "mockProduct", Name = "Mock product" }; await AppServices.ProductService.CreateAsync(product, admin.UserId); // Add product stock to the main location await AppServices.StockMovementService.CreateMovementInsideMainLocationAsync(product.ProductId, 20, true, admin.UserId); // Act // Move stock to the mock location await AppServices.StockMovementService.MoveStockBetweenLocationsAsync( mainLocation.LocationId, _mockLocation.LocationId, product.ProductId, 10, admin.UserId ); StockMovement smToMockLocation = await AppServices.StockMovementService.GetProductLastMovementAsync(product.ProductId); // Assert Assert.AreEqual(smToMockLocation.FromLocationId, mainLocation.LocationId); Assert.AreEqual(smToMockLocation.FromLocationName, mainLocation.Name); Assert.AreEqual(smToMockLocation.ToLocationId, _mockLocation.LocationId); Assert.AreEqual(smToMockLocation.ProductId, product.ProductId); Assert.AreEqual(smToMockLocation.Qty, 10); Assert.AreEqual(smToMockLocation.Stock, 10); // Act await AppServices.LocationService.DeleteAsync(new int[] { _mockLocation.LocationId }, 1); Location dbLocation = await AppServices.LocationService.GetByIdAsync(_mockLocation.LocationId); StockMovement smBackToMainLocation = await AppServices.StockMovementService.GetProductLastMovementAsync(product.ProductId); // Assert Assert.IsNull(dbLocation); Assert.IsNull(smBackToMainLocation.FromLocationId); Assert.AreEqual(smBackToMainLocation.FromLocationName, _mockLocation.Name); Assert.AreEqual(smBackToMainLocation.ToLocationId, mainLocation.LocationId); Assert.AreEqual(smBackToMainLocation.ProductId, product.ProductId); Assert.AreEqual(smBackToMainLocation.Qty, 10); Assert.AreEqual(smBackToMainLocation.Stock, 20); }
public void FindStockMovementByItemCodeTest() { //Arrange StockMovement a = context.StockMovement.First(); int expected = context.StockMovement.Where(x => x.Item.ItemCode == a.Item.ItemCode).ToList().Count; //Act var result = stockmovementService.FindStockMovementByItemCode(a.Item.ItemCode).Count; //Assert Assert.AreEqual(expected, result); }
//Initializers #region InitializeDatabase /// <summary> /// Initializes the database /// </summary> private void InitializeDatabase() { MailingCostCountry mailingCostCountry = new MailingCostCountry() { Name = "Germany", IsoCode2 = "DE", IsoCode3 = "DEU", DpdCostsUnto4kg = 4, DpdCostsUnto31_5kg = 15, DhlCosts = 0, DhlProductCode = DhlZones.Germany, HideNetPrices = false }; MyDataContext.Default.MailingCostCountries.Add(mailingCostCountry); MaterialGroup materialGroup = new MaterialGroup() { Name = "MaterialGroup1", AdditionalDescriptionEnglish = String.Empty, AdditionalDescriptionGerman = String.Empty, DescriptionEnglish = String.Empty, DescriptionGerman = String.Empty, EbayAuctionHtmlTemplate = String.Empty, IntroductionEnglish = String.Empty, IntroductionGerman = String.Empty }; MyDataContext.Default.MaterialGroups.Add(materialGroup); Supplier supplier = new Supplier() { Name = "Supplier", EmailAddress = String.Empty }; MyDataContext.Default.Suppliers.Add(supplier); Article article1 = new Article() { ArticleNumber = "art001", DescriptionEnglish = "descEn", DescriptionGerman = "descDe", IsInEbay = true, IsInMagento = true, MaterialGroup = materialGroup, MustSyncStockAmount = false, NameEnglish = "NameEn", NameGerman = "NameDe", NameIntern = "NameIntern", PictureName1 = String.Empty, PictureName2 = String.Empty, PictureName3 = String.Empty, PurchasePrice = 10, SellingPriceGross = 100, SellingPriceWholesaleGross = 80, Supplier = supplier, SupplierArticleNumber = "Sup1", Tags = String.Empty, SyncTechnicalInfo = String.Empty, EAN = String.Empty, EbayArticleNumber = String.Empty }; MyDataContext.Default.Articles.Add(article1); Article article2 = new Article() { ArticleNumber = "art002", DescriptionEnglish = "descEn", DescriptionGerman = "descDe", IsInEbay = true, IsInMagento = true, MaterialGroup = materialGroup, MustSyncStockAmount = false, NameEnglish = "NameEn", NameGerman = "NameDe", NameIntern = "NameIntern", PictureName1 = String.Empty, PictureName2 = String.Empty, PictureName3 = String.Empty, PurchasePrice = 10, SellingPriceGross = 100, SellingPriceWholesaleGross = 80, Supplier = supplier, SupplierArticleNumber = "Sup1", Tags = String.Empty, SyncTechnicalInfo = String.Empty, EAN = String.Empty, EbayArticleNumber = String.Empty }; MyDataContext.Default.Articles.Add(article2); StockMovement stockMovement1 = new StockMovement(article1) { Amount = 100, Reason = "test for art001", Timestamp = DateTime.Now }; MyDataContext.Default.StockMovements.Add(stockMovement1); StockMovement stockMovement2 = new StockMovement(article2) { Amount = 100, Reason = "test for art002", Timestamp = DateTime.Now }; MyDataContext.Default.StockMovements.Add(stockMovement2); MyDataContext.Default.SaveChanges(); }
public void ApproveStockAdjustmentTest() { //Arrange Item item = context.Item.Where(x => x.ItemCode == "he06").First(); StockAdjustmentDetail sd = new StockAdjustmentDetail(); sd.Item = item; sd.OriginalQuantity = 10; sd.AfterQuantity = 20; List <StockAdjustmentDetail> list = new List <StockAdjustmentDetail>(); list.Add(sd); StockAdjustment expect = new StockAdjustment(); Random rd = new Random(); int i = rd.Next(); string id = "he07"; expect.StockAdjustmentId = id; expect.CreatedDateTime = DateTime.Now; expect.StockAdjustmentDetails = list; service.CreatePendingStockAdjustment(expect); StockMovement sm = new StockMovement(); try { //Act var result = service.ApproveStockAdjustment(id); sm = context.StockMovement.Where(x => x.Item.ItemCode == "he06").First(); //Assert int latest_id = stockMovementRepository.Count(); sm = stockMovementRepository.FindById(latest_id); Assert.IsTrue(expect.Status.StatusId == 6); Assert.IsTrue(item.Inventory.Quantity == 20); Assert.IsTrue(sm.AfterQuantity == 20); stockMovementRepository.Delete(sm); stockAdjustmentRepository.Delete(expect); itemRepository.Delete(item); } catch (Exception e) { Assert.IsTrue(e.Message.Contains("can't find StockAdjustment")); } }
public void FindStockMovementByStockAdjustmentIdTest() { //Arrange //Data is in existing db StockMovement a = context.StockMovement.First(); int expected = context.StockMovement.Where(x => x.StockAdjustmentId == a.StockAdjustmentId).ToList().Count; //Act var result = stockmovementService.FindStockMovementByStockAdjustmentId(a.StockAdjustmentId).Count; //Assert Assert.AreEqual(expected, result); }
public void ApproveStockAdjustment_Test() { StockAdjustment sa = new StockAdjustment(); sa.StockAdjustmentId = "test1"; sa.Remarks = "THIS IS A TEST"; sa.CreatedBy = new UserService(context).FindUserByEmail("*****@*****.**"); sa.CreatedDateTime = DateTime.Now; sa.Status = statusRepository.FindById(4); StockAdjustmentDetail sad = new StockAdjustmentDetail(); sad.StockAdjustmentId = "test1"; sad.Reason = "test1"; sad.ItemCode = "C001"; sad.Item = itemRepository.FindById("C001"); sad.OriginalQuantity = 0; sad.AfterQuantity = 10; List <StockAdjustmentDetail> detaillist = new List <StockAdjustmentDetail>(); detaillist.Add(sad); sa.StockAdjustmentDetails = detaillist; saRepository.Save(sa); //sadRepository.Save(sad); List <ViewModelFromEditDetail> list = new List <ViewModelFromEditDetail>(); ViewModelFromEditDetail v1 = new ViewModelFromEditDetail(); v1.StockAdjustmentID = "test1"; v1.Reason = "test1"; v1.Itemcode = "C001"; list.Add(v1); StockAdjustmentAPIController controller = new StockAdjustmentAPIController() { CurrentUserName = "******", Context = this.context }; controller.ApproveStockAdjustment(list); Assert.AreEqual(saRepository.FindById("test1").Status.StatusId, 6); saRepository.Delete(saRepository.FindById("test1")); StockMovement sv = context.StockMovement.OrderByDescending(x => x.StockMovementId).First(); smRepository.Delete(sv); }
public string Delete(int id) { StockMovement stockMovement = stockMovementDal.Get(p => p.Id == id); stockMovementDal.Delete(stockMovement); JObject jsonObject = new JObject(); jsonObject.Add("Status", "success"); jsonObject.Add("ErrorMessage", "Kayıt başarıyla silindi."); JArray array = new JArray(); array.Add(jsonObject); return(JsonConvert.SerializeObject(array)); }
private static StockMovementBaseViewModel ConvertToBaseViewModel(StockMovement dbModel) { var viewModel = new StockMovementBaseViewModel { Id = dbModel.Id, product = ProductDto.FromModel(dbModel.product), DocumentID = dbModel.DocumentID, Quantity = dbModel.Quantity, StockMovementType = StockMovementTypeDto.FromModel(dbModel.StockMovementType), createdBy = dbModel.createdBy, }; return viewModel; }
public StockMovement SaveStockMovement(DeliveryOrderDetail deliveryOrderDetail) { StockMovement sm = new StockMovement(); sm.DeliveryOrderDetail = deliveryOrderDetail; sm.DeliveryOrderNo = deliveryOrderDetail.DeliveryOrderNo; sm.DeliveryOrderDetailItemCode = deliveryOrderDetail.ItemCode; sm.Item = deliveryOrderDetail.Item; sm.OriginalQuantity = inventoryRepository.FindById(deliveryOrderDetail.ItemCode).Quantity; sm.AfterQuantity = sm.OriginalQuantity + deliveryOrderDetail.ActualQuantity; sm.CreatedDateTime = DateTime.Now; sm.StockMovementId = IdService.GetNewStockMovementId(context); return(stockMovementRepository.Save(sm)); }
public void SaveEditTest() { //Arrange StockMovement a = context.StockMovement.Where(x => x.DisbursementId == "TEST").First(); string expected = "DEMO"; a.DisbursementId = expected; //Act var result = stockmovementService.Save(a); //Assert Assert.AreEqual(expected, result.DisbursementId); }
public StockMovement CreateStockMovement(StockAdjustmentDetail detail) { StockMovement sm = this.InstantiateStockMovement(); sm.StockAdjustmentDetail = detail; sm.StockAdjustmentId = detail.StockAdjustmentId; sm.Item = detail.Item; sm.OriginalQuantity = detail.Item.Inventory.Quantity; //should be same as detail.OriginalQuantity sm.AfterQuantity = detail.AfterQuantity; //Update inventory quantity itemService.UpdateQuantity(sm.Item, sm.AfterQuantity); return(this.Save(sm)); }
public StockMovement CreateStockMovement(DeliveryOrderDetail detail) { StockMovement sm = this.InstantiateStockMovement(); sm.DeliveryOrderDetail = detail; sm.DeliveryOrderNo = detail.DeliveryOrderNo; sm.Item = detail.Item; sm.OriginalQuantity = itemService.FindInventoryByItemCode(detail.ItemCode).Quantity; sm.AfterQuantity = itemService.FindInventoryByItemCode(detail.ItemCode).Quantity - sm.DeliveryOrderDetail.ActualQuantity; //Update inventory quantity itemService.AddQuantity(sm.Item, detail.ActualQuantity); return(this.Save(sm)); }
public void FindStockMovementByItemCodeTest() { //Arrange StockMovement a = context.StockMovement.Where(x => x.DisbursementId == "TEST").First(); int expected = context.StockMovement.Where(x => x.Item.ItemCode == a.Item.ItemCode).ToList().Count; //Act var result = stockmovementService.FindStockMovementByItemCode("a.Item.ItemCode"); //Assert foreach (StockMovement i in result) { Assert.AreEqual(a.Item.ItemCode, i.Item.ItemCode); } }
public static string ConcatMovementString(this StockMovement stockMovement) { string fromLocation = (stockMovement.FromLocation != null) ? stockMovement.FromLocation.Name : stockMovement.FromLocationName; string toLocation = (stockMovement.ToLocation != null) ? stockMovement.ToLocation.Name : stockMovement.ToLocationName; string concat = $"{Phrases.StockMovementFrom}: {fromLocation ?? "---"}" + Environment.NewLine + $"{Phrases.StockMovementTo}: {toLocation ?? "---"}"; return(concat); }
protected void StockCorrectureButton_Click(Object sender, EventArgs e) { try { StockMovement newMovement = new StockMovement(this.RequestAddOn.Query.Article); newMovement.Amount = this.StockCorrectureAmountTextBox.Text.ToDecimal(); newMovement.Reason = this.StockCorrectureReasonTextBox.Text; MyDataContext.Default.StockMovements.Add(newMovement); MyDataContext.Default.SaveChanges(); } catch (Exception ex) { this.Master.ShowError(ex); } }
private void buttonModify_Click_1(object sender, EventArgs e) { using (SqlConnection sqlConnection = new SqlConnection(_ConnectionString)) { sqlConnection.Open(); //On ouvre la connexion using (SqlCommand sqlCommand = sqlConnection.CreateCommand()) { // Requête exécutée sqlCommand.CommandText = $"INSERT INTO StockMovement([Date],[EmployeeCode],[IsStockEntry]) VALUES (@Date,@EmployeeCode,@IsStockEntry)"; //Paramètre de notre sqlCommand.Parameters.AddWithValue("Date", dateTimePickerProduct.Value); sqlCommand.Parameters.AddWithValue("EmployeeCode", textBoxCodeEmployee.Text); sqlCommand.Parameters.AddWithValue("IsStockEntry", "0"); sqlCommand.ExecuteNonQuery(); textBoxCodeEmployee.Clear(); } using (SqlCommand command = sqlConnection.CreateCommand()) { int stock = 0; //On préciser le texte de la commande command.CommandText = "SELECT Identifier FROM Stockmovement"; //On exécute la requête et on obtient un SqlDataReader using (SqlDataReader reader = command.ExecuteReader()) { //Tant qu'il y a des résultats, on passe au suivant while (reader.Read()) { StockMovement stockMovement = new StockMovement(); _StockMovement.Add(stockMovement); stockMovement.Identifier = reader.GetInt32(0); //Lecture d'un entier stock = stockMovement.Identifier; } } using (SqlCommand sqlCommand = sqlConnection.CreateCommand()) { // Requête exécutée sqlCommand.CommandText = $"INSERT INTO StockMovementProduct([IdentifierProduct],[IdentifierStockMovement]) VALUES (@IdentifierProduct,@IdentifierStockMovement)"; //Paramètre de notre sqlCommand.Parameters.AddWithValue("IdentifierProduct", comboBoxProduct.SelectedValue); sqlCommand.Parameters.AddWithValue("IdentifierStockMovement", stock); sqlCommand.ExecuteNonQuery(); textBoxQuantity.Clear(); } } } }
public async Task CreateMovementInsideMainLocationAsync(int productId, float qty, bool isEntry, int userId) { try { Location mainLocation = await AppServices.LocationService.GetMainAsync(); ProductLocation productLocation = await AppServices.ProductLocationService .GetOneAsync(productId, mainLocation.LocationId); // If is an exit movement, set negative qty float qtyToMove = isEntry ? qty : (qty * (-1)); StockMovement movement = new StockMovement() { UserId = userId, ProductId = productId, Qty = qtyToMove, }; if (isEntry) { movement.ToLocationId = mainLocation.LocationId; movement.ToLocationName = mainLocation.Name; } else { movement.FromLocationId = mainLocation.LocationId; movement.FromLocationName = mainLocation.Name; } // Create the stock movement await CreateAsync(movement); // Update the stock in the ProductLocation relation productLocation.Stock += qtyToMove; await AppServices.NotificationService.ToggleStockAlertsAsync(productLocation, productLocation.Stock); await _repository.SaveChangesAsync(); } catch (OperationErrorException operationErrorException) { throw operationErrorException; } }
public void Add <T>(T entity) where T : class { _context.Add(entity); if (entity is Product product) { StockMovement firstMovement = new StockMovement() { Amount = 0, Product = product, Balance = 0, Date = DateTime.Now, MovementType = _context.StockMovementTypes.Where(m => m.Name == "Initial balance").FirstOrDefault() }; _context.Add(firstMovement); } }
public string Update(StockMovement entity) { result = validator.Validate(entity); if (result.IsValid) { stockMovementDal.Update(entity); JObject jsonObject = new JObject(); jsonObject.Add("Status", "success"); jsonObject.Add("ErrorMessage", "Kayıt başarıyla güncellendi"); JArray array = new JArray(); array.Add(jsonObject); return(JsonConvert.SerializeObject(array)); } else { return(JsonConvert.SerializeObject(result.Errors)); } }
public void TestClean() { StockMovement sm = context.StockMovement.Where(x => x.DeliveryOrderNo == "DOTEST").FirstOrDefault(); if (sm != null) { stockMovementRepository.Delete(sm); } List <DeliveryOrder> doList = context.DeliveryOrder.Where(x => x.DeliveryOrderNo == "DOTEST").ToList(); if (doList.Count > 0) { foreach (DeliveryOrder d in doList) { deliveryOrderRepository.Delete(d); } } PurchaseOrder p = context.PurchaseOrder.Where(x => x.PurchaseOrderNo == "VALLI").First(); purchaseOrderRepository.Delete(p); List <DeliveryOrderDetail> dod = context.DeliveryOrderDetail.Where(x => x.DeliveryOrderNo == "DOTEST").ToList(); if (dod.Count > 0) { foreach (DeliveryOrderDetail d in dod) { deliveryOrderDetailRepository.Delete(d); } } List <DeliveryOrderDetail> dod1 = context.DeliveryOrderDetail.Where(x => x.DeliveryOrderNo == "DODTEST").ToList(); if (dod.Count > 0) { foreach (DeliveryOrderDetail d in dod) { deliveryOrderDetailRepository.Delete(d); } } }
public async Task CreateAsync(StockMovement data, bool applyDbChanges = false) { try { int locationId = ( int )((data.ToLocationId != null) ? data.ToLocationId : data.FromLocationId); ProductLocation productLocation = await AppServices.ProductLocationService .GetOneAsync(data.ProductId, locationId); // Calculate the new accumulated stock if (productLocation != null) { data.Stock = (productLocation.Stock + data.Qty); await AppServices.NotificationService.ToggleStockAlertsAsync(productLocation, data.Stock); } else { // Set the accumulated if it is the first movement data.Stock = data.Qty; } await _repository.StockMovements.AddAsync(data); // Normally this service is called inside other services and the call of the // SaveChangesAsync method it will be the responsibility of the other service. In // some circumstances we want the apply the db changes after create the stock // movement, for that we need to sent the applyDbChanges setted to true. if (applyDbChanges) { await _repository.SaveChangesAsync(); } } catch { OperationErrorsList errorsList = new OperationErrorsList(); errorsList.AddError("add-stock-movement-db-error", Phrases.GlobalErrorOperationDB); throw new ServiceErrorException(errorsList); } }
public async Task CreateAsync(ProductLocation productLocation, int userId, bool applyDbChanges = true, bool createStockMovement = true) { try { await ValidateProductLocationDataAsync(productLocation); // Get the app settings to set the min stock AppSettings appSettings = await AppServices.AppSettingsService.GetAppSettingsAsync(); productLocation.MinStock = appSettings.DefaultGlobalMinStock; await _repository.ProductLocations.AddAsync(productLocation); StockMovement stockMovement = new StockMovement() { UserId = userId, ProductId = productLocation.ProductId, ToLocationId = productLocation.LocationId, ToLocationName = productLocation.Location.Name, Qty = productLocation.Stock, }; if (createStockMovement) { await AppServices.StockMovementService.CreateAsync(stockMovement); } if (applyDbChanges) { await _repository.SaveChangesAsync(); } } catch (OperationErrorException operationErrorException) { // catch operations errors throw operationErrorException; } catch (ServiceErrorException serviceErrorException) { // catch service errors throw serviceErrorException; } }
public void FindStockMovementByStockAdjustmentIdTest() { //Arrange StockMovement a = new StockMovement(); a.CreatedDateTime = DateTime.Now; a.StockAdjustmentId = IdService.GetNewStockAdjustmentId(context); a.Item = context.Item.First(); stockmovementService.Save(a); int expected = context.StockMovement.Where(x => x.StockAdjustmentId == a.StockAdjustmentId).ToList().Count; //Act var result = stockmovementService.FindStockMovementByStockAdjustmentId(a.StockAdjustmentId).Count; stockmovementRepository.Delete(a); //Assert Assert.AreEqual(expected, result); }
public void RetrieveItemsTest() { //Arrange Retrieval retrieval = context.Retrieval.Where(x => x.RetrievalId == "TEST").First(); //quantity of the first disbursement detail in the first disbursement in retrieval int before = retrieval.Disbursements.First().DisbursementDetails.First().Item.Inventory.Quantity; int quantity = retrieval.Disbursements.First().DisbursementDetails.First().ActualQuantity; //Act var result = retrievalService.RetrieveItems(retrieval); //Assert //compare item quantity int after = retrieval.Disbursements.First().DisbursementDetails.First().Item.Inventory.Quantity; Assert.AreEqual(quantity, before - after); //find the stockmovement StockMovement sm = context.StockMovement.Where(x => x.DisbursementId == "TEST").First(); Assert.IsNotNull(sm); }
public StockMovementItem(StockMovement stockMovement, Inventory inventory, Storage storage, long quantity) { _stockMovement = stockMovement; _inventory = inventory; _storage = storage; _quantity = quantity; _previousStock = _storage.GetStockOf(inventory); if (_stockMovement.Type == StockMovementType.In || _stockMovement.Type == StockMovementType.Initialbalance) { _storage.Store(inventory, quantity); _currentStock = _previousStock + _quantity; } else { _storage.Take(inventory, quantity); _currentStock = _previousStock - _quantity; } }
public StockMovement Save() { StockMovement stockMovement = null; var session = NHibernateSessionManager.GetLocalSession(); session.DoTransactional(sess => { stockMovement = new StockMovement( _form.StockMovementType, _form.MovementRemark, _form.MovementReference ); foreach (var dto in _form.StockMovementItemDtos) { stockMovement.AddMovementItem(dto.Inventory, dto.Storage, dto.Quantity); } stockMovement = _movementRepository.Insert(stockMovement); }); return stockMovement; }
public Inventory Save() { Inventory inventory = null; var session = NHibernateSessionManager.GetLocalSession(); session.DoTransactional(sess => { inventory = _inventoryRepository.Insert( new Inventory( _form.Code, _form.InventoryName, _form.Description, _form.BuyPrice, _form.UnitOfMeasurement ) ); if (_form.InventoryStorageDto.Count > 0) { var stockMovement = new StockMovement( StockMovementType.INITIALBALANCE, @"CREATED AUTOMATICALLY FROM ADD NEW INVENTORY"); foreach (var inventoryStorageDto in _form.InventoryStorageDto) { stockMovement.AddMovementItem(inventory, inventoryStorageDto.Storage, inventoryStorageDto.Quantity); _storageRepository.Update(inventoryStorageDto.Storage); } _stockMovementRepository.Insert(stockMovement); } if (_form.AddAsProduct) { var product = new Product( _form.ProductCode, inventory, _form.ProductCategory, _form.SellPrice ) { Volume = _form.Volume }; _productRepository.Insert(product); } if (_form.AddAsMerchandise) { var merchandise = new Merchandise( _form.MerchandiseCode, inventory, _form.MerchandisePoint, 1, inventory.Name, inventory.Description ); _merchandiseRepository.Insert(merchandise); } }); return inventory; }