Module: Correios::Sigep

Defined in:
lib/correios_gem.rb,
lib/auxiliars/environments.rb,
lib/sigep/auxiliars/shipping_xml.rb,
lib/sigep/requests/cancel_shipping.rb,
lib/sigep/requests/search_customer.rb,
lib/sigep/requests/search_zip_code.rb,
lib/sigep/requests/track_shippings.rb,
lib/sigep/requests/create_shippings.rb,
lib/sigep/requests/check_card_status.rb,
lib/sigep/requests/request_label_numbers.rb,
lib/sigep/requests/request_shippings_xml.rb,
lib/sigep/requests/check_service_availability.rb,
lib/sigep/requests/calculate_label_number_check_digit.rb,
lib/sigep/requests/search_available_additional_services.rb

Defined Under Namespace

Classes: CalculateLabelNumberCheckDigit, CancelShipping, CheckCardStatus, CheckServiceAvailability, CreateShippings, RequestLabelNumbers, RequestShippingsXML, SearchAvailableAdditionalServices, SearchCustomer, SearchZipCode, TrackShippings

Class Method Summary collapse

Class Method Details

.calculate_label_number_check_digit(data = {}) ⇒ Object



130
131
132
# File 'lib/correios_gem.rb', line 130

def self.calculate_label_number_check_digit(data = {})
  CalculateLabelNumberCheckDigit.new(data).request
end

.cancel_shipping(data = {}) ⇒ Object



134
135
136
# File 'lib/correios_gem.rb', line 134

def self.cancel_shipping(data = {})
  CancelShipping.new(data).request
end

.check_card_status(data = {}) ⇒ Object



138
139
140
# File 'lib/correios_gem.rb', line 138

def self.check_card_status(data = {})
  CheckCardStatus.new(data).request
end

.check_service_availability(data = {}) ⇒ Object



142
143
144
# File 'lib/correios_gem.rb', line 142

def self.check_service_availability(data = {})
  CheckServiceAvailability.new(data).request
end

.clientObject



45
46
47
# File 'lib/auxiliars/environments.rb', line 45

def self.client
  base_client(wsdl: wsdl)
end

.create_shippings(data = {}) ⇒ Object



146
147
148
# File 'lib/correios_gem.rb', line 146

def self.create_shippings(data = {})
  CreateShippings.new(data).request
end

.namespacesObject



49
50
51
52
53
54
# File 'lib/auxiliars/environments.rb', line 49

def self.namespaces
  {
    'xmlns:soap' => 'http://schemas.xmlsoap.org/soap/envelope/',
    'xmlns:ns1' => 'http://cliente.bean.master.sigep.bsb.correios.com.br/'
  }
end

.request_label_numbers(data = {}) ⇒ Object



150
151
152
# File 'lib/correios_gem.rb', line 150

def self.request_label_numbers(data = {})
  RequestLabelNumbers.new(data).request
end

.request_shippings_xml(data = {}) ⇒ Object



154
155
156
# File 'lib/correios_gem.rb', line 154

def self.request_shippings_xml(data = {})
  RequestShippingsXML.new(data).request
end

.search_available_additional_services(data = {}) ⇒ Object



158
159
160
# File 'lib/correios_gem.rb', line 158

def self.search_available_additional_services(data = {})
  SearchAvailableAdditionalServices.new(data).request
end

.search_customer(data = {}) ⇒ Object



162
163
164
# File 'lib/correios_gem.rb', line 162

def self.search_customer(data = {})
  SearchCustomer.new(data).request
end

.search_zip_code(data = {}) ⇒ Object



166
167
168
# File 'lib/correios_gem.rb', line 166

def self.search_zip_code(data = {})
  SearchZipCode.new(data).request
end

.shipping_xml(data) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/sigep/auxiliars/shipping_xml.rb', line 3

def self.shipping_xml(data)
  helper = Helper.new
  credentials = Correios.credentials
  sender = data[:sender]
  sender_address = sender[:address]
  shippings = data[:shippings]

  Nokogiri::XML::Builder.new(encoding: 'ISO-8859-1') do |xml|
    xml.correioslog do
      xml.tipo_arquivo 'Postagem'
      xml.versao_arquivo '2.3'
      xml.plp do
        xml.id_plp
        xml.valor_global
        xml.mcu_unidade_postagem
        xml.nome_unidade_postagem
        xml.cartao_postagem credentials.card
      end
      xml.remetente do
        xml.numero_contrato credentials.contract
        xml.numero_diretoria sender[:board_id]
        xml.codigo_administrativo credentials.administrative_code
        xml.nome_remetente sender[:name]
        xml.logradouro_remetente sender_address[:street]
        xml.numero_remetente sender_address[:number]
        xml.complemento_remetente sender_address[:additional]
        xml.bairro_remetente sender_address[:neighborhood]
        xml.cep_remetente sender_address[:zip_code]
        xml.cidade_remetente sender_address[:city]
        xml.uf_remetente sender_address[:state]
        xml.telefone_remetente sender[:phone]
        xml.fax_remetente sender[:fax]
        xml.email_remetente sender[:email]
      end
      xml.forma_pagamento helper.payment_method(data[:payment_method])
      shippings.each do |shipping|
        receiver = shipping[:receiver]
        receiver_address = receiver[:address]
        object = shipping[:object]
        invoice = shipping[:invoice] || {}
        additional_services = shipping[:additional_services] || []
        notes = shipping[:notes] || []

        xml.objeto_postal do
          xml.numero_etiqueta shipping[:label_number]
          xml.codigo_objeto_cliente shipping[:code]
          xml.codigo_servico_postagem shipping[:service_code]
          xml.cubagem 0
          xml.peso object[:weight]
          xml.rt1 notes[0]
          xml.rt2 notes[1]
          xml.destinatario do
            xml.nome_destinatario receiver[:name]
            xml.telefone_destinatario receiver[:phone]
            xml.celular_destinatario receiver[:cellphone]
            xml.email_destinatario receiver[:email]
            xml.logradouro_destinatario receiver_address[:street]
            xml.complemento_destinatario receiver_address[:additional]
            xml.numero_end_destinatario receiver_address[:number]
          end
          xml.nacional do
            xml.bairro_destinatario receiver_address[:neighborhood]
            xml.cidade_destinatario receiver_address[:city]
            xml.uf_destinatario receiver_address[:state]
            xml.cep_destinatario receiver_address[:zip_code]
            xml.codigo_usuario_postal
            xml.centro_custo_cliente shipping[:cost_center]
            xml.numero_nota_fiscal invoice[:number]
            xml.serie_nota_fiscal invoice[:serie]
            xml.valor_nota_fiscal invoice[:value]
            xml.natureza_nota_fiscal invoice[:kind]
            xml.descricao_objeto shipping[:description]
            xml.valor_a_cobrar shipping[:additional_value]
          end
          xml.servico_adicional do
            additional_services.each do |additional_service|
              xml.codigo_servico_adicional additional_service
            end
            xml.valor_declarado shipping[:declared_value]
          end
          xml.dimensao_objeto do
            xml.tipo_objeto helper.object_type(object[:type])
            xml.dimensao_altura object[:height] || 0
            xml.dimensao_largura object[:width] || 0
            xml.dimensao_comprimento object[:length] || 0
            xml.dimensao_diametro object[:diameter] || 0
          end
          xml.data_postagem_sara
          xml.status_processamento 0
          xml.numero_comprovante_postagem
          xml.valor_cobrado
        end
      end
    end
  end.to_xml.encode(Encoding::UTF_8)
end

.track_shippings(data = {}) ⇒ Object



170
171
172
# File 'lib/correios_gem.rb', line 170

def self.track_shippings(data = {})
  TrackShippings.new(data).request
end

.wsdlObject



56
57
58
59
60
61
62
# File 'lib/auxiliars/environments.rb', line 56

def self.wsdl
  if production_env?
    'https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl'
  else
    'https://apphom.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl'
  end
end