# File lib/paysimple.rb, line 83
      def update(customer_number, options)
        customer = find(customer_number)
        options = PaySimple.symbolize_hash(options)
        
        # Add the existing customer properties to the options hash unless they already exist
        [
          :CustomerID,
          :SendReceipt, 
          :ReceiptNote, 
          :Notes, 
          :User, 
          :Source, 
          :Schedule, 
          :Next, 
          :NumLeft, 
          :Amount, 
          :Enabled, 
          :CustomData, 
          :Description, 
          :OrderID
        ].each do |property|
          options[property] = customer[property.to_s] unless options.has_key?(property)
        end
        
        # Add the existing customer address properties to the options hash unless they already exist
        options[:BillingAddress] ||= {}
        [
          :FirstName,
          :LastName,
          :Company,
          :Street,
          :Street2,
          :City,
          :State,
          :Zip,
          :Country,
          :Phone,
          :Fax,
          :Email
        ].each do |property|
          options[:BillingAddress][property] = customer["BillingAddress"][property.to_s] unless options[:BillingAddress].has_key?(property)
        end
        
        # Add the existing customer credit card properties to the options hash unless they already exist
        options[:CreditCardData] ||= {}
        [
          :CardNumber,
          :CardExpiration,
          :CardCode,
          :AvsStreet,
          :AvsZip,
          :CardPresent,
          :MagStripe,
          :TermType,
          :MagSupport,
          :XID,
          :CAVV,
          :ECI,
          :InternalCardAuth,
          :Pares
        ].each do |property|
          options[:CreditCardData][property] = customer["CreditCardData"][property.to_s] unless options[:CreditCardData].has_key?(property)
        end
        
        # Add the existing customer check properties to the options hash unless they already exist
        options[:CheckData] ||= {}
        [
          :CheckNumber,
          :Routing,
          :Account,
          :SSN,
          :DriversLicense,
          :DriversLicenseState
        ].each do |property|
          options[:CheckData][property] = customer["CheckData"][property.to_s] unless options[:CheckData].has_key?(property)
        end
        
        PaySimple.send_request(:updateCustomer, customer_number, options)
      end