Method: CdekClient::Client#new_orders

Defined in:
lib/cdek_client/client.rb

#new_orders(params) ⇒ Object



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/cdek_client/client.rb', line 79

def new_orders(params)
  params = normalize_request_data params
  params[:OrderCount] = params[:Order].is_a?(Array) ? params[:Order].length : 1
  params = { DeliveryRequest: params }
  result = authorized_request url_for(:primary, :new_orders), url_for(:secondary, :new_orders), params
  if result.errors.any?
    result.set_data []
    return result
  end
  normalized_data = []
  if result.data[:response].has_key? :DeliveryRequest
    Util.array_wrap(result.data[:response][:DeliveryRequest]).each do |error_data|
      error = CdekClient.get_api_error error_data[:ErrorCode], error_data[:Msg]
      result.add_error error
    end
  end
  if result.data[:response].has_key? :Order
    Util.array_wrap(result.data[:response][:Order]).each do |order_data|
      if order_data.has_key? :ErrorCode
        error = CdekClient.get_api_error order_data[:ErrorCode], order_data[:Msg]
        result.add_error error
      elsif order_data.has_key? :Number
        normalized_order_data = normalize_response_data order_data, response_normalization_rules_for(:new_orders)
        normalized_data.push normalized_order_data
      end
    end
  end
  result.set_data normalized_data
  result
end