class Correios::Sigep::RequestShippingsXML
Public Class Methods
new(data = {})
click to toggle source
Calls superclass method
# File lib/sigep/requests/request_shippings_xml.rb, line 4 def initialize(data = {}) @credentials = Correios.credentials @show_request = data[:show_request] @request_id = data[:request_id] super() end
Public Instance Methods
request()
click to toggle source
# File lib/sigep/requests/request_shippings_xml.rb, line 12 def request puts xml if @show_request == true begin format_response(Sigep.client.call( :solicita_xml_plp, 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_invoice(national)
click to toggle source
# File lib/sigep/requests/request_shippings_xml.rb, line 148 def format_invoice(national) { number: national['numero_nota_fiscal'], serie: national['serie_nota_fiscal'], kind: national['natureza_nota_fiscal'], value: national['valor_nota_fiscal'] } end
format_notes(shipping)
click to toggle source
# File lib/sigep/requests/request_shippings_xml.rb, line 123 def format_notes(shipping) notes = [] notes << shipping['rt1'] if shipping['rt1'].present? notes << shipping['rt2'] if shipping['rt2'].present? notes end
format_object(object, weight)
click to toggle source
# File lib/sigep/requests/request_shippings_xml.rb, line 157 def format_object(object, weight) { type: inverse_object_type(object['tipo_objeto']), height: object['dimensao_altura'].to_f, width: object['dimensao_largura'].to_f, length: object['dimensao_comprimento'].to_f, diameter: object['dimensao_diametro'].to_f, weight: weight.to_f } end
format_receiver(receiver, national)
click to toggle source
# File lib/sigep/requests/request_shippings_xml.rb, line 130 def format_receiver(receiver, national) { name: receiver['nome_destinatario'], phone: receiver['telefone_destinatario'], cellphone: receiver['celular_destinatario'], email: receiver['email_destinatario'], address: { zip_code: national['cep_destinatario'], state: national['uf_destinatario'], city: national['cidade_destinatario'], neighborhood: national['bairro_destinatario'], street: receiver['logradouro_destinatario'], number: receiver['numero_end_destinatario'], additional: receiver['complemento_destinatario'] } } end
format_response(response)
click to toggle source
# File lib/sigep/requests/request_shippings_xml.rb, line 48 def format_response(response) response = response[:solicita_xml_plp_response][:return] response = Hash.from_xml(response) request = response['correioslog']['plp'] sender = response['correioslog']['remetente'] shippings = response['correioslog']['objeto_postal'] shippings = [shippings] if shippings.is_a?(Hash) { request_id: request['id_plp'], card: request['cartao_postagem'], global_value: request['valor_global'].to_f, payment_method: inverse_payment_method( response['correioslog']['forma_pagamento'] ), shipping_site: { name: request['nome_unidade_postagem'], code: request['mcu_unidade_postagem'] }, sender: format_sender(sender), shippings: shippings.map {|s| format_shipping(s)} } end
format_sender(sender)
click to toggle source
# File lib/sigep/requests/request_shippings_xml.rb, line 74 def format_sender(sender) { contract: sender['numero_contrato'], board_id: sender['numero_diretoria'], administrative_code: sender['codigo_administrativo'], name: sender['nome_remetente'], phone: sender['telefone_remetente'], fax: sender['fax_remetente'], email: sender['email_remetente'], address: { zip_code: sender['cep_remetente'], state: sender['uf_remetente'], city: sender['cidade_remetente'], neighborhood: sender['bairro_remetente'], street: sender['logradouro_remetente'], number: sender['numero_remetente'], additional: sender['complemento_remetente'] } } end
format_shipping(shipping)
click to toggle source
# File lib/sigep/requests/request_shippings_xml.rb, line 95 def format_shipping(shipping) additional_services = shipping['servico_adicional']['codigo_servico_adicional'] additional_services = [additional_services] if additional_services.is_a?(String) { label_number: shipping['numero_etiqueta'], service_code: shipping['codigo_servico_postagem'], cost_center: shipping['nacional']['centro_custo_cliente'], description: shipping['nacional']['descricao_objeto'], declared_value: shipping['servico_adicional']['valor_declarado'], value: shipping['valor_cobrado'].to_f, proof_number: shipping['numero_comprovante_postagem'], cubage: shipping['cubagem'].to_f, additional_value: string_to_decimal( shipping['nacional']['valor_a_cobrar'] ), additional_services: additional_services, notes: format_notes(shipping), receiver: format_receiver( shipping['destinatario'], shipping['nacional'] ), invoice: format_invoice(shipping['nacional']), object: format_object( shipping['dimensao_objeto'], shipping['peso'] ) } end
xml()
click to toggle source
# File lib/sigep/requests/request_shippings_xml.rb, line 29 def xml Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml| xml['soap'].Envelope(Sigep.namespaces) do xml['soap'].Body do xml['ns1'].solicitaXmlPlp do parent_namespace = xml.parent.namespace xml.parent.namespace = nil xml.idPlpMaster @request_id xml.usuario @credentials.sigep_user xml.senha @credentials.sigep_password xml.parent.namespace = parent_namespace end end end end.doc.root.to_xml end