public void FillWearRecivedInfo_NotMergeAnalogTest() { using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var nomenclatureType = new ItemsType(); nomenclatureType.Name = "Тестовый тип номенклатуры"; nomenclatureType.Category = ItemTypeCategory.wear; uow.Save(nomenclatureType); var nomenclature = new Nomenclature(); nomenclature.Type = nomenclatureType; nomenclature.Sex = ClothesSex.Men; uow.Save(nomenclature); var protectionToolsAnalog = new ProtectionTools(); protectionToolsAnalog.Name = "Номенклатура нормы Аналог"; protectionToolsAnalog.AddNomeclature(nomenclature); var protectionTools = new ProtectionTools(); protectionTools.Name = "Номенклатура нормы"; protectionTools.AddAnalog(protectionToolsAnalog); protectionTools.AddNomeclature(nomenclature); protectionToolsAnalog.AddAnalog(protectionTools); uow.Save(protectionToolsAnalog); uow.Save(protectionTools); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; var normItem2 = norm.AddItem(protectionToolsAnalog); normItem2.Amount = 2; 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.GreaterThan(0)); uow.Save(employee); uow.Commit(); var warehouseOperation = new WarehouseOperation { Nomenclature = nomenclature, Amount = 1, OperationTime = new DateTime(2018, 1, 20), }; uow.Save(warehouseOperation); var operation = new EmployeeIssueOperation { Employee = employee, ExpiryByNorm = new DateTime(2019, 1, 20), Issued = 1, Nomenclature = nomenclature, NormItem = normItem, ProtectionTools = protectionTools, OperationTime = new DateTime(2018, 1, 20), WarehouseOperation = warehouseOperation, }; uow.Save(operation); var warehouseOperation2 = new WarehouseOperation { Nomenclature = nomenclature, Amount = 2, OperationTime = new DateTime(2018, 1, 20), }; uow.Save(warehouseOperation2); var operation2 = new EmployeeIssueOperation { Employee = employee, ExpiryByNorm = new DateTime(2019, 1, 20), Issued = 2, Nomenclature = nomenclature, NormItem = normItem2, ProtectionTools = protectionToolsAnalog, OperationTime = new DateTime(2018, 1, 20), WarehouseOperation = warehouseOperation, }; uow.Save(operation2); uow.Commit(); employee.FillWearRecivedInfo(new EmployeeIssueRepository(uow)); var item1 = employee.WorkwearItems.FirstOrDefault(x => x.ActiveNormItem == normItem); Assert.That(item1.Amount, Is.EqualTo(1)); var item2 = employee.WorkwearItems.FirstOrDefault(x => x.ActiveNormItem == normItem2); Assert.That(item2.Amount, 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)); } }