correios 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +10 -11
- data/Rakefile +1 -1
- data/correios.gemspec +1 -1
- data/lib/correios.rb +34 -19
- metadata +3 -3
data/README.rdoc
CHANGED
@@ -9,23 +9,23 @@ Gem para cálculo de frete usando o e rastreamento dos correios usando webservic
|
|
9
9
|
== Como Usar
|
10
10
|
|
11
11
|
require 'correios'
|
12
|
-
|
13
|
-
begin
|
14
|
-
correios = Correios.new(76410000, 74932180)
|
15
|
-
correios.calcula_frete(Correios::Servico::PAC, 0.4, 17, 16,16,16)
|
16
|
-
rescue Correios::InvalidCalcException => e
|
17
|
-
puts e.message
|
18
|
-
end
|
19
12
|
|
20
|
-
|
13
|
+
# Para calcular apenas um serviço
|
14
|
+
correios = Correios.new(76410000, 74932180)
|
15
|
+
correios.calcular_frete(Correios::Servico::PAC, 0.4, 17, 16,16,16)
|
16
|
+
|
21
17
|
|
22
|
-
|
18
|
+
# Para calcular mais de um serviço
|
19
|
+
#Neste caso o retorno será um array.
|
20
|
+
correios = Correios.new(76410000, 74932180)
|
21
|
+
correios.calcular_frete([Correios::Servico::PAC, Correios::Servico::SEDEX], 0.4, 17, 16,16,16)
|
23
22
|
|
23
|
+
|
24
24
|
== Outras informações
|
25
25
|
|
26
26
|
Definição do método calcula frete:
|
27
27
|
|
28
|
-
|
28
|
+
calcular_frete(tipo, peso, comprimento,
|
29
29
|
altura, largura, diametro, mao_propria = NAO,
|
30
30
|
valor_declarado = 0, aviso_recebimento = NAO)
|
31
31
|
|
@@ -37,7 +37,6 @@ Gem para cálculo de frete usando o e rastreamento dos correios usando webservic
|
|
37
37
|
Correios::Servico::SEDEX10
|
38
38
|
Correios::Servico::SEDEX_HOJE
|
39
39
|
Correios::Servico::ESEDEX
|
40
|
-
Correios::Servico::MALOTE
|
41
40
|
|
42
41
|
== Contato
|
43
42
|
|
data/Rakefile
CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'rake'
|
3
3
|
require 'echoe'
|
4
4
|
|
5
|
-
Echoe.new('correios', '0.
|
5
|
+
Echoe.new('correios', '0.3.0') do |p|
|
6
6
|
p.description = "Gem para calculo de valor e restreamento dos correios"
|
7
7
|
p.url = "https://github.com/brunofrank/correios"
|
8
8
|
p.author = "Bruno Frank"
|
data/correios.gemspec
CHANGED
data/lib/correios.rb
CHANGED
@@ -3,21 +3,34 @@ require 'xmlsimple'
|
|
3
3
|
|
4
4
|
class Correios
|
5
5
|
|
6
|
-
class
|
7
|
-
attr_reader :message
|
8
|
-
|
9
|
-
def initialize(message)
|
10
|
-
@message = message
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class Servico
|
6
|
+
class Servico
|
15
7
|
PAC = 41106
|
16
8
|
SEDEX = 40010
|
17
9
|
SEDEX10 = 40215
|
18
10
|
SEDEX_HOJE = 40290
|
19
11
|
ESEDEX = 81019
|
20
|
-
|
12
|
+
|
13
|
+
SERVICOS = {
|
14
|
+
41106 => :pac,
|
15
|
+
40010 => :sedex,
|
16
|
+
40215 => :sedex10,
|
17
|
+
40290 => :sedex_hoje,
|
18
|
+
81019 => :esedex
|
19
|
+
}
|
20
|
+
|
21
|
+
attr_reader :servico, :valor, :prazo, :erro, :message
|
22
|
+
|
23
|
+
def initialize(servico)
|
24
|
+
@servico = SERVICOS[servico["Codigo"].to_s.to_i]
|
25
|
+
@valor = servico["Valor"].to_s.gsub(',', '.').to_f
|
26
|
+
@prazo = servico["PrazoEntrega"].to_s.to_i
|
27
|
+
@erro = servico["Erro"].to_s
|
28
|
+
@message = servico["MsgErro"].to_s
|
29
|
+
end
|
30
|
+
|
31
|
+
def valid?
|
32
|
+
@erro == '0'
|
33
|
+
end
|
21
34
|
end
|
22
35
|
|
23
36
|
SIM = 'S'
|
@@ -28,7 +41,7 @@ class Correios
|
|
28
41
|
@cep_destino = cep_destino
|
29
42
|
end
|
30
43
|
|
31
|
-
def
|
44
|
+
def calcular_frete(servicos, peso, comprimento, altura, largura, diametro, mao_propria = NAO,
|
32
45
|
valor_declarado = 0, aviso_recebimento = NAO)
|
33
46
|
host = 'http://ws.correios.com.br'
|
34
47
|
path = '/calculador/CalcPrecoPrazo.aspx'
|
@@ -37,7 +50,7 @@ class Correios
|
|
37
50
|
:nCdEmpresa => '',
|
38
51
|
:sDsSenha => '',
|
39
52
|
:StrRetorno => "xml",
|
40
|
-
:nCdServico =>
|
53
|
+
:nCdServico => servicos.to_a.join(','),
|
41
54
|
:sCepOrigem => @cep_origem,
|
42
55
|
:sCepDestino => @cep_destino,
|
43
56
|
:nVlPeso => peso,
|
@@ -48,20 +61,22 @@ class Correios
|
|
48
61
|
:nVlDiametro => diametro,
|
49
62
|
:sCdMaoPropria => mao_propria,
|
50
63
|
:nVlValorDeclarado => valor_declarado,
|
51
|
-
:resposta => "Xml",
|
52
64
|
:sCdAvisoRecebimento => aviso_recebimento
|
53
65
|
}
|
54
66
|
|
55
67
|
params = params.to_a.map {|item| item.to_a.join('=')} .join('&')
|
56
68
|
|
57
69
|
xml = XmlSimple.xml_in(open("#{host}#{path}?#{params}").read)
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
70
|
+
|
71
|
+
if xml["cServico"].size > 1
|
72
|
+
servicos = []
|
73
|
+
xml["cServico"].each do |servico|
|
74
|
+
servicos << Servico.new(servico)
|
75
|
+
end
|
63
76
|
else
|
64
|
-
|
77
|
+
servicos = Servico.new(xml["cServico"].first)
|
65
78
|
end
|
79
|
+
|
80
|
+
return servicos
|
66
81
|
end
|
67
82
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: correios
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 3
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Bruno Frank
|