public void OnShow() { if (isConfigured) { return; } isConfigured = true; Entity.FillWearInStockInfo(UoW, BaseParameters, Entity.Subdivision?.Warehouse, DateTime.Now); Entity.FillWearRecivedInfo(employeeIssueRepository); OnPropertyChanged(nameof(ObservableWorkwearItems)); }
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 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 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_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)); } }