/// <summary>
        /// Retrieves the Merchandise Dates for the Date
        /// </summary>
        /// <param name="_DateTime">
        /// The date you wish to get the list of dates for.
        /// </param>
        /// <returns>
        /// MerchandiseDate
        /// </returns>
        public static MerchandiseDate GetMerchandiseDate(DateTime _DateTime)
        {
            int _Week = DateFunctions.GetWeek(_DateTime);

            int _Period = DateFunctions.GetPeriod(_Week);

            int _Month = (_Period + 1);

            if (_Month == 13)
            {
                _Month = 1;
            }

            Quarter _Quarter = DateFunctions.GetQuarter(_DateTime);

            MerchandiseDate _MerchandiseDate = new MerchandiseDate();

            _MerchandiseDate.Date        = _DateTime;
            _MerchandiseDate.DayOfYear   = DateFunctions.GetDayOfYear(_DateTime);
            _MerchandiseDate.Period      = DateFunctions.GetPeriod(_Week);
            _MerchandiseDate.PeriodName  = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(_Month);
            _MerchandiseDate.Quarter     = _Quarter.Number;
            _MerchandiseDate.QuarterName = _Quarter.Name;
            _MerchandiseDate.Week        = _Week;
            _MerchandiseDate.Year        = DateFunctions.GetYear(_DateTime);

            return(_MerchandiseDate);
        }
        /// <summary>
        /// Adds Merchandise dates for the year specified to the Merchandise Date Dictionaries.
        /// </summary>
        /// <param name="_MerchandiseYear">The Merchandise Year to add.</param>
        protected virtual void AddYear(Int32 _MerchandiseYear)
        {
            foreach (MerchandiseDate _MerchandiseDate in DateFunctions.GetMerchandiseDatesByYear(_MerchandiseYear))
            {
                _ByDateMerchandiseDateDictionary.TryAdd(_MerchandiseDate.Date.Value, _MerchandiseDate);

                DayOfTheYear _DayOfTheYear = new DayOfTheYear(_MerchandiseDate.Year, _MerchandiseDate.DayOfYear);
                _ByDayOfTheYearMerchandiseDateDictionary.TryAdd(_DayOfTheYear, _MerchandiseDate);
            }
        }
        /// <summary>
        /// Get the Merchandise Date for the specified date.
        /// </summary>
        /// <param name="_DateTime">Date you want the Merchandise Date for.</param>
        /// <returns></returns>
        public virtual MerchandiseDate GetMerchandiseDate(DateTime _DateTime)
        {
            MerchandiseDate _MerchandiseDate;

            if (_ByDateMerchandiseDateDictionary.TryGetValue(_DateTime, out _MerchandiseDate))
            {
                return(_MerchandiseDate);
            }

            Int32 _MerchandiseYear = DateFunctions.GetYear(_DateTime);

            AddYear(_MerchandiseYear);

            if (_ByDateMerchandiseDateDictionary.TryGetValue(_DateTime, out _MerchandiseDate))
            {
                return(_MerchandiseDate);
            }

            throw new Exception("An unexpected error occured.");
        }