private void AddControl()
        {
            DateTime beforeDay = GenerationData.CurrentDay;

            if (scheduleDay.CanAddShift()) // if all shifts not used.
            {
                scheduleDay.AddLogic();
                scheduleLine = (CoatingScheduleLine)scheduleDay.ChildrenLogic.Last(); // add a shift
            }
            else
            {
                // advance a day and remove expected inventory
                GenerationData.CurrentDay = ShiftHandler.CoatingInstance.GetNextWorkingDay(GenerationData.CurrentDay);

                schedule.AddLogic();
                scheduleDay      = (CoatingScheduleDay)schedule.ChildrenLogic.Last();
                scheduleDay.Date = GenerationData.CurrentDay;
                scheduleDay.AddLogic();
                scheduleLine = (CoatingScheduleLine)scheduleDay.ChildrenLogic.Last();
            }

            // decrement inventory
            int daysAdded = (GenerationData.CurrentDay - beforeDay).Days;

            if (daysAdded > 0)
            {
                GenerationData.DecrementInventory(daysAdded);
            }

            GenerationData.AddPressProduction();

            // reset the state for the next shift
            GenerationData.ResetForNextShift();
        }