public async Task RegisterPurchaseAsync(StockMovement stockMovement)
        {
            using (var client = BuildClient())
            {
                var route = routeProvider.BuildPurchaseRoute(BaseUrl, stockMovement.Id);

                HttpResponseMessage response = await client.PostAsJsonAsync(route, stockMovement);
            }
        }
Exemplo n.º 2
0
        public void UpdateStore(DBSite site, StockMovement store)
        {
            string qry = "DELETE FROM tblProductLedger WHERE productLedgerNumber = " + store.ProductLedgerNumber;

            site.Execute(qry);

            // update
            SaveStore(site, store, 1);
        }
Exemplo n.º 3
0
        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());
            }
        }
Exemplo n.º 4
0
        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();
        }
Exemplo n.º 5
0
 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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        //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"));
            }
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 12
0
        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);
            }
        }
Exemplo n.º 19
0
        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);
            }
        }
Exemplo n.º 21
0
        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();
                    }
                }
            }
        }
Exemplo n.º 22
0
        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;
            }
        }
Exemplo n.º 23
0
        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);
            }
        }
Exemplo n.º 24
0
 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));
     }
 }
Exemplo n.º 25
0
        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);
                }
            }
        }
Exemplo n.º 26
0
        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);
        }
Exemplo n.º 30
0
        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;
            }
        }
Exemplo n.º 31
0
        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;
        }
Exemplo n.º 32
0
        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;
        }