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.
- checksums.yaml +4 -4
- data/correios_gem.gemspec +29 -0
- data/lib/SRO/requests/track_shippings.rb +31 -45
- data/lib/{credentials.rb → auxiliars/credentials.rb} +0 -0
- data/lib/auxiliars/environments.rb +94 -0
- data/lib/auxiliars/exception.rb +5 -0
- data/lib/auxiliars/helper.rb +404 -0
- data/lib/correios_gem.rb +22 -24
- data/lib/pricefier/requests/calculate_deadline.rb +27 -45
- data/lib/pricefier/requests/calculate_price.rb +34 -53
- data/lib/pricefier/requests/calculate_price_deadline.rb +49 -63
- data/lib/pricefier/requests/calculate_price_fac.rb +21 -46
- data/lib/pricefier/requests/list_services.rb +26 -42
- data/lib/reverse_logistics/requests/calculate_ticket_number_check_digit.rb +10 -21
- data/lib/reverse_logistics/requests/cancel_shipping.rb +13 -23
- data/lib/reverse_logistics/requests/create_shippings.rb +22 -36
- data/lib/reverse_logistics/requests/create_shippings_with_collection.rb +17 -33
- data/lib/reverse_logistics/requests/request_ticket_numbers.rb +13 -35
- data/lib/reverse_logistics/requests/track_shipping.rb +18 -39
- data/lib/reverse_logistics/requests/track_shippings_by_date.rb +19 -45
- data/lib/sigep/auxiliars/shipping_xml.rb +100 -0
- data/lib/sigep/requests/calculate_label_number_check_digit.rb +13 -27
- data/lib/sigep/requests/cancel_shipping.rb +12 -25
- data/lib/sigep/requests/check_card_status.rb +11 -27
- data/lib/sigep/requests/check_service_availability.rb +12 -39
- data/lib/sigep/requests/create_shippings.rb +20 -24
- data/lib/sigep/requests/request_label_numbers.rb +11 -17
- data/lib/sigep/requests/request_shippings_xml.rb +14 -53
- data/lib/sigep/requests/search_available_additional_services.rb +12 -20
- data/lib/sigep/requests/search_customer.rb +15 -37
- data/lib/sigep/requests/search_zip_code.rb +11 -16
- data/lib/sigep/requests/track_shippings.rb +19 -51
- metadata +22 -19
- data/lib/SRO/client.rb +0 -25
- data/lib/SRO/helper.rb +0 -118
- data/lib/SRO/requests/track_shippings_list.rb +0 -144
- data/lib/correios_exception.rb +0 -11
- data/lib/pricefier/client.rb +0 -20
- data/lib/pricefier/helper.rb +0 -72
- data/lib/pricefier/requests/calculate_deadline_with_date.rb +0 -102
- data/lib/pricefier/requests/calculate_deadline_with_restrictions.rb +0 -102
- data/lib/pricefier/requests/calculate_price_deadline_with_date.rb +0 -142
- data/lib/pricefier/requests/calculate_price_deadline_with_restrictions.rb +0 -142
- data/lib/pricefier/requests/calculate_price_with_date.rb +0 -125
- data/lib/pricefier/requests/list_services_star.rb +0 -87
- data/lib/reverse_logistics/client.rb +0 -34
- data/lib/reverse_logistics/helper.rb +0 -95
- data/lib/sigep/client.rb +0 -29
- data/lib/sigep/helper.rb +0 -234
@@ -1,18 +1,9 @@
|
|
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 Pricefier
|
10
|
-
class CalculatePriceFAC <
|
11
|
-
HELPER = Helper.new
|
12
|
-
CLIENT = Client.new
|
13
|
-
|
3
|
+
class CalculatePriceFAC < Helper
|
14
4
|
def initialize(data = {})
|
15
5
|
@show_request = data[:show_request]
|
6
|
+
|
16
7
|
@service_codes = data[:service_codes]
|
17
8
|
@weight = data[:weight]
|
18
9
|
@reference_date = data[:reference_date]
|
@@ -22,16 +13,15 @@ module Correios
|
|
22
13
|
def request
|
23
14
|
puts xml if @show_request == true
|
24
15
|
begin
|
25
|
-
format_response(
|
26
|
-
|
27
|
-
|
16
|
+
format_response(Pricefier.client.call(
|
17
|
+
:calc_preco_fac,
|
18
|
+
soap_action: 'http://tempuri.org/CalcPrecoFAC',
|
19
|
+
xml: xml
|
20
|
+
).to_hash)
|
28
21
|
rescue Savon::SOAPFault => error
|
29
|
-
|
22
|
+
generate_soap_fault_exception(error)
|
30
23
|
rescue Savon::HTTPError => error
|
31
|
-
|
32
|
-
generate_exception("Unauthorized (#{error.http.code}).")
|
33
|
-
end
|
34
|
-
generate_exception("Unknown HTTP error (#{error.http.code}).")
|
24
|
+
generate_http_exception(error.http.code)
|
35
25
|
end
|
36
26
|
end
|
37
27
|
|
@@ -39,14 +29,12 @@ module Correios
|
|
39
29
|
|
40
30
|
def xml
|
41
31
|
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
42
|
-
xml['soap'].Envelope(
|
32
|
+
xml['soap'].Envelope(Pricefier.namespaces) do
|
43
33
|
xml['soap'].Body do
|
44
34
|
xml['ns1'].CalcPrecoFAC do
|
45
|
-
xml.nCdServico
|
35
|
+
xml.nCdServico array_to_string_comma(@service_codes)
|
46
36
|
xml.nVlPeso @weight
|
47
|
-
xml.strDataCalculo
|
48
|
-
@reference_date
|
49
|
-
)
|
37
|
+
xml.strDataCalculo date_to_string(@reference_date)
|
50
38
|
end
|
51
39
|
end
|
52
40
|
end
|
@@ -59,14 +47,7 @@ module Correios
|
|
59
47
|
services = response[:servicos][:c_servico]
|
60
48
|
services = [services] if services.is_a?(Hash)
|
61
49
|
|
62
|
-
|
63
|
-
services.each do |service|
|
64
|
-
formatted_services << format_service(service)
|
65
|
-
end
|
66
|
-
|
67
|
-
{
|
68
|
-
services: formatted_services
|
69
|
-
}
|
50
|
+
{ services: services.map { |s| format_service(s) } }
|
70
51
|
end
|
71
52
|
|
72
53
|
def format_service(service)
|
@@ -75,29 +56,23 @@ module Correios
|
|
75
56
|
code: service[:codigo],
|
76
57
|
prices: {
|
77
58
|
additional_serivces: {
|
78
|
-
own_hands:
|
79
|
-
|
80
|
-
),
|
81
|
-
receipt_notification: HELPER.convert_string_to_float(
|
59
|
+
own_hands: string_to_decimal(service[:valor_mao_propria]),
|
60
|
+
receipt_notification: string_to_decimal(
|
82
61
|
service[:valor_aviso_recebimento]
|
83
62
|
),
|
84
|
-
declared_value:
|
63
|
+
declared_value: string_to_decimal(
|
85
64
|
service[:valor_valor_declarado]
|
86
|
-
)
|
65
|
+
)
|
87
66
|
},
|
88
|
-
only_shipping:
|
89
|
-
|
90
|
-
),
|
91
|
-
total: HELPER.convert_string_to_float(service[:valor])
|
67
|
+
only_shipping: string_to_decimal(service[:valor_sem_adicionais]),
|
68
|
+
total: string_to_decimal(service[:valor])
|
92
69
|
}
|
93
70
|
}
|
94
71
|
else
|
95
72
|
{
|
96
73
|
code: service[:codigo],
|
97
|
-
error: {
|
98
|
-
|
99
|
-
description: service[:msg_erro]
|
100
|
-
}
|
74
|
+
error: { code: service[:erro],
|
75
|
+
description: service[:msg_erro] }
|
101
76
|
}
|
102
77
|
end
|
103
78
|
end
|
@@ -1,34 +1,26 @@
|
|
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 Pricefier
|
10
|
-
class ListServices <
|
11
|
-
HELPER = Helper.new
|
12
|
-
CLIENT = Client.new
|
13
|
-
|
3
|
+
class ListServices < Helper
|
14
4
|
def initialize(data = {})
|
15
5
|
@show_request = data[:show_request]
|
16
6
|
super()
|
17
7
|
end
|
18
8
|
|
19
|
-
def request
|
9
|
+
def request(method)
|
10
|
+
@method = method
|
11
|
+
@method_snake = method.underscore
|
12
|
+
|
20
13
|
puts xml if @show_request == true
|
21
14
|
begin
|
22
|
-
format_response(
|
23
|
-
|
24
|
-
|
15
|
+
format_response(Pricefier.client.call(
|
16
|
+
@method_snake.to_sym,
|
17
|
+
soap_action: "http://tempuri.org/#{@method}",
|
18
|
+
xml: xml
|
19
|
+
).to_hash)
|
25
20
|
rescue Savon::SOAPFault => error
|
26
|
-
|
21
|
+
generate_soap_fault_exception(error)
|
27
22
|
rescue Savon::HTTPError => error
|
28
|
-
|
29
|
-
generate_exception("Unauthorized (#{error.http.code}).")
|
30
|
-
end
|
31
|
-
generate_exception("Unknown HTTP error (#{error.http.code}).")
|
23
|
+
generate_http_exception(error.http.code)
|
32
24
|
end
|
33
25
|
end
|
34
26
|
|
@@ -36,49 +28,41 @@ module Correios
|
|
36
28
|
|
37
29
|
def xml
|
38
30
|
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
39
|
-
xml['soap'].Envelope(
|
31
|
+
xml['soap'].Envelope(Pricefier.namespaces) do
|
40
32
|
xml['soap'].Body do
|
41
|
-
xml['ns1'].
|
33
|
+
xml['ns1'].send(@method)
|
42
34
|
end
|
43
35
|
end
|
44
36
|
end.doc.root.to_xml
|
45
37
|
end
|
46
38
|
|
47
39
|
def format_response(response)
|
48
|
-
response = response[
|
40
|
+
response = response["#{@method_snake}_response".to_sym]["#{@method_snake}_result".to_sym]
|
49
41
|
|
50
42
|
services = response[:servicos_calculo][:c_servicos_calculo]
|
51
43
|
services = [services] if services.is_a?(Hash)
|
52
44
|
|
53
|
-
|
54
|
-
services.each do |service|
|
55
|
-
formatted_services << format_service(service)
|
56
|
-
end
|
57
|
-
|
58
|
-
{
|
59
|
-
services: formatted_services
|
60
|
-
}
|
45
|
+
{ services: services.map { |s| format_service(s) } }
|
61
46
|
end
|
62
47
|
|
63
48
|
def format_service(service)
|
64
|
-
if service[:erro].to_i
|
49
|
+
if service[:erro].to_i.zero?
|
65
50
|
{
|
66
51
|
code: service[:codigo],
|
67
52
|
description: service[:descricao].strip,
|
68
|
-
calculate_price:
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
53
|
+
calculate_price: string_to_bool(service[:calcula_preco]),
|
54
|
+
calculate_deadline:
|
55
|
+
if service[:calcula_prazo].present?
|
56
|
+
string_to_bool(service[:calcula_prazo])
|
57
|
+
else
|
58
|
+
false
|
59
|
+
end
|
74
60
|
}
|
75
61
|
else
|
76
62
|
{
|
77
63
|
code: service[:codigo],
|
78
|
-
error: {
|
79
|
-
|
80
|
-
description: service[:msg_erro]
|
81
|
-
}
|
64
|
+
error: { code: service[:erro],
|
65
|
+
description: service[:msg_erro] }
|
82
66
|
}
|
83
67
|
end
|
84
68
|
end
|
@@ -1,16 +1,6 @@
|
|
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 CalculateTicketNumberCheckDigit <
|
11
|
-
HELPER = Helper.new
|
12
|
-
CLIENT = Client.new
|
13
|
-
|
3
|
+
class CalculateTicketNumberCheckDigit < Helper
|
14
4
|
def initialize(data = {})
|
15
5
|
@show_request = data[:show_request]
|
16
6
|
@ticket_number = data[:ticket_number]
|
@@ -20,16 +10,15 @@ module Correios
|
|
20
10
|
def request
|
21
11
|
puts xml if @show_request == true
|
22
12
|
begin
|
23
|
-
format_response(
|
24
|
-
|
25
|
-
|
13
|
+
format_response(ReverseLogistics.client.call(
|
14
|
+
:calcular_digito_verificador,
|
15
|
+
soap_action: '',
|
16
|
+
xml: xml
|
17
|
+
).to_hash)
|
26
18
|
rescue Savon::SOAPFault => error
|
27
|
-
|
19
|
+
generate_soap_fault_exception(error)
|
28
20
|
rescue Savon::HTTPError => error
|
29
|
-
|
30
|
-
generate_exception("Unauthorized (#{error.http.code}).")
|
31
|
-
end
|
32
|
-
generate_exception("Unknown HTTP error (#{error.http.code}).")
|
21
|
+
generate_http_exception(error.http.code)
|
33
22
|
end
|
34
23
|
end
|
35
24
|
|
@@ -37,7 +26,7 @@ module Correios
|
|
37
26
|
|
38
27
|
def xml
|
39
28
|
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
40
|
-
xml['soap'].Envelope(
|
29
|
+
xml['soap'].Envelope(ReverseLogistics.namespaces) do
|
41
30
|
xml['soap'].Body do
|
42
31
|
xml['ns1'].calcularDigitoVerificador do
|
43
32
|
parent_namespace = xml.parent.namespace
|
@@ -54,7 +43,7 @@ module Correios
|
|
54
43
|
|
55
44
|
def format_response(response)
|
56
45
|
response = response[:calcular_digito_verificador_response][:calcular_digito_verificador]
|
57
|
-
|
46
|
+
generate_revese_logistics_exception(response)
|
58
47
|
|
59
48
|
{
|
60
49
|
digit_checker: response[:digito],
|
@@ -1,37 +1,27 @@
|
|
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 CancelShipping <
|
11
|
-
HELPER = Helper.new
|
12
|
-
CLIENT = Client.new
|
13
|
-
|
3
|
+
class CancelShipping < Helper
|
14
4
|
def initialize(data = {})
|
15
5
|
@credentials = Correios.credentials
|
6
|
+
@show_request = data[:show_request]
|
16
7
|
|
17
8
|
@ticket_number = data[:ticket_number]
|
18
|
-
@
|
9
|
+
@ticket_type = data[:ticket_type]
|
19
10
|
super()
|
20
11
|
end
|
21
12
|
|
22
13
|
def request
|
23
14
|
puts xml if @show_request == true
|
24
15
|
begin
|
25
|
-
format_response(
|
26
|
-
|
27
|
-
|
16
|
+
format_response(ReverseLogistics.client.call(
|
17
|
+
:cancelar_pedido,
|
18
|
+
soap_action: '',
|
19
|
+
xml: xml
|
20
|
+
).to_hash)
|
28
21
|
rescue Savon::SOAPFault => error
|
29
|
-
|
22
|
+
generate_soap_fault_exception(error)
|
30
23
|
rescue Savon::HTTPError => error
|
31
|
-
|
32
|
-
generate_exception("Unauthorized (#{error.http.code}).")
|
33
|
-
end
|
34
|
-
generate_exception("Unknown HTTP error (#{error.http.code}).")
|
24
|
+
generate_http_exception(error.http.code)
|
35
25
|
end
|
36
26
|
end
|
37
27
|
|
@@ -39,7 +29,7 @@ module Correios
|
|
39
29
|
|
40
30
|
def xml
|
41
31
|
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
42
|
-
xml['soap'].Envelope(
|
32
|
+
xml['soap'].Envelope(ReverseLogistics.namespaces) do
|
43
33
|
xml['soap'].Body do
|
44
34
|
xml['ns1'].cancelarPedido do
|
45
35
|
parent_namespace = xml.parent.namespace
|
@@ -47,7 +37,7 @@ module Correios
|
|
47
37
|
|
48
38
|
xml.codAdministrativo @credentials.administrative_code
|
49
39
|
xml.numeroPedido @ticket_number
|
50
|
-
xml.tipo
|
40
|
+
xml.tipo reverse_shipping_type(@ticket_type)
|
51
41
|
|
52
42
|
xml.parent.namespace = parent_namespace
|
53
43
|
end
|
@@ -58,7 +48,7 @@ module Correios
|
|
58
48
|
|
59
49
|
def format_response(response)
|
60
50
|
response = response[:cancelar_pedido_response][:cancelar_pedido]
|
61
|
-
|
51
|
+
generate_revese_logistics_exception(response)
|
62
52
|
|
63
53
|
{
|
64
54
|
ticket_number: response[:objeto_postal][:numero_pedido],
|
@@ -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 CreateShippings <
|
11
|
-
HELPER = Helper.new
|
12
|
-
CLIENT = Client.new
|
13
|
-
|
3
|
+
class CreateShippings < 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(
|
28
|
-
|
29
|
-
|
17
|
+
format_response(ReverseLogistics.client.call(
|
18
|
+
:solicitar_postagem_reversa,
|
19
|
+
soap_action: '',
|
20
|
+
xml: xml
|
21
|
+
).to_hash)
|
30
22
|
rescue Savon::SOAPFault => error
|
31
|
-
|
23
|
+
generate_soap_fault_exception(error)
|
32
24
|
rescue Savon::HTTPError => error
|
33
|
-
|
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(
|
33
|
+
xml['soap'].Envelope(ReverseLogistics.namespaces) do
|
45
34
|
xml['soap'].Body do
|
46
35
|
xml['ns1'].solicitarPostagemReversa do
|
47
36
|
parent_namespace = xml.parent.namespace
|
@@ -69,17 +58,19 @@ module Correios
|
|
69
58
|
goods = shipping[:goods] || []
|
70
59
|
objects = shipping[:objects] || [{}]
|
71
60
|
xml.coletas_solicitadas do
|
72
|
-
xml.tipo
|
61
|
+
xml.tipo reverse_shipping_type(shipping[:type])
|
73
62
|
xml.numero shipping[:ticket_number]
|
74
63
|
xml.id_cliente shipping[:code]
|
75
|
-
xml.ag
|
64
|
+
xml.ag calculate_reverse_shipping_deadline(
|
65
|
+
shipping[:deadline], shipping[:type]
|
66
|
+
)
|
76
67
|
xml.cartao @credentials.card
|
77
68
|
xml.valor_declarado shipping[:_value]
|
78
|
-
xml.servico_adicional
|
69
|
+
xml.servico_adicional array_to_string_comma(
|
79
70
|
shipping[:additional_services]
|
80
71
|
)
|
81
72
|
xml.descricao shipping[:description]
|
82
|
-
xml.ar
|
73
|
+
xml.ar bool_to_int(shipping[:receipt_notification])
|
83
74
|
xml.cklist shipping[:check_list]
|
84
75
|
xml.documento shipping[:document]
|
85
76
|
xml.remetente do
|
@@ -91,7 +82,7 @@ module Correios
|
|
91
82
|
xml.ddd_celular sender[:cellphone][0, 2]
|
92
83
|
xml.celular sender[:cellphone][2, sender[:phone].length - 1]
|
93
84
|
xml.email sender[:email]
|
94
|
-
xml.sms
|
85
|
+
xml.sms bool_to_string(sender[:send_sms])
|
95
86
|
xml.identificacao sender[:document]
|
96
87
|
xml.logradouro sender_address[:street]
|
97
88
|
xml.numero sender_address[:number]
|
@@ -130,32 +121,27 @@ module Correios
|
|
130
121
|
|
131
122
|
def format_response(response)
|
132
123
|
response = response[:solicitar_postagem_reversa_response][:solicitar_postagem_reversa]
|
133
|
-
|
124
|
+
generate_revese_logistics_exception(response)
|
134
125
|
|
135
126
|
shippings = response[:resultado_solicitacao]
|
136
127
|
shippings = [shippings] if shippings.is_a?(Hash)
|
137
128
|
|
138
|
-
|
139
|
-
shippings.each do |shipping|
|
140
|
-
formatted_shippings << format_shipping(shipping)
|
141
|
-
end
|
142
|
-
|
143
|
-
{ shippings: formatted_shippings }
|
129
|
+
{ shippings: shippings.map {|s| format_shipping(s)} }
|
144
130
|
end
|
145
131
|
|
146
132
|
def format_shipping(shipping)
|
147
133
|
if shipping[:codigo_erro].to_i.zero?
|
148
134
|
{
|
149
|
-
type:
|
135
|
+
type: inverse_reverse_shipping_type(shipping[:tipo]),
|
150
136
|
code: shipping[:id_cliente],
|
151
137
|
ticket_number: shipping[:numero_coleta],
|
152
138
|
label_number: shipping[:numero_etiqueta],
|
153
139
|
object_id: shipping[:id_obj],
|
154
|
-
deadline:
|
140
|
+
deadline: string_to_date(shipping[:prazo])
|
155
141
|
}
|
156
142
|
else
|
157
143
|
{
|
158
|
-
type:
|
144
|
+
type: inverse_reverse_shipping_type(shipping[:tipo]),
|
159
145
|
code: shipping[:id_cliente],
|
160
146
|
error: shipping[:descricao_erro]
|
161
147
|
}
|