RemoveCompletedAndDecrementSchedules( MazakSchedules mazakData, bool DecrementPriorityOnDownload) { //remove all completed production var transSet = new MazakWriteData(); var savedParts = new HashSet <string>(); foreach (var schRow in mazakData.Schedules) { var newSchRow = schRow.Clone(); if (schRow.PlanQuantity == schRow.CompleteQuantity) { newSchRow.Command = MazakWriteCommand.Delete; transSet.Schedules.Add(newSchRow); } else { savedParts.Add(schRow.PartName); if (DecrementPriorityOnDownload) { newSchRow.Command = MazakWriteCommand.ScheduleSafeEdit; newSchRow.Priority = Math.Max(newSchRow.Priority - 10, 1); newSchRow.Processes.Clear(); // no edit to processes, just priority transSet.Schedules.Add(newSchRow); } } } return(transSet, savedParts); }
public void DeleteCompletedAndDecrementSchedules() { var schedules = new MazakSchedules() { Schedules = new[] { new MazakScheduleRow() { Id = 1, PartName = "part1:1:1", Comment = MazakPart.CreateComment("uniq1", new [] { 1 }, false), PlanQuantity = 15, CompleteQuantity = 15, Priority = 50, Processes = { new MazakScheduleProcessRow() { MazakScheduleRowId = 1, FixedMachineFlag = 1, ProcessNumber = 1 } } }, new MazakScheduleRow() { Id = 2, PartName = "part2:1:1", Comment = MazakPart.CreateComment("uniq2", new [] { 1 }, false), PlanQuantity = 15, CompleteQuantity = 10, Priority = 50, Processes = { new MazakScheduleProcessRow() { MazakScheduleRowId = 1, FixedMachineFlag = 1, ProcessNumber = 1, ProcessMaterialQuantity = 3, ProcessExecuteQuantity = 2 } } } } }; var(actions, tokeep) = BuildMazakSchedules.RemoveCompletedAndDecrementSchedules(schedules, DecrementPriorityOnDownload: true); schedules.Schedules.First().Command = MazakWriteCommand.Delete; schedules.Schedules.Skip(1).First().Command = MazakWriteCommand.ScheduleSafeEdit; schedules.Schedules.Skip(1).First().Priority = 40; schedules.Schedules.Skip(1).First().Processes.Clear(); actions.Schedules.Should().BeEquivalentTo(schedules.Schedules); actions.Parts.Should().BeEmpty(); actions.Fixtures.Should().BeEmpty(); actions.Pallets.Should().BeEmpty(); tokeep.Should().BeEquivalentTo(new[] { "part2:1:1" }); }