correios_gem 1.4.2 → 1.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/correios_gem.gemspec +29 -0
  3. data/lib/SRO/requests/track_shippings.rb +31 -45
  4. data/lib/{credentials.rb → auxiliars/credentials.rb} +0 -0
  5. data/lib/auxiliars/environments.rb +94 -0
  6. data/lib/auxiliars/exception.rb +5 -0
  7. data/lib/auxiliars/helper.rb +404 -0
  8. data/lib/correios_gem.rb +22 -24
  9. data/lib/pricefier/requests/calculate_deadline.rb +27 -45
  10. data/lib/pricefier/requests/calculate_price.rb +34 -53
  11. data/lib/pricefier/requests/calculate_price_deadline.rb +49 -63
  12. data/lib/pricefier/requests/calculate_price_fac.rb +21 -46
  13. data/lib/pricefier/requests/list_services.rb +26 -42
  14. data/lib/reverse_logistics/requests/calculate_ticket_number_check_digit.rb +10 -21
  15. data/lib/reverse_logistics/requests/cancel_shipping.rb +13 -23
  16. data/lib/reverse_logistics/requests/create_shippings.rb +22 -36
  17. data/lib/reverse_logistics/requests/create_shippings_with_collection.rb +17 -33
  18. data/lib/reverse_logistics/requests/request_ticket_numbers.rb +13 -35
  19. data/lib/reverse_logistics/requests/track_shipping.rb +18 -39
  20. data/lib/reverse_logistics/requests/track_shippings_by_date.rb +19 -45
  21. data/lib/sigep/auxiliars/shipping_xml.rb +100 -0
  22. data/lib/sigep/requests/calculate_label_number_check_digit.rb +13 -27
  23. data/lib/sigep/requests/cancel_shipping.rb +12 -25
  24. data/lib/sigep/requests/check_card_status.rb +11 -27
  25. data/lib/sigep/requests/check_service_availability.rb +12 -39
  26. data/lib/sigep/requests/create_shippings.rb +20 -24
  27. data/lib/sigep/requests/request_label_numbers.rb +11 -17
  28. data/lib/sigep/requests/request_shippings_xml.rb +14 -53
  29. data/lib/sigep/requests/search_available_additional_services.rb +12 -20
  30. data/lib/sigep/requests/search_customer.rb +15 -37
  31. data/lib/sigep/requests/search_zip_code.rb +11 -16
  32. data/lib/sigep/requests/track_shippings.rb +19 -51
  33. metadata +22 -19
  34. data/lib/SRO/client.rb +0 -25
  35. data/lib/SRO/helper.rb +0 -118
  36. data/lib/SRO/requests/track_shippings_list.rb +0 -144
  37. data/lib/correios_exception.rb +0 -11
  38. data/lib/pricefier/client.rb +0 -20
  39. data/lib/pricefier/helper.rb +0 -72
  40. data/lib/pricefier/requests/calculate_deadline_with_date.rb +0 -102
  41. data/lib/pricefier/requests/calculate_deadline_with_restrictions.rb +0 -102
  42. data/lib/pricefier/requests/calculate_price_deadline_with_date.rb +0 -142
  43. data/lib/pricefier/requests/calculate_price_deadline_with_restrictions.rb +0 -142
  44. data/lib/pricefier/requests/calculate_price_with_date.rb +0 -125
  45. data/lib/pricefier/requests/list_services_star.rb +0 -87
  46. data/lib/reverse_logistics/client.rb +0 -34
  47. data/lib/reverse_logistics/helper.rb +0 -95
  48. data/lib/sigep/client.rb +0 -29
  49. data/lib/sigep/helper.rb +0 -234
@@ -1,20 +1,10 @@
1
- require 'savon'
2
- require 'nokogiri'
3
-
4
- require_relative '../client'
5
- require_relative '../helper'
6
- require_relative '../../correios_exception.rb'
7
-
8
1
  module Correios
9
2
  module ReverseLogistics
10
- class CreateShippingsWithCollection < CorreiosException
11
- HELPER = Helper.new
12
- CLIENT = Client.new
13
-
3
+ class CreateShippingsWithCollection < Helper
14
4
  def initialize(data = {})
15
5
  @credentials = Correios.credentials
16
-
17
6
  @show_request = data[:show_request]
7
+
18
8
  @receiver = data[:receiver]
19
9
  @service_code = data[:service_code]
20
10
  @shippings = data[:shippings]
@@ -24,16 +14,15 @@ module Correios
24
14
  def request
25
15
  puts xml if @show_request == true
26
16
  begin
27
- format_response(CLIENT.client.call(:solicitar_postagem_simultanea,
28
- soap_action: '',
29
- xml: xml).to_hash)
17
+ format_response(ReverseLogistics.client.call(
18
+ :solicitar_postagem_simultanea,
19
+ soap_action: '',
20
+ xml: xml
21
+ ).to_hash)
30
22
  rescue Savon::SOAPFault => error
31
- generate_exception(error)
23
+ generate_soap_fault_exception(error)
32
24
  rescue Savon::HTTPError => error
33
- if error.http.code == 401
34
- generate_exception("Unauthorized (#{error.http.code}).")
35
- end
36
- generate_exception("Unknown HTTP error (#{error.http.code}).")
25
+ generate_http_exception(error.http.code)
37
26
  end
38
27
  end
39
28
 
@@ -41,7 +30,7 @@ module Correios
41
30
 
42
31
  def xml
43
32
  Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
44
- xml['soap'].Envelope(HELPER.namespaces) do
33
+ xml['soap'].Envelope(ReverseLogistics.namespaces) do
45
34
  xml['soap'].Body do
46
35
  xml['ns1'].solicitarPostagemSimultanea do
47
36
  parent_namespace = xml.parent.namespace
@@ -69,7 +58,7 @@ module Correios
69
58
  goods = shipping[:goods] || []
70
59
  objects = shipping[:objects] || [{}]
71
60
  xml.coletas_solicitadas do
72
- xml.tipo HELPER.shipping_type(shipping[:type])
61
+ xml.tipo reverse_shipping_type(shipping[:type])
73
62
  xml.id_cliente shipping[:code]
74
63
  xml.valor_declarado shipping[:declared_value]
75
64
  xml.descricao shipping[:description]
@@ -86,7 +75,7 @@ module Correios
86
75
  xml.ddd_celular sender[:cellphone][0, 2]
87
76
  xml.celular sender[:cellphone][2, sender[:phone].length - 1]
88
77
  xml.email sender[:email]
89
- xml.sms HELPER.bool_to_string(sender[:send_sms])
78
+ xml.sms bool_to_string(sender[:send_sms])
90
79
  xml.identificacao sender[:document]
91
80
  xml.logradouro sender_address[:street]
92
81
  xml.numero sender_address[:number]
@@ -116,32 +105,27 @@ module Correios
116
105
 
117
106
  def format_response(response)
118
107
  response = response[:solicitar_postagem_simultanea_response][:solicitar_postagem_simultanea]
119
- generate_exception(response[:msg_erro]) if response[:cod_erro].to_i != 0
108
+ generate_revese_logistics_exception(response)
120
109
 
121
110
  shippings = response[:resultado_solicitacao]
122
111
  shippings = [shippings] if shippings.is_a?(Hash)
123
112
 
124
- formatted_shippings = []
125
- shippings.each do |shipping|
126
- formatted_shippings << format_shipping(shipping)
127
- end
128
-
129
- { shippings: formatted_shippings }
113
+ { shippings: shippings.map {|s| format_shipping(s)} }
130
114
  end
131
115
 
132
116
  def format_shipping(shipping)
133
117
  if shipping[:codigo_erro].to_i.zero?
134
118
  {
135
- type: HELPER.shipping_type_inverse(shipping[:tipo]),
119
+ type: inverse_reverse_shipping_type(shipping[:tipo]),
136
120
  code: shipping[:id_cliente],
137
121
  ticket_number: shipping[:numero_coleta],
138
122
  label_number: shipping[:numero_etiqueta],
139
123
  object_id: shipping[:id_obj],
140
- deadline: HELPER.convert_string_to_date(shipping[:prazo])
124
+ deadline: string_to_date(shipping[:prazo])
141
125
  }
142
126
  else
143
127
  {
144
- type: HELPER.shipping_type_inverse(shipping[:tipo]),
128
+ type: inverse_reverse_shipping_type(shipping[:tipo]),
145
129
  code: shipping[:id_cliente],
146
130
  error: shipping[:descricao_erro]
147
131
  }
@@ -1,20 +1,10 @@
1
- require 'savon'
2
- require 'nokogiri'
3
-
4
- require_relative '../client'
5
- require_relative '../helper'
6
- require_relative '../../correios_exception.rb'
7
-
8
1
  module Correios
9
2
  module ReverseLogistics
10
- class RequestTicketNumbers < CorreiosException
11
- HELPER = Helper.new
12
- CLIENT = Client.new
13
-
3
+ class RequestTicketNumbers < Helper
14
4
  def initialize(data = {})
15
5
  @credentials = Correios.credentials
16
-
17
6
  @show_request = data[:show_request]
7
+
18
8
  @ticket_type = data[:ticket_type]
19
9
  @service = data[:service]
20
10
  @amount = data[:amount]
@@ -24,16 +14,15 @@ module Correios
24
14
  def request
25
15
  puts xml if @show_request == true
26
16
  begin
27
- format_response(CLIENT.client.call(:solicitar_range,
28
- soap_action: '',
29
- xml: xml).to_hash)
17
+ format_response(ReverseLogistics.client.call(
18
+ :solicitar_range,
19
+ soap_action: '',
20
+ xml: xml
21
+ ).to_hash)
30
22
  rescue Savon::SOAPFault => error
31
- generate_exception(error)
23
+ generate_soap_fault_exception(error)
32
24
  rescue Savon::HTTPError => error
33
- if error.http.code == 401
34
- generate_exception("Unauthorized (#{error.http.code}).")
35
- end
36
- generate_exception("Unknown HTTP error (#{error.http.code}).")
25
+ generate_http_exception(error.http.code)
37
26
  end
38
27
  end
39
28
 
@@ -41,15 +30,15 @@ module Correios
41
30
 
42
31
  def xml
43
32
  Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
44
- xml['soap'].Envelope(HELPER.namespaces) do
33
+ xml['soap'].Envelope(ReverseLogistics.namespaces) do
45
34
  xml['soap'].Body do
46
35
  xml['ns1'].solicitarRange do
47
36
  parent_namespace = xml.parent.namespace
48
37
  xml.parent.namespace = nil
49
38
 
50
39
  xml.codAdministrativo @credentials.administrative_code
51
- xml.tipo HELPER.ticket_type(@ticket_type)
52
- xml.servico service(@service)
40
+ xml.tipo ticket_type(@ticket_type)
41
+ xml.servico reverse_shipping_service(@service)
53
42
  xml.quantidade @amount
54
43
 
55
44
  xml.parent.namespace = parent_namespace
@@ -61,7 +50,7 @@ module Correios
61
50
 
62
51
  def format_response(response)
63
52
  response = response[:solicitar_range_response][:solicitar_range]
64
- generate_exception(response[:msg_erro]) if response[:cod_erro] != '0'
53
+ generate_revese_logistics_exception(response)
65
54
 
66
55
  initial_number = response[:faixa_inicial].to_i
67
56
  final_number = response[:faixa_final].to_i
@@ -74,17 +63,6 @@ module Correios
74
63
 
75
64
  { ticket_numbers: ticket_numbers }
76
65
  end
77
-
78
- def service(service)
79
- case service
80
- when :pac
81
- 'LR'
82
- when :sedex
83
- 'LS'
84
- when :e_sedex
85
- 'LV'
86
- end
87
- end
88
66
  end
89
67
  end
90
68
  end
@@ -1,20 +1,10 @@
1
- require 'savon'
2
- require 'nokogiri'
3
-
4
- require_relative '../client'
5
- require_relative '../helper'
6
- require_relative '../../correios_exception.rb'
7
-
8
1
  module Correios
9
2
  module ReverseLogistics
10
- class TrackShipping < CorreiosException
11
- HELPER = Helper.new
12
- CLIENT = Client.new
13
-
3
+ class TrackShipping < Helper
14
4
  def initialize(data = {})
15
5
  @credentials = Correios.credentials
16
-
17
6
  @show_request = data[:show_request]
7
+
18
8
  @ticket_number = data[:ticket_number]
19
9
  @type = data[:type]
20
10
  @result_type = data[:result_type]
@@ -24,16 +14,15 @@ module Correios
24
14
  def request
25
15
  puts xml if @show_request == true
26
16
  begin
27
- format_response(CLIENT.client.call(:acompanhar_pedido,
28
- soap_action: '',
29
- xml: xml).to_hash)
17
+ format_response(ReverseLogistics.client.call(
18
+ :acompanhar_pedido,
19
+ soap_action: '',
20
+ xml: xml
21
+ ).to_hash)
30
22
  rescue Savon::SOAPFault => error
31
- generate_exception(error)
23
+ generate_soap_fault_exception(error)
32
24
  rescue Savon::HTTPError => error
33
- if error.http.code == 401
34
- generate_exception("Unauthorized (#{error.http.code}).")
35
- end
36
- generate_exception("Unknown HTTP error (#{error.http.code}).")
25
+ generate_http_exception(error.http.code)
37
26
  end
38
27
  end
39
28
 
@@ -41,7 +30,7 @@ module Correios
41
30
 
42
31
  def xml
43
32
  Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
44
- xml['soap'].Envelope(HELPER.namespaces) do
33
+ xml['soap'].Envelope(ReverseLogistics.namespaces) do
45
34
  xml['soap'].Body do
46
35
  xml['ns1'].acompanharPedido do
47
36
  parent_namespace = xml.parent.namespace
@@ -49,8 +38,8 @@ module Correios
49
38
 
50
39
  xml.codAdministrativo @credentials.administrative_code
51
40
  xml.numeroPedido @ticket_number
52
- xml.tipoSolicitacao HELPER.shipping_type(@type)
53
- xml.tipoBusca HELPER.tracking_result_type(@result_type)
41
+ xml.tipoSolicitacao reverse_shipping_type(@type)
42
+ xml.tipoBusca reverse_tracking_result_type(@result_type)
54
43
 
55
44
  xml.parent.namespace = parent_namespace
56
45
  end
@@ -61,7 +50,7 @@ module Correios
61
50
 
62
51
  def format_response(response)
63
52
  response = response[:acompanhar_pedido_response][:acompanhar_pedido]
64
- generate_exception(response[:msg_erro]) if response[:cod_erro].to_i != 0
53
+ generate_revese_logistics_exception(response)
65
54
 
66
55
  events = response[:coleta][:historico]
67
56
  events = [events] if events.is_a?(Hash)
@@ -69,24 +58,14 @@ module Correios
69
58
  objects = response[:coleta][:objeto]
70
59
  objects = [objects] if objects.is_a?(Hash)
71
60
 
72
- formatted_events = []
73
- events.each do |event|
74
- formatted_events << format_event(event)
75
- end
76
-
77
- formatted_objects = []
78
- objects.each do |object|
79
- formatted_objects << format_object(object)
80
- end
81
-
82
61
  {
83
62
  ticket_number: response[:coleta][:numero_pedido],
84
- type: HELPER.shipping_type_inverse(
63
+ type: inverse_reverse_shipping_type(
85
64
  response[:tipo_solicitacao]
86
65
  ),
87
66
  code: response[:coleta][:controle_cliente],
88
- events: formatted_events,
89
- objects: formatted_objects
67
+ events: events.map {|e| format_event(e)},
68
+ objects: objects.map {|o| format_object(o)}
90
69
  }
91
70
  end
92
71
 
@@ -94,7 +73,7 @@ module Correios
94
73
  {
95
74
  status: event[:status],
96
75
  description: event[:descricao_status],
97
- time: HELPER.convert_string_to_date_time(
76
+ time: string_to_time(
98
77
  event[:data_atualizacao], event[:hora_atualizacao]
99
78
  ),
100
79
  note: event[:observacao]
@@ -110,7 +89,7 @@ module Correios
110
89
  last_event: {
111
90
  status: object[:ultimo_status],
112
91
  description: object[:descricao_status],
113
- time: HELPER.convert_string_to_date_time(
92
+ time: string_to_time(
114
93
  object[:data_ultima_atualizacao], object[:hora_ultima_atualizacao]
115
94
  )
116
95
  }
@@ -1,20 +1,10 @@
1
- require 'savon'
2
- require 'nokogiri'
3
-
4
- require_relative '../client'
5
- require_relative '../helper'
6
- require_relative '../../correios_exception.rb'
7
-
8
1
  module Correios
9
2
  module ReverseLogistics
10
- class TrackShippingsByDate < CorreiosException
11
- HELPER = Helper.new
12
- CLIENT = Client.new
13
-
3
+ class TrackShippingsByDate < Helper
14
4
  def initialize(data = {})
15
5
  @credentials = Correios.credentials
16
-
17
6
  @show_request = data[:show_request]
7
+
18
8
  @type = data[:type]
19
9
  @date = data[:date]
20
10
  super()
@@ -23,16 +13,15 @@ module Correios
23
13
  def request
24
14
  puts xml if @show_request == true
25
15
  begin
26
- format_response(CLIENT.client.call(:acompanhar_pedido_por_data,
27
- soap_action: '',
28
- xml: xml).to_hash)
16
+ format_response(ReverseLogistics.client.call(
17
+ :acompanhar_pedido_por_data,
18
+ soap_action: '',
19
+ xml: xml
20
+ ).to_hash)
29
21
  rescue Savon::SOAPFault => error
30
- generate_exception(error)
22
+ generate_soap_fault_exception(error)
31
23
  rescue Savon::HTTPError => error
32
- if error.http.code == 401
33
- generate_exception("Unauthorized (#{error.http.code}).")
34
- end
35
- generate_exception("Unknown HTTP error (#{error.http.code}).")
24
+ generate_http_exception(error.http.code)
36
25
  end
37
26
  end
38
27
 
@@ -40,15 +29,15 @@ module Correios
40
29
 
41
30
  def xml
42
31
  Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
43
- xml['soap'].Envelope(HELPER.namespaces) do
32
+ xml['soap'].Envelope(ReverseLogistics.namespaces) do
44
33
  xml['soap'].Body do
45
34
  xml['ns1'].acompanharPedidoPorData do
46
35
  parent_namespace = xml.parent.namespace
47
36
  xml.parent.namespace = nil
48
37
 
49
38
  xml.codAdministrativo @credentials.administrative_code
50
- xml.tipoSolicitacao HELPER.shipping_type(@type)
51
- xml.data HELPER.convert_date_to_string(@date)
39
+ xml.tipoSolicitacao reverse_shipping_type(@type)
40
+ xml.data date_to_string(@date)
52
41
 
53
42
  xml.parent.namespace = parent_namespace
54
43
  end
@@ -59,21 +48,16 @@ module Correios
59
48
 
60
49
  def format_response(response)
61
50
  response = response[:acompanhar_pedido_por_data_response][:acompanhar_pedido_por_data]
62
- generate_exception(response[:msg_erro]) if response[:cod_erro].present?
51
+ generate_revese_logistics_exception(response)
63
52
 
64
53
  shippings = response[:coleta]
65
54
  shippings = [shippings] if shippings.is_a?(Hash)
66
55
 
67
- formatted_shippings = []
68
- shippings.each do |shipping|
69
- formatted_shippings << format_shippping(shipping)
70
- end
71
-
72
56
  {
73
- type: HELPER.shipping_type_inverse(
57
+ type: inverse_reverse_shipping_type(
74
58
  response[:tipo_solicitacao]
75
59
  ),
76
- shippings: formatted_shippings
60
+ shippings: shippings.map {|s| format_shippping(s)}
77
61
  }
78
62
  end
79
63
 
@@ -84,21 +68,11 @@ module Correios
84
68
  objects = shipping[:objeto]
85
69
  objects = [objects] if objects.is_a?(Hash)
86
70
 
87
- formatted_events = []
88
- events.each do |event|
89
- formatted_events << format_event(event)
90
- end
91
-
92
- formatted_objects = []
93
- objects.each do |object|
94
- formatted_objects << format_object(object)
95
- end
96
-
97
71
  {
98
72
  ticket_number: shipping[:numero_pedido],
99
73
  code: shipping[:controle_cliente],
100
- events: formatted_events,
101
- objects: formatted_objects
74
+ events: events.map {|e| format_event(e)},
75
+ objects: objects.map {|o| format_object(o)}
102
76
  }
103
77
  end
104
78
 
@@ -106,7 +80,7 @@ module Correios
106
80
  {
107
81
  status: event[:status],
108
82
  description: event[:descricao_status],
109
- time: HELPER.convert_string_to_date_time(
83
+ time: string_to_time(
110
84
  event[:data_atualizacao], event[:hora_atualizacao]
111
85
  ),
112
86
  note: event[:observacao]
@@ -122,7 +96,7 @@ module Correios
122
96
  last_event: {
123
97
  status: object[:ultimo_status],
124
98
  description: object[:descricao_status],
125
- time: HELPER.convert_string_to_date_time(
99
+ time: string_to_time(
126
100
  object[:data_ultima_atualizacao], object[:hora_ultima_atualizacao]
127
101
  )
128
102
  }
@@ -0,0 +1,100 @@
1
+ module Correios
2
+ module Sigep
3
+ def self.shipping_xml(data)
4
+ helper = Helper.new
5
+ credentials = Correios.credentials
6
+ sender = data[:sender]
7
+ sender_address = sender[:address]
8
+ shippings = data[:shippings]
9
+
10
+ Nokogiri::XML::Builder.new(encoding: 'ISO-8859-1') do |xml|
11
+ xml.correioslog do
12
+ xml.tipo_arquivo 'Postagem'
13
+ xml.versao_arquivo '2.3'
14
+ xml.plp do
15
+ xml.id_plp
16
+ xml.valor_global
17
+ xml.mcu_unidade_postagem
18
+ xml.nome_unidade_postagem
19
+ xml.cartao_postagem credentials.card
20
+ end
21
+ xml.remetente do
22
+ xml.numero_contrato credentials.contract
23
+ xml.numero_diretoria sender[:board_id]
24
+ xml.codigo_administrativo credentials.administrative_code
25
+ xml.nome_remetente sender[:name]
26
+ xml.logradouro_remetente sender_address[:street]
27
+ xml.numero_remetente sender_address[:number]
28
+ xml.complemento_remetente sender_address[:additional]
29
+ xml.bairro_remetente sender_address[:neighborhood]
30
+ xml.cep_remetente sender_address[:zip_code]
31
+ xml.cidade_remetente sender_address[:city]
32
+ xml.uf_remetente sender_address[:state]
33
+ xml.telefone_remetente sender[:phone]
34
+ xml.fax_remetente sender[:fax]
35
+ xml.email_remetente sender[:email]
36
+ end
37
+ xml.forma_pagamento helper.payment_method(data[:payment_method])
38
+ shippings.each do |shipping|
39
+ receiver = shipping[:receiver]
40
+ receiver_address = receiver[:address]
41
+ object = shipping[:object]
42
+ invoice = shipping[:invoice] || {}
43
+ additional_services = shipping[:additional_services] || []
44
+ notes = shipping[:notes] || []
45
+
46
+ xml.objeto_postal do
47
+ xml.numero_etiqueta shipping[:label_number]
48
+ xml.codigo_objeto_cliente shipping[:code]
49
+ xml.codigo_servico_postagem shipping[:service_code]
50
+ xml.cubagem 0
51
+ xml.peso object[:weight]
52
+ xml.rt1 notes[0]
53
+ xml.rt2 notes[1]
54
+ xml.destinatario do
55
+ xml.nome_destinatario receiver[:name]
56
+ xml.telefone_destinatario receiver[:phone]
57
+ xml.celular_destinatario receiver[:cellphone]
58
+ xml.email_destinatario receiver[:email]
59
+ xml.logradouro_destinatario receiver_address[:street]
60
+ xml.complemento_destinatario receiver_address[:additional]
61
+ xml.numero_end_destinatario receiver_address[:number]
62
+ end
63
+ xml.nacional do
64
+ xml.bairro_destinatario receiver_address[:neighborhood]
65
+ xml.cidade_destinatario receiver_address[:city]
66
+ xml.uf_destinatario receiver_address[:state]
67
+ xml.cep_destinatario receiver_address[:zip_code]
68
+ xml.codigo_usuario_postal
69
+ xml.centro_custo_cliente shipping[:cost_center]
70
+ xml.numero_nota_fiscal invoice[:number]
71
+ xml.serie_nota_fiscal invoice[:serie]
72
+ xml.valor_nota_fiscal invoice[:value]
73
+ xml.natureza_nota_fiscal invoice[:kind]
74
+ xml.descricao_objeto shipping[:description]
75
+ xml.valor_a_cobrar shipping[:additional_value]
76
+ end
77
+ xml.servico_adicional do
78
+ additional_services.each do |additional_service|
79
+ xml.codigo_servico_adicional additional_service
80
+ end
81
+ xml.valor_declarado shipping[:declared_value]
82
+ end
83
+ xml.dimensao_objeto do
84
+ xml.tipo_objeto helper.object_type(object[:type])
85
+ xml.dimensao_altura object[:height] || 0
86
+ xml.dimensao_largura object[:width] || 0
87
+ xml.dimensao_comprimento object[:length] || 0
88
+ xml.dimensao_diametro object[:diameter] || 0
89
+ end
90
+ xml.data_postagem_sara
91
+ xml.status_processamento 0
92
+ xml.numero_comprovante_postagem
93
+ xml.valor_cobrado
94
+ end
95
+ end
96
+ end
97
+ end.to_xml.encode(Encoding::UTF_8)
98
+ end
99
+ end
100
+ end