spree_temando 0.1.3 → 0.1.4
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/Rakefile +31 -3
- data/app/models/spree/calculator/temando_quote.rb +23 -7
- data/lib/spree_temando/engine.rb +1 -4
- data/lib/spree_temando/version.rb +1 -1
- metadata +4 -36
data/Rakefile
CHANGED
@@ -4,9 +4,37 @@ begin
|
|
4
4
|
rescue LoadError
|
5
5
|
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
6
|
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
14
|
+
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'SpreeTemando'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
21
|
+
end
|
22
|
+
|
23
|
+
APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
|
24
|
+
load 'rails/tasks/engine.rake'
|
7
25
|
|
8
|
-
require 'rspec/core/rake_task'
|
9
26
|
|
10
|
-
RSpec::Core::RakeTask.new('spec')
|
11
27
|
|
12
|
-
|
28
|
+
Bundler::GemHelper.install_tasks
|
29
|
+
|
30
|
+
require 'rake/testtask'
|
31
|
+
|
32
|
+
Rake::TestTask.new(:test) do |t|
|
33
|
+
t.libs << 'lib'
|
34
|
+
t.libs << 'test'
|
35
|
+
t.pattern = 'test/**/*_test.rb'
|
36
|
+
t.verbose = false
|
37
|
+
end
|
38
|
+
|
39
|
+
|
40
|
+
task :default => :test
|
@@ -18,15 +18,25 @@ module Spree
|
|
18
18
|
|
19
19
|
def cheapest(destination, line_items)
|
20
20
|
quotes = find_quotes(destination, line_items)
|
21
|
+
return nil if quotes.nil?
|
21
22
|
cheapest = quotes.sort_by { |q| q.total_price }.first
|
22
|
-
|
23
|
+
if cheapest then
|
24
|
+
{ :price => cheapest.total_price, :minimum_eta => cheapest.minimum_eta, :maximum_eta => cheapest.maximum_eta, :quote => cheapest }
|
25
|
+
else
|
26
|
+
nil
|
27
|
+
end
|
23
28
|
end
|
24
29
|
|
25
30
|
def fastest(destination, line_items)
|
26
31
|
quotes = find_quotes(destination, line_items)
|
32
|
+
return nil if quotes.nil?
|
27
33
|
fastest_eta = quotes.collect(&:maximum_eta).min
|
28
34
|
cheapest = quotes.reject { |q| q.maximum_eta > fastest_eta }.sort_by { |q| q.total_price }.first
|
29
|
-
|
35
|
+
if cheapest then
|
36
|
+
{ :price => cheapest.total_price, :minimum_eta => cheapest.minimum_eta, :maximum_eta => cheapest.maximum_eta, :quote => cheapest }
|
37
|
+
else
|
38
|
+
nil
|
39
|
+
end
|
30
40
|
end
|
31
41
|
|
32
42
|
def temando_origin
|
@@ -57,6 +67,8 @@ module Spree
|
|
57
67
|
data = cheapest(destination.to_temando_location, object.line_items)
|
58
68
|
end
|
59
69
|
|
70
|
+
return if data.nil?
|
71
|
+
|
60
72
|
quote = Spree::TemandoQuote.new_or_update_from_quote(self, object, data[:quote], destination)
|
61
73
|
|
62
74
|
# Store the Quote data against the Order and these LineItems if they are persisted
|
@@ -77,12 +89,16 @@ private
|
|
77
89
|
def find_quotes(destination, line_items)
|
78
90
|
delivery = Temando::Delivery::DoorToDoor.new(self.temando_origin, destination)
|
79
91
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
92
|
+
begin
|
93
|
+
request = Temando::Request.new
|
94
|
+
line_items.reject { |i| i.quantity < 1 }.each do |item|
|
95
|
+
request.items << item.to_temando_item
|
96
|
+
end
|
84
97
|
|
85
|
-
|
98
|
+
request.quotes_for(delivery)
|
99
|
+
rescue Temando::Api::Exceptions::SoapError
|
100
|
+
return nil
|
101
|
+
end
|
86
102
|
end
|
87
103
|
end
|
88
104
|
end
|
data/lib/spree_temando/engine.rb
CHANGED
@@ -1,6 +1,3 @@
|
|
1
|
-
require 'spree_core'
|
2
|
-
require 'temando'
|
3
|
-
|
4
1
|
module SpreeTemando
|
5
2
|
class Engine < ::Rails::Engine
|
6
3
|
isolate_namespace SpreeTemando
|
@@ -12,7 +9,7 @@ module SpreeTemando
|
|
12
9
|
Dir.glob(File.join(File.dirname(__FILE__), "../../app/**/*_decorator*.rb")) do |c|
|
13
10
|
Rails.configuration.cache_classes ? require(c) : load(c)
|
14
11
|
end
|
15
|
-
|
12
|
+
Temando::Api::Base.logger = Rails.logger
|
16
13
|
end
|
17
14
|
|
18
15
|
initializer "spree_temando.register.shipping_calculators" do |app|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_temando
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -60,13 +60,13 @@ dependencies:
|
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 0.1.3
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
63
|
+
name: rspec
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
none: false
|
66
66
|
requirements:
|
67
67
|
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
69
|
+
version: 2.11.0
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,23 +74,7 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
78
|
-
- !ruby/object:Gem::Dependency
|
79
|
-
name: rspec-rails
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
86
|
-
type: :development
|
87
|
-
prerelease: false
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
77
|
+
version: 2.11.0
|
94
78
|
- !ruby/object:Gem::Dependency
|
95
79
|
name: faker
|
96
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -139,22 +123,6 @@ dependencies:
|
|
139
123
|
- - ! '>='
|
140
124
|
- !ruby/object:Gem::Version
|
141
125
|
version: '0'
|
142
|
-
- !ruby/object:Gem::Dependency
|
143
|
-
name: sqlite3
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
|
-
requirements:
|
147
|
-
- - ! '>='
|
148
|
-
- !ruby/object:Gem::Version
|
149
|
-
version: '0'
|
150
|
-
type: :development
|
151
|
-
prerelease: false
|
152
|
-
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
|
-
requirements:
|
155
|
-
- - ! '>='
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: '0'
|
158
126
|
description: Adds temando shipping support to Spree
|
159
127
|
email:
|
160
128
|
- jason@reinteractive.net
|