public void CanAddMultiRowWithSameNomenclatureTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var sizeType = new SizeType(); uow.Save(sizeType); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры", SizeType = sizeType }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var sizeX = new Size { Name = "X", SizeType = sizeType }; var sizeXl = new Size { Name = "XL", SizeType = sizeType }; uow.Save(sizeX); uow.Save(sizeXl); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.WearSize = sizeX; incomeItem1.Amount = 10; var incomeItem2 = income.AddItem(nomenclature); incomeItem2.WearSize = sizeXl; incomeItem2.Amount = 5; income.UpdateOperations(uow, ask); var validator = new QS.Validation.ObjectValidator(); Assert.That(validator.Validate(income), Is.True); uow.Save(income); uow.Commit(); var stock = new StockRepository() .StockBalances(uow, warehouse, new List <Nomenclature> { nomenclature }, new DateTime(2017, 1, 2)); Assert.That(stock.Count, Is.EqualTo(2)); } }
public void UpdateIncomeTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse { Name = "TestWarehouse" }; uow.Save(warehouse); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var nomenclature1 = new Nomenclature { Name = "TestNomenclature1" }; uow.Save(nomenclature1); var nomenclature2 = new Nomenclature { Name = "TestNomenclature2" }; uow.Save(nomenclature2); var item1 = income.AddItem(nomenclature1); var item2 = income.AddItem(nomenclature2); income.UpdateOperations(uow, ask); uow.Save(income); uow.Commit(); var stockRepository = new StockRepository(); var stock1 = stockRepository.StockBalances(uow, warehouse, new List <Nomenclature> { nomenclature1, nomenclature2 }, new DateTime(2017, 1, 2)); Assert.That(stock1.Count(), Is.EqualTo(2)); income.RemoveItem(item1); income.UpdateOperations(uow, ask); uow.Save(income); uow.Commit(); var stock2 = stockRepository.StockBalances(uow, warehouse, new List <Nomenclature> { nomenclature1, nomenclature2 }, new DateTime(2017, 1, 2)); Assert.That(stock2.Count(), Is.EqualTo(1)); } }
public void UpdateEmployeeWearItems_NextIssueDiffIdsTest() { NewSessionWithSameDB(); var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var sizeType = new SizeType(); var heightType = new SizeType(); uow.Save(sizeType); uow.Save(heightType); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры", SizeType = sizeType }; uow.Save(nomenclatureType); //Поднимаем id номенклатуры до 2. uow.Save(new Nomenclature()); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var size = new Size { SizeType = sizeType }; var height = new Size { SizeType = heightType }; uow.Save(size); uow.Save(height); var position1 = new StockPosition(nomenclature, 0, size, height); //Поднимаем id сиза до 3. uow.Save(new ProtectionTools { Name = "Id = 1" }); uow.Save(new ProtectionTools { Name = "Id = 2" }); var protectionTools = new ProtectionTools { Name = "СИЗ для тестирования" }; protectionTools.AddNomeclature(nomenclature); uow.Save(protectionTools); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Month; normItem.PeriodCount = 1; uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); uow.Save(employee); uow.Commit(); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; income.UpdateOperations(uow, ask); uow.Save(income); var expense = new Expense { Operation = ExpenseOperations.Employee, Warehouse = warehouse, Employee = employee, Date = new DateTime(2018, 10, 22) }; expense.AddItem(position1, 1); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); uow.Save(expense); uow.Commit(); expense.UpdateEmployeeWearItems(); uow.Commit(); using (var uow2 = UnitOfWorkFactory.CreateWithoutRoot()) { var employeeTest = uow2.GetById <EmployeeCard>(employee.Id); Assert.That(employeeTest.WorkwearItems[0].NextIssue, Is.EqualTo(new DateTime(2018, 11, 22))); } } }
public void IssuingToSubdivisionTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var sizeType = new SizeType(); uow.Save(sizeType); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры", SizeType = sizeType }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Name = "Тестовая номеклатура", Type = nomenclatureType }; uow.Save(nomenclature); var size = new Size { SizeType = sizeType }; var height = new Size(); uow.Save(size); uow.Save(height); var position1 = new StockPosition(nomenclature, 0, size, height); var subdivision = new Subdivision { Name = "Тестовое подразделение" }; uow.Save(subdivision); var place = new SubdivisionPlace { Name = "Тестовое место", Subdivision = subdivision }; uow.Save(place); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; income.UpdateOperations(uow, ask); uow.Save(income); var expense = new Expense { Operation = ExpenseOperations.Object, Warehouse = warehouse, Subdivision = subdivision, Date = new DateTime(2018, 10, 22) }; var item1 = expense.AddItem(position1, 1); item1.SubdivisionPlace = place; //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); uow.Save(expense); uow.Commit(); var listed = SubdivisionRepository.ItemsBalance(uow, subdivision); var balance = listed.First(); Assert.That(balance.Amount, Is.EqualTo(1)); Assert.That(balance.NomeclatureName, Is.EqualTo("Тестовая номеклатура")); Assert.That(balance.Place, Is.EqualTo("Тестовое место")); Assert.That(balance.WearPercent, Is.EqualTo(0m)); } }
public void GetReferencedDocuments_ReturnTest() { var interactive = Substitute.For <IInteractiveQuestion>(); interactive.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры" }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var employee = new EmployeeCard(); uow.Save(employee); var expense = new Expense { Date = new DateTime(2021, 9, 10), Employee = employee, Operation = ExpenseOperations.Employee, Warehouse = warehouse, }; var size = new Size(); var height = new Size(); uow.Save(size); uow.Save(height); var stockPosition = new StockPosition(nomenclature, 0, size, height); var item = expense.AddItem(stockPosition, 10); expense.UpdateOperations(uow, baseParameters, interactive); uow.Save(expense); //Возвращаем 2 штуки var income = new Income { Date = new DateTime(2021, 9, 11), Operation = IncomeOperations.Return, EmployeeCard = employee, Warehouse = warehouse, }; var returnItem = income.AddItem(item.EmployeeIssueOperation, 2); income.UpdateOperations(uow, interactive); uow.Save(income); uow.Commit(); var repository = new EmployeeIssueRepository(uow); var result = repository.GetReferencedDocuments(returnItem.ReturnFromEmployeeOperation.Id); Assert.That(result.First().DocumentType, Is.EqualTo(StokDocumentType.IncomeDoc)); Assert.That(result.First().DocumentId, Is.EqualTo(income.Id)); Assert.That(result.First().ItemId, Is.EqualTo(returnItem.Id)); } }
public void WriteoffMainTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры" }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var size = new Size(); var height = new Size(); uow.Save(size); uow.Save(height); var position1 = new StockPosition(nomenclature, 0, size, height); var protectionTools = new ProtectionTools { Name = "СИЗ для тестирования" }; protectionTools.AddNomeclature(nomenclature); uow.Save(protectionTools); var employee = new EmployeeCard(); uow.Save(employee); uow.Commit(); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; income.UpdateOperations(uow, ask); uow.Save(income); var expense = new Expense { Operation = ExpenseOperations.Employee, Warehouse = warehouse, Employee = employee, Date = new DateTime(2018, 10, 22) }; var item = expense.AddItem(position1, 3); //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); uow.Save(expense); uow.Commit(); var balance = EmployeeRepository.ItemsBalance(uow, employee, new DateTime(2018, 10, 30)); Assert.That(balance.First().Amount, Is.EqualTo(3)); //Списываем var writeoff = new Writeoff { Date = new DateTime(2018, 10, 25) }; writeoff.AddItem(item.EmployeeIssueOperation, 1); //Обновление операций writeoff.UpdateOperations(uow); uow.Save(writeoff); uow.Commit(); var balanceAfter = EmployeeRepository.ItemsBalance(uow, employee, new DateTime(2018, 10, 30)); Assert.That(balanceAfter.First().Amount, Is.EqualTo(2)); } }
public void UpdateOperations_DeleteRowTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { BuisnessLogicGlobalEventHandler.Init(ask, UnitOfWorkFactory); var warehouse = new Warehouse(); uow.Save(warehouse); var nomenclatureType = new ItemsType(); nomenclatureType.Name = "Тестовый тип номенклатуры"; uow.Save(nomenclatureType); var nomenclature = new Nomenclature(); nomenclature.Type = nomenclatureType; uow.Save(nomenclature); var position1 = new StockPosition(nomenclature, 0, null, null); var nomenclatureType2 = new ItemsType(); nomenclatureType2.Name = "Тестовый тип номенклатуры2"; uow.Save(nomenclatureType2); var nomenclature2 = new Nomenclature(); nomenclature2.Type = nomenclatureType2; uow.Save(nomenclature2); var protectionTools1 = new ProtectionTools(); protectionTools1.Name = "СИЗ для тестирования"; protectionTools1.AddNomeclature(nomenclature); uow.Save(protectionTools1); var protectionTools2 = new ProtectionTools(); protectionTools2.Name = "СИЗ для тестирования2"; protectionTools2.AddNomeclature(nomenclature2); uow.Save(protectionTools2); var position2 = new StockPosition(nomenclature2, 0, null, null); var norm = new Norm(); var normItem = norm.AddItem(protectionTools1); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; var normItem2 = norm.AddItem(protectionTools2); normItem2.Amount = 1; normItem2.NormPeriod = NormPeriodType.Month; normItem2.PeriodCount = 4; uow.Save(norm); var employee = new EmployeeCard(); employee.HireDate = new DateTime(2018, 1, 15); employee.AddUsedNorm(norm); uow.Save(employee); uow.Commit(); var income = new Income(); income.Warehouse = warehouse; income.Date = new DateTime(2017, 1, 1); income.Operation = IncomeOperations.Enter; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; var incomeItem2 = income.AddItem(nomenclature2); incomeItem2.Amount = 10; income.UpdateOperations(uow, ask); uow.Save(income); var expense = new Expense(); expense.Warehouse = warehouse; expense.Employee = employee; expense.Date = new DateTime(2018, 4, 22); expense.Operation = ExpenseOperations.Employee; expense.AddItem(position1, 1); expense.AddItem(position2, 1); //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); uow.Save(expense); uow.Commit(); expense.UpdateEmployeeWearItems(); employee.WorkwearItems.First(e => e.ProtectionTools.IsSame(protectionTools2)).Created = new DateTime(2018, 4, 22); uow.Save(expense.Employee); uow.Commit(); Assert.That(employee.WorkwearItems.First(e => e.ProtectionTools.IsSame(protectionTools2)).NextIssue, Is.EqualTo(new DateTime(2018, 8, 22)) ); //Выполняем удаление expense.RemoveItem(expense.Items.First(e => e.Nomenclature.Type.IsSame(nomenclatureType2))); uow.Save(expense); uow.Commit(); //проверяем данные using (var uow2 = UnitOfWorkFactory.CreateWithoutRoot("Тест на обработку события удаления uow2")) { var resultEmployee = uow2.GetById <EmployeeCard>(employee.Id); Assert.That(resultEmployee.WorkwearItems.First(e => e.ProtectionTools.IsSame(protectionTools2)).NextIssue, Is.EqualTo(new DateTime(2018, 4, 22))); } } }
public void BestChoise_IssuingMultipleRows_TwoNomeclatureShoesTypeSameNeedsTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var shoes = new SizeType { Name = "Обувь" }; uow.Save(shoes); var winterShoes = new SizeType { Name = "Зимняя обувь" }; uow.Save(winterShoes); var nomenclatureType = new ItemsType { Name = "Обувь", Category = ItemTypeCategory.wear, SizeType = shoes }; uow.Save(nomenclatureType); var nomenclatureType2 = new ItemsType { Name = "Зимняя обувь", Category = ItemTypeCategory.wear, SizeType = winterShoes }; uow.Save(nomenclatureType2); var nomenclature = new Nomenclature { Type = nomenclatureType, Sex = ClothesSex.Men }; uow.Save(nomenclature); var nomenclature2 = new Nomenclature { Type = nomenclatureType2, Sex = ClothesSex.Men }; uow.Save(nomenclature2); var nomenclature3 = new Nomenclature { Type = nomenclatureType, Sex = ClothesSex.Men }; uow.Save(nomenclature3); var protectionTools = new ProtectionTools { Name = "Номеклатура нормы" }; protectionTools.AddNomeclature(nomenclature); protectionTools.AddNomeclature(nomenclature3); uow.Save(protectionTools); var protectionTools2 = new ProtectionTools { Name = "Номенклатура нормы_2" }; protectionTools2.AddNomeclature(nomenclature2); uow.Save(protectionTools2); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; var normItem2 = norm.AddItem(protectionTools2); normItem2.Amount = 1; normItem2.NormPeriod = NormPeriodType.Year; normItem2.PeriodCount = 1; uow.Save(norm); var shoesSize = new Size { SizeType = shoes, Name = "42" }; var winterShoesSize = new Size { SizeType = winterShoes, Name = "43" }; uow.Save(shoesSize); uow.Save(winterShoesSize); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); employee.Sex = Sex.M; Assert.That(employee.WorkwearItems.Count, Is.GreaterThan(0)); uow.Save(employee); uow.Commit(); var employeeShoesSize = new EmployeeSize { Size = shoesSize, SizeType = shoes, Employee = employee }; var employeeWinterShoesSize = new EmployeeSize { Size = winterShoesSize, SizeType = winterShoes, Employee = employee }; uow.Save(employeeShoesSize); uow.Save(employeeWinterShoesSize); employee.Sizes.Add(employeeShoesSize); employee.Sizes.Add(employeeWinterShoesSize); var income = new Income { Warehouse = warehouse, Date = new DateTime(2020, 07, 20), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 1; incomeItem1.WearSize = shoesSize; var incomeItem2 = income.AddItem(nomenclature2); incomeItem2.Amount = 2; incomeItem2.WearSize = winterShoesSize; var incomeItem3 = income.AddItem(nomenclature3); incomeItem3.Amount = 3; incomeItem3.WearSize = shoesSize; income.UpdateOperations(uow, ask); uow.Save(income); uow.Commit(); Assert.That(uow.GetAll <WarehouseOperation>().Count(), Is.EqualTo(3)); employee.FillWearInStockInfo(uow, baseParameters, warehouse, new DateTime(2020, 07, 22)); Assert.That(employee.GetUnderreceivedItems(baseParameters).Count(), Is.GreaterThan(0)); Assert.That(employee.GetUnderreceivedItems(baseParameters).Count(), Is.EqualTo(2)); var employeeCardItem = employee.GetUnderreceivedItems(baseParameters).First(); Assert.That(employeeCardItem.InStock.Count(), Is.GreaterThan(0)); var bestChoiceInStock = employeeCardItem.BestChoiceInStock; var bestChoiceCount = employeeCardItem.BestChoiceInStock.Count(); Assert.That(employeeCardItem.BestChoiceInStock.Count(), Is.GreaterThan(0)); Assert.That(employeeCardItem.BestChoiceInStock.Count(), Is.EqualTo(2)); } }
public void IncomeOnTwoWarehousesTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var warehouse2 = new Warehouse(); uow.Save(warehouse2); var sizeType = new SizeType(); uow.Save(sizeType); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры", SizeType = sizeType }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var sizeX = new Size { Name = "X", SizeType = sizeType }; uow.Save(sizeX); var income1 = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income1.AddItem(nomenclature); incomeItem1.WearSize = sizeX; incomeItem1.Amount = 10; var incomeItem2 = income1.AddItem(nomenclature); incomeItem2.WearSize = sizeX; incomeItem2.Amount = 5; income1.UpdateOperations(uow, ask); uow.Save(income1); var income2 = new Income { Warehouse = warehouse2, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var income2Item1 = income2.AddItem(nomenclature); income2Item1.WearSize = sizeX; income2Item1.Amount = 7; income2.UpdateOperations(uow, ask); uow.Save(income2); uow.Commit(); var stockRepository = new StockRepository(); var stock1 = stockRepository.StockBalances(uow, warehouse, new List <Nomenclature> { nomenclature }, new DateTime(2017, 1, 2)); Assert.That(stock1.Sum(x => x.Amount), Is.EqualTo(15)); var stock2 = stockRepository.StockBalances(uow, warehouse2, new List <Nomenclature> { nomenclature }, new DateTime(2017, 1, 2)); Assert.That(stock2.Sum(x => x.Amount), Is.EqualTo(7)); } }
public void UpdateEmployeeWearItems_NextIssueDiffIdsTest() { NewSessionWithSameDB(); var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры" }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType, Name = "Тестовая номенклатура" }; uow.Save(nomenclature); var protectionTools = new ProtectionTools { Name = "СИЗ для тестирования" }; protectionTools.AddNomeclature(nomenclature); uow.Save(protectionTools); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Month; normItem.PeriodCount = 1; uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); uow.Save(employee); uow.Commit(); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; income.UpdateOperations(uow, ask); uow.Save(income); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); employee.FillWearInStockInfo(uow, baseParameters, warehouse, new DateTime(2018, 10, 22)); var expense = new Expense { Operation = ExpenseOperations.Employee, Warehouse = warehouse, Employee = employee, Date = new DateTime(2018, 10, 22) }; var itemExpense = expense.AddItem(employee.WorkwearItems.First(), baseParameters); itemExpense.Nomenclature = nomenclature; itemExpense.Amount = 1; //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); uow.Save(expense); uow.Commit(); expense.UpdateEmployeeWearItems(); uow.Commit(); using (var uow2 = UnitOfWorkFactory.CreateWithoutRoot()) { var employeeTest = uow2.GetById <EmployeeCard>(employee.Id); Assert.That(employeeTest.WorkwearItems[0].NextIssue, Is.EqualTo(new DateTime(2018, 11, 22))); } var returnOnStock = new Income { Operation = IncomeOperations.Return, Warehouse = warehouse, EmployeeCard = employee, Date = new DateTime(2018, 11, 2) }; returnOnStock.AddItem(expense.Items.First().EmployeeIssueOperation, 1); returnOnStock.UpdateOperations(uow, ask); uow.Save(returnOnStock); uow.Commit(); returnOnStock.UpdateEmployeeWearItems(); uow.Commit(); using (var uow2 = UnitOfWorkFactory.CreateWithoutRoot()) { var employeeTest = uow2.GetById <EmployeeCard>(employee.Id); Assert.That(employeeTest.WorkwearItems[0].NextIssue, Is.EqualTo(new DateTime(2018, 11, 2))); } } }
public void UpdateOperations_RecalculeteDatesAfterCreateVacation() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var nomenclatureType = new ItemsType(); nomenclatureType.Name = "Тестовый тип номенклатуры"; uow.Save(nomenclatureType); var nomenclature = new Nomenclature(); nomenclature.Type = nomenclatureType; uow.Save(nomenclature); var position1 = new StockPosition(nomenclature, 0, null, null); var nomenclature2 = new Nomenclature(); nomenclature2.Type = nomenclatureType; uow.Save(nomenclature2); var protectionTools = new ProtectionTools(); protectionTools.AddNomeclature(nomenclature); protectionTools.AddNomeclature(nomenclature2); protectionTools.Name = "СИЗ для тестирования"; uow.Save(protectionTools); var position2 = new StockPosition(nomenclature2, 0, null, null); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); uow.Save(employee); uow.Commit(); var income = new Income(); income.Warehouse = warehouse; income.Date = new DateTime(2017, 1, 1); income.Operation = IncomeOperations.Enter; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; var incomeItem2 = income.AddItem(nomenclature2); incomeItem2.Amount = 5; income.UpdateOperations(uow, ask); uow.Save(income); var expense = new Expense(); expense.Warehouse = warehouse; expense.Employee = employee; expense.Date = new DateTime(2018, 5, 10); expense.Operation = ExpenseOperations.Employee; expense.AddItem(position1, 1); expense.AddItem(position2, 1); //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); uow.Save(expense); uow.Commit(); expense.UpdateEmployeeWearItems(); uow.Commit(); Assert.That(employee.WorkwearItems[0].NextIssue, Is.EqualTo(new DateTime(2020, 5, 10)) ); //Добавляем новый отпуск на 10 дней. var vacationType = new VacationType(); vacationType.Name = "Тестовый отпуск"; vacationType.ExcludeFromWearing = true; var vacation = new EmployeeVacation(); vacation.BeginDate = new DateTime(2019, 2, 1); vacation.EndDate = new DateTime(2019, 2, 10); vacation.VacationType = vacationType; employee.AddVacation(vacation); vacation.UpdateRelatedOperations(uow, new workwear.Repository.Operations.EmployeeIssueRepository(), baseParameters, ask); uow.Save(vacationType); uow.Save(vacation); uow.Save(employee); Assert.That(employee.WorkwearItems[0].NextIssue, Is.EqualTo(new DateTime(2020, 5, 20)) ); } }
public void Deletion_ExpenseEmployeeDocumentTest() { NewSessionWithSameDB(); var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var navigation = Substitute.For <INavigationManager>(); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры" }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var position1 = new StockPosition(nomenclature, 0, null, null); var nomenclature2 = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature2); var position2 = new StockPosition(nomenclature2, 0, null, null); var protectionTools = new ProtectionTools { Name = "СИЗ для тестирования" }; protectionTools.AddNomeclature(nomenclature); uow.Save(protectionTools); var protectionTools2 = new ProtectionTools { Name = "СИЗ для тестирования 2" }; protectionTools2.AddNomeclature(nomenclature2); uow.Save(protectionTools2); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; var normItem2 = norm.AddItem(protectionTools2); normItem2.Amount = 1; normItem2.NormPeriod = NormPeriodType.Month; normItem2.PeriodCount = 1; uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); uow.Save(employee); uow.Commit(); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; var incomeItem2 = income.AddItem(nomenclature2); incomeItem2.Amount = 5; income.UpdateOperations(uow, ask); uow.Save(income); var expense = new Expense { Operation = ExpenseOperations.Employee, Warehouse = warehouse, Employee = employee, Date = new DateTime(2018, 10, 22) }; expense.AddItem(position1, 1); expense.AddItem(position2, 1); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); expense.CreateIssuanceSheet(null); //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); uow.Save(expense); uow.Save(expense.IssuanceSheet); uow.Commit(); expense.UpdateEmployeeWearItems(); uow.Commit(); var docs = uow.GetAll <Expense>().ToList(); Assert.That(docs.Count, Is.EqualTo(1)); //Непосредственно удаление документа var cancel = new CancellationTokenSource(); using (var uowDel = UnitOfWorkFactory.CreateWithoutRoot()) { var deletionService = new DeleteCore(DeleteConfig.Main, uowDel); deletionService.PrepareDeletion(typeof(Expense), expense.Id, cancel.Token); Assert.That(deletionService.TotalLinks, Is.GreaterThan(0)); deletionService.RunDeletion(cancel.Token); } //Проверяем удаление var expenseId = expense.Id; using (var uowCheck = UnitOfWorkFactory.CreateWithoutRoot()) { //Проверяем что удалили документ. docs = uow.GetAll <Expense>().ToList(); Assert.That(docs.Count, Is.Zero); //Проверяем что случайно не удалили СИЗ и номеклатуру. var protections = uow.GetAll <ProtectionTools>().ToList(); Assert.That(protections.Count, Is.EqualTo(2)); var nomenclatures = uow.GetAll <Nomenclature>().ToList(); Assert.That(nomenclatures.Count, Is.EqualTo(2)); } } }
public void BestChoise_SelfNomenclatureFirstTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var sizeType = new SizeType(); uow.Save(sizeType); var nomenclatureType = new ItemsType { Name = "Обувь", Category = ItemTypeCategory.wear, SizeType = sizeType }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType, Sex = ClothesSex.Men, }; uow.Save(nomenclature); var nomenclature2 = new Nomenclature { Type = nomenclatureType, Sex = ClothesSex.Men, }; uow.Save(nomenclature2); var protectionTools = new ProtectionTools { Name = "Номенклатура нормы" }; protectionTools.AddNomeclature(nomenclature); var protectionTools2 = new ProtectionTools { Name = "Номенклатура нормы_2" }; protectionTools2.AddNomeclature(nomenclature2); protectionTools.AddAnalog(protectionTools2); protectionTools2.AddAnalog(protectionTools); uow.Save(protectionTools); uow.Save(protectionTools2); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; var normItem2 = norm.AddItem(protectionTools2); normItem2.Amount = 1; normItem2.NormPeriod = NormPeriodType.Year; normItem2.PeriodCount = 1; uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); employee.Sex = Sex.M; Assert.That(employee.WorkwearItems.Count, Is.EqualTo(2)); uow.Save(employee); uow.Commit(); var size = new Size { SizeType = sizeType }; uow.Save(size); var employeeSize = new EmployeeSize { SizeType = sizeType, Size = size, Employee = employee }; uow.Save(employeeSize); employee.Sizes.Add(employeeSize); var income = new Income { Warehouse = warehouse, Date = new DateTime(2020, 07, 20), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 1; incomeItem1.WearSize = size; var incomeItem2 = income.AddItem(nomenclature2); incomeItem2.Amount = 2; incomeItem2.WearSize = size; income.UpdateOperations(uow, ask); uow.Save(income); uow.Commit(); Assert.That(uow.GetAll <WarehouseOperation>().Count(), Is.EqualTo(2)); employee.FillWearInStockInfo(uow, baseParameters, warehouse, new DateTime(2020, 07, 22)); var item1 = employee.WorkwearItems.FirstOrDefault(x => x.ActiveNormItem == normItem); var item2 = employee.WorkwearItems.FirstOrDefault(x => x.ActiveNormItem == normItem2); Assert.That(item1.BestChoiceInStock.First().Nomenclature.Id, Is.EqualTo(nomenclature.Id)); Assert.That(item1.BestChoiceInStock.Count(), Is.EqualTo(2)); Assert.That(item2.BestChoiceInStock.First().Nomenclature.Id, Is.EqualTo(nomenclature2.Id)); Assert.That(item2.BestChoiceInStock.Count(), Is.EqualTo(2)); } }
public void BestChoise_IssuingMultipleRows_TwoNomeclatureSameNeedsTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var nomenclatureType = new ItemsType(); nomenclatureType.Name = "Тестовый тип номенклатуры"; nomenclatureType.Category = ItemTypeCategory.wear; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var nomenclature2 = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature2); var protectionTools = new ProtectionTools { Name = "Номенклатура нормы" }; protectionTools.AddNomeclature(nomenclature); protectionTools.AddNomeclature(nomenclature2); uow.Save(protectionTools); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); Assert.That(employee.WorkwearItems.Count, Is.GreaterThan(0)); uow.Save(employee); uow.Commit(); var income = new Income { Warehouse = warehouse, Date = new DateTime(2020, 07, 20), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; var incomeItem2 = income.AddItem(nomenclature2); incomeItem2.Amount = 5; income.UpdateOperations(uow, ask); uow.Save(income); uow.Commit(); Assert.That(uow.GetAll <WarehouseOperation>().Count(), Is.EqualTo(2)); employee.FillWearInStockInfo(uow, baseParameters, warehouse, new DateTime(2020, 07, 22)); Assert.That(employee.GetUnderreceivedItems(baseParameters).Count(), Is.GreaterThan(0)); var employeeCardItem = employee.GetUnderreceivedItems(baseParameters).First(); Assert.That(employeeCardItem.BestChoiceInStock.Count(), Is.GreaterThan(0)); var bestChoice = employeeCardItem.BestChoiceInStock.First(); Assert.That(bestChoice.Nomenclature, Is.EqualTo(nomenclature)); } }
public void IssueAndCreateIssuanceSheetTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var sizeType = new SizeType(); var heightType = new SizeType(); uow.Save(sizeType); uow.Save(heightType); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры", SizeType = sizeType, HeightType = heightType }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var protectionTools = new ProtectionTools { Name = "СИЗ для тестирования" }; protectionTools.AddNomeclature(nomenclature); uow.Save(protectionTools); var size = new Size { SizeType = sizeType }; var height = new Size { SizeType = heightType }; uow.Save(size); uow.Save(height); var position1 = new StockPosition(nomenclature, 0, size, height); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); uow.Save(employee); uow.Commit(); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; income.UpdateOperations(uow, ask); uow.Save(income); var expense = new Expense { Operation = ExpenseOperations.Employee, Warehouse = warehouse, Employee = employee, Date = new DateTime(2018, 10, 22) }; var expenseItem = expense.AddItem(position1, 1); expense.CreateIssuanceSheet(null); //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); expense.UpdateIssuanceSheet(); uow.Save(expense.IssuanceSheet); uow.Save(expense); uow.Commit(); expense.UpdateEmployeeWearItems(); uow.Commit(); Assert.That(expense.IssuanceSheet, Is.Not.Null); var issuanceItem = expense.IssuanceSheet.Items.First(); Assert.That(issuanceItem.ExpenseItem, Is.EqualTo(expenseItem)); } }
public void UpdateOperations_IssuingMultipleRows_TwoNomenclatureSameNeedsTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var sizeType = new SizeType(); var heightType = new SizeType(); uow.Save(sizeType); uow.Save(heightType); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры", SizeType = sizeType }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var size = new Size { SizeType = sizeType }; var height = new Size { SizeType = heightType }; uow.Save(size); uow.Save(height); var position1 = new StockPosition(nomenclature, 0, size, height); var nomenclature2 = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature2); var position2 = new StockPosition(nomenclature2, 0, size, height); var protectionTools = new ProtectionTools { Name = "СИЗ для тестирования" }; protectionTools.AddNomeclature(nomenclature); protectionTools.AddNomeclature(nomenclature2); uow.Save(protectionTools); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); uow.Save(employee); uow.Commit(); var employeeSize = new EmployeeSize { Size = size, SizeType = sizeType, Employee = employee }; var employeeHeight = new EmployeeSize { Size = height, SizeType = heightType, Employee = employee }; employee.Sizes.Add(employeeSize); employee.Sizes.Add(employeeHeight); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; var incomeItem2 = income.AddItem(nomenclature2); incomeItem2.Amount = 5; income.UpdateOperations(uow, ask); uow.Save(income); var expense = new Expense { Operation = ExpenseOperations.Employee, Warehouse = warehouse, Employee = employee, Date = new DateTime(2018, 10, 22) }; expense.AddItem(position1, 1); expense.AddItem(position2, 1); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); uow.Save(expense); uow.Commit(); expense.UpdateEmployeeWearItems(); //Тут ожидаем предложение перенести дату использование второй номенклатуры на год. ask.ReceivedWithAnyArgs().Question(String.Empty); Assert.That(employee.WorkwearItems[0].NextIssue, Is.EqualTo(new DateTime(2020, 10, 22)) ); } }
public void ViewModelStandartScriptTest() { var interactive = Substitute.For <IInteractiveQuestion>(); interactive.Question(string.Empty).ReturnsForAnyArgs(true); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { //Ложим на склад первоначальные остатки; var warehouseSource = new Warehouse { Name = "Склад комплектующих" }; uow.Save(warehouseSource); var warehouseResult = new Warehouse { Name = "Склад получение" }; uow.Save(warehouseResult); var sizeType = new SizeType(); uow.Save(sizeType); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры", SizeType = sizeType }; uow.Save(nomenclatureType); var nomenclature1 = new Nomenclature { Type = nomenclatureType, Name = "Комплектующий" }; uow.Save(nomenclature1); var nomenclature2 = new Nomenclature { Type = nomenclatureType, Name = "Результат" }; uow.Save(nomenclature2); var sizeX = new Size { Name = "X", SizeType = sizeType }; uow.Save(sizeX); var sizeXl = new Size { Name = "XL", SizeType = sizeType }; uow.Save(sizeXl); var income1 = new Income { Warehouse = warehouseSource, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income1.AddItem(nomenclature1); incomeItem1.WearSize = sizeX; incomeItem1.Amount = 10; income1.UpdateOperations(uow, interactive); uow.Save(income1); var income2 = new Income { Warehouse = warehouseResult, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var income2Item1 = income2.AddItem(nomenclature2); income2Item1.WearSize = sizeXl; income2Item1.Amount = 7; income2.UpdateOperations(uow, interactive); uow.Save(income2); uow.Commit(); var stockRepository = new StockRepository(); var stock1 = stockRepository .StockBalances(uow, warehouseSource, new List <Nomenclature> { nomenclature1 }, new DateTime(2017, 1, 2)); Assert.That(stock1.Where(x => x.WearSize == sizeX).Sum(x => x.Amount), Is.EqualTo(10)); var stock2 = stockRepository .StockBalances(uow, warehouseResult, new List <Nomenclature> { nomenclature2 }, new DateTime(2017, 1, 2)); Assert.That(stock2.Where(x => x.WearSize == sizeXl).Sum(x => x.Amount), Is.EqualTo(7)); //Создаём комплектацию 5 ед. комплектующих в 5 ед. результата var completion = new Completion { Date = new DateTime(2017, 1, 3), ResultWarehouse = warehouseResult }; completion.AddSourceItem(stock1.First(x => x.WearSize == sizeX).StockPosition, warehouseSource, 5); var itemResult = completion.AddResultItem(nomenclature2); itemResult.WearSize = sizeXl; itemResult.Amount = 5; completion.UpdateItems(); uow.Save(completion); uow.Commit(); var stockSource = stockRepository .StockBalances(uow, warehouseSource, new List <Nomenclature> { nomenclature1 }, new DateTime(2017, 1, 4)); Assert.That(stockSource.Where(x => x.WearSize == sizeX).Sum(x => x.Amount), Is.EqualTo(5)); var stockResult = stockRepository .StockBalances(uow, warehouseResult, new List <Nomenclature> { nomenclature2 }, new DateTime(2017, 1, 4)); Assert.That(stockResult.Where(x => x.WearSize == sizeXl).Sum(x => x.Amount), Is.EqualTo(12)); } }