correios 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|