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,87 +0,0 @@
|
|
1
|
-
require 'savon'
|
2
|
-
require 'nokogiri'
|
3
|
-
|
4
|
-
require_relative '../client'
|
5
|
-
require_relative '../helper'
|
6
|
-
require_relative '../../correios_exception.rb'
|
7
|
-
|
8
|
-
module Correios
|
9
|
-
module Pricefier
|
10
|
-
class ListServicesSTAR < CorreiosException
|
11
|
-
HELPER = Helper.new
|
12
|
-
CLIENT = Client.new
|
13
|
-
|
14
|
-
def initialize(data = {})
|
15
|
-
@show_request = data[:show_request]
|
16
|
-
super()
|
17
|
-
end
|
18
|
-
|
19
|
-
def request
|
20
|
-
puts xml if @show_request == true
|
21
|
-
begin
|
22
|
-
format_response(CLIENT.client.call(:calc_preco,
|
23
|
-
soap_action: 'http://tempuri.org/ListaServicosSTAR',
|
24
|
-
xml: xml).to_hash)
|
25
|
-
rescue Savon::SOAPFault => error
|
26
|
-
generate_exception(error)
|
27
|
-
rescue Savon::HTTPError => error
|
28
|
-
if error.http.code == 401
|
29
|
-
generate_exception("Unauthorized (#{error.http.code}).")
|
30
|
-
end
|
31
|
-
generate_exception("Unknown HTTP error (#{error.http.code}).")
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
private
|
36
|
-
|
37
|
-
def xml
|
38
|
-
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
39
|
-
xml['soap'].Envelope(HELPER.namespaces) do
|
40
|
-
xml['soap'].Body do
|
41
|
-
xml['ns1'].ListaServicosSTAR
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end.doc.root.to_xml
|
45
|
-
end
|
46
|
-
|
47
|
-
def format_response(response)
|
48
|
-
response = response[:lista_servicos_star_response][:lista_servicos_star_result]
|
49
|
-
|
50
|
-
services = response[:servicos_calculo][:c_servicos_calculo]
|
51
|
-
services = [services] if services.is_a?(Hash)
|
52
|
-
|
53
|
-
formatted_services = []
|
54
|
-
services.each do |service|
|
55
|
-
formatted_services << format_service(service)
|
56
|
-
end
|
57
|
-
|
58
|
-
{
|
59
|
-
services: formatted_services
|
60
|
-
}
|
61
|
-
end
|
62
|
-
|
63
|
-
def format_service(service)
|
64
|
-
if service[:erro].to_i == 0
|
65
|
-
{
|
66
|
-
code: service[:codigo],
|
67
|
-
description: service[:descricao].strip,
|
68
|
-
calculate_price: HELPER.convert_string_to_bool(
|
69
|
-
service[:calcula_preco]
|
70
|
-
),
|
71
|
-
calculate_deadline: HELPER.convert_string_to_bool(
|
72
|
-
service[:calcula_prazo]
|
73
|
-
)
|
74
|
-
}
|
75
|
-
else
|
76
|
-
{
|
77
|
-
code: service[:codigo],
|
78
|
-
error: {
|
79
|
-
code: service[:erro],
|
80
|
-
description: service[:msg_erro]
|
81
|
-
}
|
82
|
-
}
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
require 'savon'
|
2
|
-
|
3
|
-
module Correios
|
4
|
-
module ReverseLogistics
|
5
|
-
class Client
|
6
|
-
def client
|
7
|
-
credentials = Correios.credentials
|
8
|
-
|
9
|
-
Savon.client(
|
10
|
-
wsdl: wsdl,
|
11
|
-
basic_auth: [
|
12
|
-
credentials.reverse_logistics_user,
|
13
|
-
credentials.reverse_logistics_password
|
14
|
-
]
|
15
|
-
)
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def wsdl
|
21
|
-
if test_env?
|
22
|
-
'https://apphom.correios.com.br/logisticaReversaWS/logisticaReversaService/logisticaReversaWS?wsdl'
|
23
|
-
else
|
24
|
-
'https://cws.correios.com.br/logisticaReversaWS/logisticaReversaService/logisticaReversaWS?wsdl'
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_env?
|
29
|
-
(defined?(Rails) && ENV['RAILS_ENV'].in?(%w[test development]) ||
|
30
|
-
ENV['GEM_ENV'].in?(%w[test development]))
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,95 +0,0 @@
|
|
1
|
-
require 'date'
|
2
|
-
|
3
|
-
module Correios
|
4
|
-
module ReverseLogistics
|
5
|
-
class Helper
|
6
|
-
def namespaces
|
7
|
-
{
|
8
|
-
'xmlns:soap' => 'http://schemas.xmlsoap.org/soap/envelope/',
|
9
|
-
'xmlns:ns1' => 'http://service.logisticareversa.correios.com.br/'
|
10
|
-
}
|
11
|
-
end
|
12
|
-
|
13
|
-
def bool_to_string(bool)
|
14
|
-
'S' if bool
|
15
|
-
'N'
|
16
|
-
end
|
17
|
-
|
18
|
-
def bool_to_int(bool)
|
19
|
-
1 if bool
|
20
|
-
0
|
21
|
-
end
|
22
|
-
|
23
|
-
def deadline(value, type)
|
24
|
-
if type == :authorization
|
25
|
-
return value if value.is_a?(Numeric)
|
26
|
-
|
27
|
-
Date.today - value
|
28
|
-
else
|
29
|
-
return (Date.today + value).strftime('%d/%m/%Y') if value.is_a?(Numeric)
|
30
|
-
|
31
|
-
value.strftime('%d/%m/%Y')
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def shipping_type(type)
|
36
|
-
case type
|
37
|
-
when :authorization
|
38
|
-
'A'
|
39
|
-
when :pickup
|
40
|
-
'C'
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def shipping_type_inverse(type)
|
45
|
-
case type
|
46
|
-
when 'A'
|
47
|
-
:authorization
|
48
|
-
when 'C'
|
49
|
-
:pickup
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def ticket_type(type)
|
54
|
-
case type
|
55
|
-
when :authorization
|
56
|
-
'AP'
|
57
|
-
when :pickup
|
58
|
-
'LR'
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
def additional_services(services)
|
63
|
-
nil if services.nil?
|
64
|
-
|
65
|
-
services_string = ''
|
66
|
-
services.each do |service|
|
67
|
-
services_string += "#{service},"
|
68
|
-
end
|
69
|
-
services_string
|
70
|
-
end
|
71
|
-
|
72
|
-
def convert_string_to_date(date)
|
73
|
-
Date.strptime(date, '%d/%m/%Y')
|
74
|
-
end
|
75
|
-
|
76
|
-
def tracking_result_type(result_type)
|
77
|
-
case result_type
|
78
|
-
when :last_event
|
79
|
-
'U'
|
80
|
-
when :all_events
|
81
|
-
'H'
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
def convert_string_to_date_time(date, time)
|
86
|
-
time = time.strftime('%H:%M:%S')
|
87
|
-
Time.strptime("#{date} #{time}", '%d-%m-%Y %H:%M:%S')
|
88
|
-
end
|
89
|
-
|
90
|
-
def convert_date_to_string(date)
|
91
|
-
date.strftime('%d/%m/%Y')
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
data/lib/sigep/client.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'savon'
|
2
|
-
|
3
|
-
module Correios
|
4
|
-
module Sigep
|
5
|
-
class Client
|
6
|
-
def client
|
7
|
-
Savon.client(
|
8
|
-
wsdl: wsdl,
|
9
|
-
ssl_verify_mode: :none
|
10
|
-
)
|
11
|
-
end
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def wsdl
|
16
|
-
if test_env?
|
17
|
-
'https://apphom.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl'
|
18
|
-
else
|
19
|
-
'https://apps.correios.com.br/SigepMasterJPA/AtendeClienteService/AtendeCliente?wsdl'
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_env?
|
24
|
-
(defined?(Rails) && ENV['RAILS_ENV'].in?(%w[test development]) ||
|
25
|
-
ENV['GEM_ENV'].in?(%w[test development]))
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
data/lib/sigep/helper.rb
DELETED
@@ -1,234 +0,0 @@
|
|
1
|
-
require 'date'
|
2
|
-
|
3
|
-
module Correios
|
4
|
-
module Sigep
|
5
|
-
class Helper
|
6
|
-
def namespaces
|
7
|
-
{
|
8
|
-
'xmlns:soap' => 'http://schemas.xmlsoap.org/soap/envelope/',
|
9
|
-
'xmlns:ns1' => 'http://cliente.bean.master.sigep.bsb.correios.com.br/'
|
10
|
-
}
|
11
|
-
end
|
12
|
-
|
13
|
-
def shippings_xml(data)
|
14
|
-
credentials = Correios.credentials
|
15
|
-
sender = data[:sender]
|
16
|
-
sender_address = sender[:address]
|
17
|
-
shippings = data[:shippings]
|
18
|
-
|
19
|
-
Nokogiri::XML::Builder.new(encoding: 'ISO-8859-1') do |xml|
|
20
|
-
xml.correioslog do
|
21
|
-
xml.tipo_arquivo 'Postagem'
|
22
|
-
xml.versao_arquivo '2.3'
|
23
|
-
xml.plp do
|
24
|
-
xml.id_plp
|
25
|
-
xml.valor_global
|
26
|
-
xml.mcu_unidade_postagem
|
27
|
-
xml.nome_unidade_postagem
|
28
|
-
xml.cartao_postagem credentials.card
|
29
|
-
end
|
30
|
-
xml.remetente do
|
31
|
-
xml.numero_contrato credentials.contract
|
32
|
-
xml.numero_diretoria sender[:board_id]
|
33
|
-
xml.codigo_administrativo credentials.administrative_code
|
34
|
-
xml.nome_remetente sender[:name]
|
35
|
-
xml.logradouro_remetente sender_address[:street]
|
36
|
-
xml.numero_remetente sender_address[:number]
|
37
|
-
xml.complemento_remetente sender_address[:additional]
|
38
|
-
xml.bairro_remetente sender_address[:neighborhood]
|
39
|
-
xml.cep_remetente sender_address[:zip_code]
|
40
|
-
xml.cidade_remetente sender_address[:city]
|
41
|
-
xml.uf_remetente sender_address[:state]
|
42
|
-
xml.telefone_remetente sender[:phone]
|
43
|
-
xml.fax_remetente sender[:fax]
|
44
|
-
xml.email_remetente sender[:email]
|
45
|
-
end
|
46
|
-
xml.forma_pagamento payment_method(data[:payment_method])
|
47
|
-
shippings.each do |shipping|
|
48
|
-
receiver = shipping[:receiver]
|
49
|
-
receiver_address = receiver[:address]
|
50
|
-
object = shipping[:object]
|
51
|
-
invoice = shipping[:invoice] || {}
|
52
|
-
additional_services = shipping[:additional_services] || []
|
53
|
-
notes = shipping[:notes] || []
|
54
|
-
|
55
|
-
xml.objeto_postal do
|
56
|
-
xml.numero_etiqueta shipping[:label_number]
|
57
|
-
xml.codigo_objeto_cliente shipping[:code]
|
58
|
-
xml.codigo_servico_postagem shipping[:service_code]
|
59
|
-
xml.cubagem 0
|
60
|
-
xml.peso object[:weight]
|
61
|
-
xml.rt1 notes[0]
|
62
|
-
xml.rt2 notes[1]
|
63
|
-
xml.destinatario do
|
64
|
-
xml.nome_destinatario receiver[:name]
|
65
|
-
xml.telefone_destinatario receiver[:phone]
|
66
|
-
xml.celular_destinatario receiver[:cellphone]
|
67
|
-
xml.email_destinatario receiver[:email]
|
68
|
-
xml.logradouro_destinatario receiver_address[:street]
|
69
|
-
xml.complemento_destinatario receiver_address[:additional]
|
70
|
-
xml.numero_end_destinatario receiver_address[:number]
|
71
|
-
end
|
72
|
-
xml.nacional do
|
73
|
-
xml.bairro_destinatario receiver_address[:neighborhood]
|
74
|
-
xml.cidade_destinatario receiver_address[:city]
|
75
|
-
xml.uf_destinatario receiver_address[:state]
|
76
|
-
xml.cep_destinatario receiver_address[:zip_code]
|
77
|
-
xml.codigo_usuario_postal
|
78
|
-
xml.centro_custo_cliente shipping[:cost_center]
|
79
|
-
xml.numero_nota_fiscal invoice[:number]
|
80
|
-
xml.serie_nota_fiscal invoice[:serie]
|
81
|
-
xml.valor_nota_fiscal invoice[:value]
|
82
|
-
xml.natureza_nota_fiscal invoice[:kind]
|
83
|
-
xml.descricao_objeto shipping[:description]
|
84
|
-
xml.valor_a_cobrar shipping[:additional_value]
|
85
|
-
end
|
86
|
-
xml.servico_adicional do
|
87
|
-
additional_services.each do |additional_service|
|
88
|
-
xml.codigo_servico_adicional additional_service
|
89
|
-
end
|
90
|
-
xml.valor_declarado shipping[:declared_value]
|
91
|
-
end
|
92
|
-
xml.dimensao_objeto do
|
93
|
-
xml.tipo_objeto object_type(object[:type])
|
94
|
-
xml.dimensao_altura object[:height] || 0
|
95
|
-
xml.dimensao_largura object[:width] || 0
|
96
|
-
xml.dimensao_comprimento object[:length] || 0
|
97
|
-
xml.dimensao_diametro object[:diameter] || 0
|
98
|
-
end
|
99
|
-
xml.data_postagem_sara
|
100
|
-
xml.status_processamento 0
|
101
|
-
xml.numero_comprovante_postagem
|
102
|
-
xml.valor_cobrado
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end.to_xml.encode(Encoding::UTF_8)
|
107
|
-
end
|
108
|
-
|
109
|
-
def label_without_digit_checker(label_number)
|
110
|
-
label_number.slice!(10)
|
111
|
-
label_number
|
112
|
-
end
|
113
|
-
|
114
|
-
def convert_string_to_bool(string)
|
115
|
-
string.strip == 'S'
|
116
|
-
end
|
117
|
-
|
118
|
-
def convert_string_to_date(date, time)
|
119
|
-
DateTime.strptime("#{date} #{time}", '%d/%m/%Y %H:%M')
|
120
|
-
end
|
121
|
-
|
122
|
-
def convert_string_to_decimal(string)
|
123
|
-
return nil if string.nil?
|
124
|
-
|
125
|
-
string.tr(',', '.').to_f
|
126
|
-
end
|
127
|
-
|
128
|
-
def tracking_event_status(event)
|
129
|
-
type = event['tipo']
|
130
|
-
status = event['status'].to_i
|
131
|
-
|
132
|
-
case type
|
133
|
-
when 'BDE', 'BDI', 'BDR'
|
134
|
-
case status
|
135
|
-
when 0, 1
|
136
|
-
return :delivered
|
137
|
-
when 2
|
138
|
-
return :not_delivered
|
139
|
-
when 4, 5, 6, 8, 10, 21, 22, 26, 33, 36, 40, 42, 48, 49, 56
|
140
|
-
return :returning
|
141
|
-
when 7, 19, 25, 32, 38, 41, 45, 46, 47, 53, 57, 66, 69
|
142
|
-
return :in_transit
|
143
|
-
when 9, 50, 51, 52
|
144
|
-
return :stolen_lost
|
145
|
-
when 3, 12, 24
|
146
|
-
return :awaiting_pick_up
|
147
|
-
when 20, 34, 35
|
148
|
-
return :not_delivered
|
149
|
-
when 23
|
150
|
-
return :returned
|
151
|
-
when 28, 37
|
152
|
-
return :damaged
|
153
|
-
when 43
|
154
|
-
return :arrested
|
155
|
-
when 54, 55, 58, 59
|
156
|
-
return :taxing
|
157
|
-
end
|
158
|
-
when 'BLQ', 'PMT', 'CD', 'CMT', 'TRI', 'CUN', 'RO', 'DO', 'EST', 'PAR'
|
159
|
-
case status
|
160
|
-
when 0, 1, 2, 3, 4, 5, 6, 9, 15, 16, 17, 18
|
161
|
-
return :in_transit
|
162
|
-
end
|
163
|
-
when 'FC'
|
164
|
-
case status
|
165
|
-
when 1
|
166
|
-
return :returning
|
167
|
-
when 2, 3, 5, 7
|
168
|
-
return :in_transit
|
169
|
-
when 4
|
170
|
-
return :not_delivered
|
171
|
-
end
|
172
|
-
when 'IDC'
|
173
|
-
case status
|
174
|
-
when 1, 2, 3, 4, 5, 6, 7
|
175
|
-
return :stolen_lost
|
176
|
-
end
|
177
|
-
when 'LDI'
|
178
|
-
case status
|
179
|
-
when 0, 1, 2, 3, 14
|
180
|
-
return :awaiting_pick_up
|
181
|
-
end
|
182
|
-
when 'OEC', 'LDE'
|
183
|
-
case status
|
184
|
-
when 0, 1, 9
|
185
|
-
return :delivering
|
186
|
-
end
|
187
|
-
when 'PO', 'CO'
|
188
|
-
case status
|
189
|
-
when 0, 1, 9
|
190
|
-
return :posted
|
191
|
-
end
|
192
|
-
end
|
193
|
-
end
|
194
|
-
|
195
|
-
private
|
196
|
-
|
197
|
-
def convert_decimal_to_string(decimal)
|
198
|
-
return nil if decimal.nil?
|
199
|
-
|
200
|
-
decimal.to_s.tr('.', ',')
|
201
|
-
end
|
202
|
-
|
203
|
-
def object_type(type)
|
204
|
-
case type
|
205
|
-
when :letter_envelope
|
206
|
-
'001'
|
207
|
-
when :box
|
208
|
-
'002'
|
209
|
-
when :prism
|
210
|
-
'002'
|
211
|
-
when :cylinder
|
212
|
-
'003'
|
213
|
-
end
|
214
|
-
end
|
215
|
-
|
216
|
-
def payment_method(method)
|
217
|
-
case method
|
218
|
-
when :postal_vouncher
|
219
|
-
1
|
220
|
-
when :postal_refound
|
221
|
-
2
|
222
|
-
when :exchange_contract
|
223
|
-
3
|
224
|
-
when :credit_card
|
225
|
-
4
|
226
|
-
when :other
|
227
|
-
5
|
228
|
-
when :to_bill
|
229
|
-
nil
|
230
|
-
end
|
231
|
-
end
|
232
|
-
end
|
233
|
-
end
|
234
|
-
end
|