/// <summary>
        /// Get the requirements for a day. Creates a new day if there is not one
        /// </summary>
        /// <param name="day"></param>
        /// <returns></returns>
        public RequirementsDay GetRequirementDay(DateTime day)
        {
            var validDay = RequirementsHandler.ValidateDay(day);

            RequirementsDay reqDay = null;

            if (RequiredPieces.ContainsKey(validDay))
            {
                reqDay = RequiredPieces[validDay];
            }
            else
            {
                reqDay = new RequirementsDay(this, validDay);
                RequiredPieces[validDay] = reqDay;
            }

            return(reqDay);
        }
        public void UpdateInventory(DateTime startDay)
        {
            // Validate day
            var validDate = RequirementsHandler.ValidateDay(startDay);

            RequirementsDay reqDay  = null;
            RequirementsDay prevDay = null;

            // add inventory numbers for each day
            reqDay    = GetRequirementDay(validDate);
            validDate = validDate.AddDays(1);

            while (validDate <= RequirementsHandler.GetLatestDay())
            {
                prevDay          = reqDay;
                reqDay           = GetRequirementDay(validDate);
                reqDay.Inventory = prevDay.NextInventoryPieces;
                validDate        = validDate.AddDays(1);
            }
        }
        /// <summary>
        /// Adds a listing to the gross requirements of the item on the date. If another sale is already on that date, the required items are added.
        /// </summary>
        /// <param name="day"></param>
        /// <param name="pieces"></param>
        public void AddSale(DateTime day, double pieces)
        {
            // Validate day
            var validDate = RequirementsHandler.ValidateDay(day);

            // Safe access to dictionary. Creates new entry if needed.
            RequirementsDay requirement = null;

            if (RequiredPieces.ContainsKey(validDate))
            {
                requirement = RequiredPieces[validDate];
                requirement.AddGrossRequirement(pieces);
            }
            else
            {
                requirement = new RequirementsDay(this, validDate);
                RequiredPieces[validDate] = requirement;
                requirement.AddGrossRequirement(pieces);
            }
        }