/// <summary>
 /// Update an existing entity
 /// </summary>
 /// <param name="cf">A company file that has been retrieved</param>
 /// <param name="entity">The entity to update</param>
 /// <param name="credentials">The credentials to access the company file</param>
 /// <param name="onComplete">The action to call when the operation is complete</param>
 /// <param name="onError">The action to call when the operation has an error</param>
 /// <param name="errorLevel"></param>
 public void Update(CompanyFile cf, AccountBudget entity, ICompanyFileCredentials credentials,
                    Action<HttpStatusCode, string> onComplete, Action<Uri, Exception> onError,
                    ErrorLevel errorLevel = ErrorLevel.IgnoreWarnings)
 {
     var queryString = QueryStringFromErrorLevel(errorLevel);
     MakeApiPutRequestDelegate(
         BuildUri(cf, entity.FinancialYear, extraQueryString: queryString),
         entity, credentials, onComplete, onError);
 }
 /// <summary>
 /// Update an existing entity
 /// </summary>
 /// <param name="cf">A company file that has been retrieved</param>
 /// <param name="entity">The entity to update</param>
 /// <param name="credentials">The credentials to access the company file</param>
 /// <param name="errorLevel"></param>
 /// <returns></returns>
 public Task<string> UpdateAsync(CompanyFile cf, AccountBudget entity, ICompanyFileCredentials credentials,
                                 ErrorLevel errorLevel = ErrorLevel.IgnoreWarnings)
 {
     return this.UpdateAsync(cf, entity, credentials, CancellationToken.None, errorLevel);
 }
        /// <summary>
        /// Update an existing entity
        /// </summary>
        /// <param name="cf">A company file that has been retrieved</param>
        /// <param name="entity">The entity to update</param>
        /// <param name="credentials">The credentials to access the company file</param>
        /// <param name="errorLevel"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public Task<string> UpdateAsync(CompanyFile cf, AccountBudget entity, ICompanyFileCredentials credentials,
                                        CancellationToken cancellationToken,
                                        ErrorLevel errorLevel = ErrorLevel.IgnoreWarnings)
        {
            var queryString = QueryStringFromErrorLevel(errorLevel);

            return
                this.MakeApiPutRequestAsync(
                    this.BuildUri(cf, entity.FinancialYear,
                                  extraQueryString: queryString), entity, credentials, cancellationToken);
        }
        /// <summary>
        /// Update an existing entity
        /// </summary>
        /// <param name="cf">A company file that has been retrieved</param>
        /// <param name="entity">The entity to update</param>
        /// <param name="credentials">The credentials to access the company file</param>
        /// <param name="errorLevel"></param>
        /// <returns></returns>
        public string Update(CompanyFile cf, AccountBudget entity, ICompanyFileCredentials credentials,
                             ErrorLevel errorLevel = ErrorLevel.IgnoreWarnings)
        {
            var queryString = QueryStringFromErrorLevel(errorLevel);

            return
                MakeApiPutRequestSync(
                    BuildUri(cf, entity.FinancialYear,
                             extraQueryString: queryString), entity, credentials);
        }