def update_access_and_billing!(params)
      response = @@soap.updateClientAccessAndBilling(
      :apiKey => @apiKey,
      :clientID => @clientID,
      :accessLevel => params[:accessLevel],
      :username => params.fetch(:username, ""),
      :password => params.fetch(:password, ""),
      :billingType => params.fetch(:billingType, ""),
      :currency => params.fetch(:currency, ""),
      :deliveryFee => params.fetch(:deliveryFee, ""),
      :costPerRecipient => params.fetch(:costPerRecipient, ""),
      :designAndSpamTestFee => params.fetch(:designAndSpamTestFee, "")
      )
      handle_response response.client_UpdateAccessAndBillingResult
    end
def update_access_and_billing!(params)
      response = @@soap.updateClientAccessAndBilling(
      :apiKey => @apiKey,
      :clientID => @clientID,
      :accessLevel => params[:accessLevel],
      :username => params.fetch(:username, ""),
      :password => params.fetch(:password, ""),
      :billingType => params.fetch(:billingType, ""),
      :currency => params.fetch(:currency, ""),
      :deliveryFee => params.fetch(:deliveryFee, ""),
      :costPerRecipient => params.fetch(:costPerRecipient, ""),
      :designAndSpamTestFee => params.fetch(:designAndSpamTestFee, "")
      )
      handle_response response.client_UpdateAccessAndBillingResult
    end
Update the access and billing settings of an existing client, leaving the basic details untouched.

Here's a list of all the parameters you'll need to pass to the Campaigning::Client#update_access_and_billing! method. Only the :+access_level+ parameter
is required for all calls. The relevance and necessity of the other parameters depends on the chosen AccessLevel (and BillingType),
and will be fully described along with each parameter.

Available _params_ argument are:
   * :accessLevel - An integer describing the client's ability to access different areas of the application. Influences the significance
                     and requirements of the following parameters. See http://www.campaignmonitor.com/api/method/client-updateaccessandbilling/#accesslevels
                     for a full description of available levels.
   * :username - Client login username. Not required and ignored if AccessLevel is set to 0.
   * :password - Client login password. Not required and ignored if AccessLevel is set to 0.
   * :billingType - Client billing type, only required if :accessLevel is set to allow the client to create and send campaigns
   * :currency - Billing currency for this client, only required if :billingType is set to either ClientPaysAtStandardRate or
                 ClientPaysWithMarkup. See full details: http://www.campaignmonitor.com/api/method/client-updateaccessandbilling/#currencies.
   * :deliveryFee - Flat rate delivery fee to be charged to the client for each campaign sent, expressed in the chosen currency's
                     major unit, but without the currency symbol (for example, sending "6.5" means "$6.50" if USD is used). Only
                     required if BillingType is set to ClientPaysWithMarkup, in which case it should be at least equal to the standard rate.
                     Further detail is available at http://help.campaignmonitor.com/topic.aspx?t=118.
   * :costPerRecipient - Additional cost added to the campaign for each email address the campaign is sent to, expressed in the chosen
                           currency's minor unit (for example, sending "1.5" means 1.5 cents per email address if USD is used). Only required
                           if BillingType is set to ClientPaysWithMarkup, in which case it should be at least equal to the standard cost/recipient
                           rate. Further detail is available at http://help.campaignmonitor.com/topic.aspx?t=118.
   * :designAndSpamTestFee - Expressed in the chosen currency's major unit (for example, sending "10" means "$10" if USD is used). Only required
                                 if BillingType is set to ClientPaysWithMarkup and client has access to design and spam tests, in which case the fee
                                 should be equal to or higher than the standard rate (identical to the standard DeliveryFee for that currency).



Please note that for reasons of security there is no way to set a client's credit card details via the API. It will have to be done in the application.

*Return*:

*Success*: Upon a successful call, this method will return a Campaigning::Result object wich consists of a +code+ and +message+ fields
containing a successful message.

*Error*: An Exception containing the cause of the error will be raised.