def to_hash(keys = :underscore)
			hash = super(keys)
			hash[get_attribute_key('columns', keys)] = 
				columns_to_hash(COLUMNS, columns, keys)
			hash[get_attribute_key('filter', keys)] = 
				filter_to_hash(FILTERS, keys)
			hash[get_attribute_key('scope', keys)] = scope_to_hash(keys) 
			hash["@xsi:type"] = type_attribute_for_soap 
			return hash
		end
def to_hash(keys = :underscore)
			hash = super(keys)
			hash[get_attribute_key('columns', keys)] = 
				columns_to_hash(COLUMNS, columns, keys)
			hash[get_attribute_key('filter', keys)] = 
				filter_to_hash(FILTERS, keys)
			hash[get_attribute_key('scope', keys)] = scope_to_hash(keys) 
			hash["@xsi:type"] = type_attribute_for_soap 
			return hash
		end
Public : Constructor. Adds a validations for the columns, filter
 and scope attributes

 Author:: jlopezn@neonline.cl

 === Parameters
 * +attributes+ - Hash with the report request attributes

 === Example

   request = BingAdsApi::CampaignPerformanceReportRequest.new(
     :format   => :xml,
     :language => :english,
     :report_name => "Me report",
     :aggregation => :hourly,
     :columns => [:account_name, :account_number, :time_period],
     # The filter is specified as a hash
     :filter => {
       # specifies the Bing expected String value
       :ad_distribution => "Search",
       # specifies criteria as a snake case symbol
       :device_os => :android,
       :device_type => :tablet,
       # criteria nil is similar to not specify it at all
       :status => nil },
     :scope => {
       :account_ids => [123456, 234567],
       :campaigns => [<BingAdsApi::CampaignReportScope>] },
     # predefined date
     :time => :this_week)

   request2 = BingAdsApi::CampaignPerformanceReportRequest.new(
     :format   => :csv,
     :language => :french,
     :report_name => "Me report",
     :aggregation => :daily,
     :columns => [:account_name, :account_number, :time_period],
     # no filter is specified
     :scope => {
       :account_ids => [123456, 234567],
       :campaigns => [<BingAdsApi::CampaignReportScope>] },
     # Custom date range
     :time => {
       :custom_date_range_start => {:day => 1, :month => 12, :year => 2013},
       :custom_date_range_end   => {:day => 12, :month => 12, :year => 2013} }
     )
 Public:: Returns the object as a Hash valid for SOAP requests

 Author:: jlopezn@neonline.cl

 === Parameters
 * +keys_case+ - case for the hashes keys: underscore or camelcase

 Returns:: Hash