class Correios::ReverseLogistics::CreateShippingsWithCollection
Public Class Methods
new(data = {})
click to toggle source
Calls superclass method
# File lib/reverse_logistics/requests/create_shippings_with_collection.rb, line 4 def initialize(data = {}) @credentials = Correios.credentials @show_request = data[:show_request] @receiver = data[:receiver] @service_code = data[:service_code] @shippings = data[:shippings] super() end
Public Instance Methods
request()
click to toggle source
# File lib/reverse_logistics/requests/create_shippings_with_collection.rb, line 14 def request puts xml if @show_request == true begin format_response(ReverseLogistics.client.call( :solicitar_postagem_simultanea, soap_action: '', xml: xml ).to_hash) rescue Savon::SOAPFault => error generate_soap_fault_exception(error) rescue Savon::HTTPError => error generate_http_exception(error.http.code) end end
Private Instance Methods
format_response(response)
click to toggle source
# File lib/reverse_logistics/requests/create_shippings_with_collection.rb, line 106 def format_response(response) response = response[:solicitar_postagem_simultanea_response][:solicitar_postagem_simultanea] generate_revese_logistics_exception(response) shippings = response[:resultado_solicitacao] shippings = [shippings] if shippings.is_a?(Hash) { shippings: shippings.map {|s| format_shipping(s)} } end
format_shipping(shipping)
click to toggle source
# File lib/reverse_logistics/requests/create_shippings_with_collection.rb, line 116 def format_shipping(shipping) if shipping[:codigo_erro].to_i.zero? { type: inverse_reverse_shipping_type(shipping[:tipo]), code: shipping[:id_cliente], ticket_number: shipping[:numero_coleta], label_number: shipping[:numero_etiqueta], object_id: shipping[:id_obj], deadline: string_to_date(shipping[:prazo]) } else { type: inverse_reverse_shipping_type(shipping[:tipo]), code: shipping[:id_cliente], error: shipping[:descricao_erro] } end end
xml()
click to toggle source
# File lib/reverse_logistics/requests/create_shippings_with_collection.rb, line 31 def xml Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml| xml['soap'].Envelope(ReverseLogistics.namespaces) do xml['soap'].Body do xml['ns1'].solicitarPostagemSimultanea do parent_namespace = xml.parent.namespace xml.parent.namespace = nil xml.codAdministrativo @credentials.administrative_code xml.cartao @credentials.card xml.codigo_servico @service_code xml.destinatario do receiver_address = @receiver[:address] xml.nome @receiver[:name] xml.ddd @receiver[:phone][0, 2] xml.telefone @receiver[:phone][2, @receiver[:phone].length - 1] xml.email @receiver[:email] xml.logradouro receiver_address[:street] xml.numero receiver_address[:number] xml.complemento receiver_address[:additional] xml.bairro receiver_address[:neighborhood] xml.cidade receiver_address[:city] xml.uf receiver_address[:state] xml.cep receiver_address[:zip_code] xml.referencia end @shippings.each do |shipping| goods = shipping[:goods] || [] objects = shipping[:objects] || [{}] xml.coletas_solicitadas do xml.tipo reverse_shipping_type(shipping[:type]) xml.id_cliente shipping[:code] xml.valor_declarado shipping[:declared_value] xml.descricao shipping[:description] xml.cklist shipping[:check_list] xml.documento shipping[:document] xml.obj shipping[:label_number] xml.obs shipping[:note] xml.remetente do sender = shipping[:sender] sender_address = shipping[:sender][:address] xml.nome sender[:name] xml.ddd sender[:phone][0, 2] xml.telefone sender[:phone][2, sender[:phone].length - 1] xml.ddd_celular sender[:cellphone][0, 2] xml.celular sender[:cellphone][2, sender[:phone].length - 1] xml.email sender[:email] xml.sms bool_to_string(sender[:send_sms]) xml.identificacao sender[:document] xml.logradouro sender_address[:street] xml.numero sender_address[:number] xml.complemento sender_address[:additional] xml.bairro sender_address[:neighborhood] xml.referencia xml.cidade sender_address[:city] xml.uf sender_address[:state] xml.cep sender_address[:zip_code] end goods.each do |good| xml.produto do xml.codigo good[:code] xml.tipo good[:type] xml.qtd good[:amount] end end end end xml.parent.namespace = parent_namespace end end end end.doc.root.to_xml end