/// <summary>
        /// Save the Revised Budget object by splitting it into several object according to
        /// startYearMonth and endYearMonth values.
        /// </summary>
        /// <param name="startYearMonth">The startYearMonth value</param>
        /// <param name="endYearMonth">The endYearMonth value</param>
        /// <param name="otherCosts">other costs object that will be saved if it is not null</param>
        /// <param name="isAssociateCurrency">specifies if a conversion must be made from the associate currency to the cost center currency before saving</param>
        /// <param name="associateCurrency">the id of the associate currency</param>
        /// <param name="converter">the currency converter object to be used for the currency conversion</param>
        /// <param name="scaleOption">the amount scale from the budget interface (if it is not unit, a multiplication must be made before saving)</param>
        private void SaveSplitted(YearMonth startYearMonth, YearMonth endYearMonth, RevisedBudgetOtherCosts otherCosts, bool isAssociateCurrency, int associateCurrency, CurrencyConverter converter, AmountScaleOption scaleOption)
        {
            //TODO: Implement transactions

            //Get the months difference
            int monthsNo = endYearMonth.GetMonthsDiffrence(startYearMonth) + 1;

            int[]     newHours = Rounding.Divide(this.NewHours, monthsNo);
            decimal[] newSales = Rounding.Divide(this.NewSales, monthsNo);
            //Iterate through each month and construct the InitialBudget object
            for (YearMonth currentYearMonth = new YearMonth(startYearMonth.Value); currentYearMonth.Value <= endYearMonth.Value; currentYearMonth.AddMonths(1))
            {
                //construct a new revised budget object
                RevisedBudget newBudget = new RevisedBudget(this.CurrentConnectionManager);
                newBudget.IdProject    = this.IdProject;
                newBudget.IdPhase      = this.IdPhase;
                newBudget.IdWP         = this.IdWP;
                newBudget.IdCostCenter = this.IdCostCenter;
                newBudget.IdAssociate  = this.IdAssociate;
                newBudget.YearMonth    = currentYearMonth.Value;
                newBudget.NewHours     = newHours[currentYearMonth.GetMonthsDiffrence(startYearMonth)];
                newBudget.NewSales     = newSales[currentYearMonth.GetMonthsDiffrence(startYearMonth)];
                newBudget.SaveHours    = this.SaveHours;
                if (this.State == EntityState.New)
                {
                    newBudget.SetNew();
                }
                if (this.State == EntityState.Modified)
                {
                    newBudget.SetModified();
                }
                if (this.State == EntityState.Deleted)
                {
                    newBudget.SetDeleted();
                }

                //Apply the cost center currency if this is the case
                if (isAssociateCurrency)
                {
                    newBudget.ApplyCostCenterCurrency(associateCurrency, converter);
                }
                //Apply the amount scale
                newBudget.ApplyAmountScaleOption(scaleOption);

                //Saves the new budget
                int idNewBudget = newBudget.Save();
            }
            //Insert Other cost object
            if (otherCosts != null)
            {
                otherCosts.SaveSplitted(startYearMonth, endYearMonth, isAssociateCurrency, this.IdCostCenter, associateCurrency, converter);
            }
        }