datashift_spree 0.4.2 → 0.5.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/VERSION +1 -1
- data/datashift_spree.thor +1 -1
- data/lib/datashift_spree.rb +1 -2
- data/lib/thor/spree/products_images.thor +3 -4
- data/lib/thor/spree/reports.thor +2 -2
- data/lib/thor/spree/{bootstrap_cleanup.thor → utils.thor} +4 -3
- data/lib/thor/spree_databank/uk_shipping.thor +290 -0
- metadata +4 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/datashift_spree.thor
CHANGED
data/lib/datashift_spree.rb
CHANGED
@@ -16,9 +16,9 @@ require 'datashift_spree'
|
|
16
16
|
|
17
17
|
require 'spree_helper'
|
18
18
|
|
19
|
-
module
|
20
|
-
|
21
|
-
class
|
19
|
+
module DatashiftSpree
|
20
|
+
|
21
|
+
class Load < Thor
|
22
22
|
|
23
23
|
include DataShift::Logging
|
24
24
|
|
@@ -157,5 +157,4 @@ module Datashift
|
|
157
157
|
end
|
158
158
|
|
159
159
|
end
|
160
|
-
|
161
160
|
end
|
data/lib/thor/spree/reports.thor
CHANGED
@@ -9,9 +9,9 @@
|
|
9
9
|
#
|
10
10
|
# Note, not DataShift, case sensitive, create namespace for command line : datashift
|
11
11
|
|
12
|
-
module
|
12
|
+
module DatashiftSpree
|
13
13
|
|
14
|
-
class
|
14
|
+
class Utils < Thor
|
15
15
|
|
16
16
|
include DataShift::Logging
|
17
17
|
|
@@ -26,9 +26,10 @@ module Datashift
|
|
26
26
|
require File.expand_path('config/environment.rb')
|
27
27
|
|
28
28
|
ActiveRecord::Base.connection.execute("TRUNCATE spree_products_taxons")
|
29
|
+
ActiveRecord::Base.connection.execute("TRUNCATE spree_products_promotion_rules")
|
29
30
|
|
30
31
|
cleanup = %w{ Image OptionType OptionValue
|
31
|
-
Product Property
|
32
|
+
Product Property ProductProperty ProductOptionType
|
32
33
|
Variant Taxonomy Taxon
|
33
34
|
}
|
34
35
|
|
@@ -0,0 +1,290 @@
|
|
1
|
+
# Copyright:: (c) Autotelik Media Ltd 201=3
|
2
|
+
# Author :: Tom Statter
|
3
|
+
# Date :: Jan 2013
|
4
|
+
# License:: MIT. Free, Open Source.
|
5
|
+
#
|
6
|
+
# Details:: Helper tasks for setting up Royal Mail UK Shipping in Spree
|
7
|
+
#
|
8
|
+
# Must be run from your Rails.root path
|
9
|
+
#
|
10
|
+
# => N.B Before using set your required Rates(prices) in @cat_rates_matrix
|
11
|
+
|
12
|
+
require 'thor'
|
13
|
+
|
14
|
+
|
15
|
+
module DatashiftSpree
|
16
|
+
|
17
|
+
module DataBank
|
18
|
+
|
19
|
+
class UkShipping < Thor
|
20
|
+
|
21
|
+
require File.expand_path('config/environment.rb')
|
22
|
+
|
23
|
+
#############################
|
24
|
+
# Zone Setup for Royal Mail
|
25
|
+
# http://www.royalmail.com
|
26
|
+
#############################
|
27
|
+
usage =<<-EOS
|
28
|
+
Setup Royal Mail Zones, Shipping Categories and Methods
|
29
|
+
|
30
|
+
Available Calculators are:
|
31
|
+
\t#{Spree::ShippingMethod.calculators.sort_by(&:name).join("\n\t")}
|
32
|
+
|
33
|
+
EOS
|
34
|
+
|
35
|
+
desc "royal_mail", usage
|
36
|
+
|
37
|
+
method_option :commit, :aliases => '-c', :type => :boolean, :required => false, :desc => "Commit changes permanently"
|
38
|
+
method_option :calc, :required => false, :default => 'Spree::Calculator::FlatRate', :desc => "Calculators"
|
39
|
+
|
40
|
+
def royal_mail
|
41
|
+
|
42
|
+
# Royal Mail is the ShippingMethod (actual service used to send the product) with 3 applicable Zones.
|
43
|
+
#
|
44
|
+
# [UK 1st, EU, INT]
|
45
|
+
#
|
46
|
+
# Matrix of Rates for with your required Category(s)
|
47
|
+
# Generally products are classified by ShippingCategory, with each Product assigned to a single Category
|
48
|
+
#
|
49
|
+
# For example each Product would be in either one of the Categories, Light or Heavy
|
50
|
+
# @cat_rates_matrix = {
|
51
|
+
# 'Light' => [3.73, 4.23, 5.95],
|
52
|
+
# 'Heavy' => [5.00, 6.00, 10.00]
|
53
|
+
# }
|
54
|
+
|
55
|
+
@cat_rates_matrix = {
|
56
|
+
'FlatPerOrder' => [10.00, 12.00, 15.00]
|
57
|
+
}
|
58
|
+
|
59
|
+
raise "Please set the Rates for each Categoryt in the task" if(@cat_rates_matrix.nil? || @cat_rates_matrix.empty?)
|
60
|
+
|
61
|
+
Spree::Zone.transaction do
|
62
|
+
|
63
|
+
# FIRST CREATE 3 RM ZONES
|
64
|
+
|
65
|
+
zone_map = {
|
66
|
+
'UK' => 'United Kingdom (GB)',
|
67
|
+
'Europe' => 'Countries within the European economic area',
|
68
|
+
'International' => 'Rest of World',
|
69
|
+
}
|
70
|
+
|
71
|
+
zone_names = zone_map.keys
|
72
|
+
|
73
|
+
zone_map.each do |n, d|
|
74
|
+
Spree::Zone.create( :name => n, :description => d )
|
75
|
+
puts "Zone #{n} created"
|
76
|
+
end
|
77
|
+
|
78
|
+
# NOW POPULATE ZONE MEMBERS
|
79
|
+
|
80
|
+
current_zone = Spree::Zone.find_by_name( 'UK' )
|
81
|
+
country = Spree::Country.find_by_name( 'United Kingdom' )
|
82
|
+
|
83
|
+
raise "No UK Zone/Country Found" unless current_zone && country
|
84
|
+
|
85
|
+
# Seed on :zoneable_id since in this case we know each country in a distinct zone
|
86
|
+
zoneable_type = 'Spree::Country'
|
87
|
+
|
88
|
+
Spree::ZoneMember.create( :zone => current_zone, :zoneable_type => zoneable_type, :zoneable_id => country.id)
|
89
|
+
|
90
|
+
## 2 N.B This is for shipping FROM UK so UK NOT in Europe ZONE
|
91
|
+
current_zone = Spree::Zone.find_by_name( 'Europe' )
|
92
|
+
|
93
|
+
europe_list = %w{Albania Andorra Armenia Austria Azerbaijan Azores
|
94
|
+
Balearic\ Islands
|
95
|
+
Belarus Belgium
|
96
|
+
Bosnia\ and\ Herzegovina
|
97
|
+
Bulgaria
|
98
|
+
Canary\ Islands
|
99
|
+
Corsica Croatia Cyprus
|
100
|
+
Czech\ Republic
|
101
|
+
Denmark Estonia
|
102
|
+
Faroe\ Islands
|
103
|
+
Finland France Georgia Germany Gibraltar Greece Greenland Hungary Iceland
|
104
|
+
Ireland
|
105
|
+
Italy Kazakhstan Kosovo Kyrgyzstan Latvia Liechtenstein Lithuania Luxembourg
|
106
|
+
Macedonia Madeira Malta
|
107
|
+
Moldova,\ Republic\ of
|
108
|
+
Monaco Montenegro Netherlands Norway
|
109
|
+
Poland Portugal Romania
|
110
|
+
Russian\ Federation
|
111
|
+
San\ Marino
|
112
|
+
Serbia Slovakia Slovenia Spain Sweden Switzerland Tajikistan Turkey Turkmenistan
|
113
|
+
Ukraine Uzbekistan
|
114
|
+
Vatican\ City\ State
|
115
|
+
}
|
116
|
+
|
117
|
+
europe_list.each do |c|
|
118
|
+
|
119
|
+
country = Spree::Country.find_by_name( c )
|
120
|
+
|
121
|
+
unless country
|
122
|
+
puts "WARNING: Country #{c} not found in DB"
|
123
|
+
puts "If you require this Country #{c} you will have to add MANUALLY with ISO"
|
124
|
+
next
|
125
|
+
end
|
126
|
+
|
127
|
+
Spree::ZoneMember.create!( :zone => current_zone, :zoneable_type => zoneable_type, :zoneable_id => country.id)
|
128
|
+
end
|
129
|
+
|
130
|
+
puts "European countries added to Europe Zone"
|
131
|
+
|
132
|
+
current_zone = Spree::Zone.find_by_name( 'International' )
|
133
|
+
|
134
|
+
raise "No International Zone Found" unless current_zone
|
135
|
+
|
136
|
+
Spree::Country.all.each do |country|
|
137
|
+
|
138
|
+
next if( country.name == 'United Kingdom' || europe_list.include?( country.name ) )
|
139
|
+
|
140
|
+
Spree::ZoneMember.create!( :zone => current_zone, :zoneable_type => zoneable_type, :zoneable_id => country.id)
|
141
|
+
end
|
142
|
+
|
143
|
+
puts "Countries added to International Zone"
|
144
|
+
|
145
|
+
# In this example we are working with 1 deliverer, 3 Zones => 3 Shipping Methods
|
146
|
+
|
147
|
+
# And we have a single product classification => 1 Shipping Categories:
|
148
|
+
|
149
|
+
#######################
|
150
|
+
# SHIPPING CATEGORIES #
|
151
|
+
#######################
|
152
|
+
|
153
|
+
#first create the categories
|
154
|
+
@cat_rates_matrix.each do |cat, rates|
|
155
|
+
|
156
|
+
current_shipping_category = Spree::ShippingCategory.create!(:name => cat)
|
157
|
+
|
158
|
+
puts "Spree::ShippingCategory #{cat} created"
|
159
|
+
|
160
|
+
# Now associate Shipping with Zones
|
161
|
+
@shipping_methods = []
|
162
|
+
{
|
163
|
+
'Royal Mail UK 1st' => zone_names[0],
|
164
|
+
'Royal Mail Europe' => zone_names[1],
|
165
|
+
'Royal Mail International' => zone_names[2]
|
166
|
+
|
167
|
+
}.each do |name, zone|
|
168
|
+
|
169
|
+
ship_method_attributes = {
|
170
|
+
:name => name,
|
171
|
+
:zone => Spree::Zone.find_by_name(zone),
|
172
|
+
:shipping_category => current_shipping_category,
|
173
|
+
:calculator_type => options[:calc]
|
174
|
+
}
|
175
|
+
|
176
|
+
@shipping_methods << Spree::ShippingMethod.create!( ship_method_attributes, :without_protection => true )
|
177
|
+
|
178
|
+
puts "Spree::Shipping Method #{name} created with Cal #{options[:calc]} in Zone #{zone}"
|
179
|
+
end
|
180
|
+
|
181
|
+
# Now set the Rates (
|
182
|
+
unless(@shipping_methods.size == rates.size)
|
183
|
+
puts "WARNING: Sorry could not set Rates check @cat_rates_matrix set correctly in script"
|
184
|
+
else
|
185
|
+
puts "Setting Rates on the Shipping Methods"
|
186
|
+
@shipping_methods.each_with_index do |m, i|
|
187
|
+
m.calculator.preferred_amount= rates[i];
|
188
|
+
m.save!
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
unless options[:commit] == true
|
194
|
+
puts "Dummy run - rolling back changes - run with --commit to make changes permenant"
|
195
|
+
raise ActiveRecord::Rollback
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
desc "counties", "Setup UK Counties (Spree::State)"
|
201
|
+
|
202
|
+
method_option :commit, :aliases => '-c', :type => :boolean, :required => false, :desc => "Commit changes permanently"
|
203
|
+
|
204
|
+
def counties
|
205
|
+
|
206
|
+
names, abbrs = [],[]
|
207
|
+
|
208
|
+
names << 'Avon'
|
209
|
+
names << 'Bedfordshire'
|
210
|
+
names << 'Berkshire'
|
211
|
+
names << 'Borders'
|
212
|
+
names << 'Buckinghamshire'
|
213
|
+
names << 'Cambridgeshire'
|
214
|
+
names << 'Central'
|
215
|
+
names << 'Cheshire'
|
216
|
+
names << 'Cleveland'
|
217
|
+
names << 'Clwyd'
|
218
|
+
names << 'Cornwall'
|
219
|
+
names << 'County Antrim'
|
220
|
+
names << 'County Armagh'
|
221
|
+
names << 'County Down'
|
222
|
+
names << 'County Fermanagh'
|
223
|
+
names << 'County Londonderry'
|
224
|
+
names << 'County Tyrone'
|
225
|
+
names << 'Cumbria'
|
226
|
+
names << 'Derbyshire'
|
227
|
+
names << 'Devon'
|
228
|
+
names << 'Dorset'
|
229
|
+
names << 'Dumfries and Galloway'
|
230
|
+
names << 'Durham'
|
231
|
+
names << 'Dyfed'
|
232
|
+
names << 'East Sussex'
|
233
|
+
names << 'Essex'
|
234
|
+
names << 'Fife'
|
235
|
+
names << 'Gloucestershire'
|
236
|
+
names << 'Grampian'
|
237
|
+
names << 'Greater Manchester'
|
238
|
+
names << 'Gwent'
|
239
|
+
names << 'Gwynedd County'
|
240
|
+
names << 'Hampshire'
|
241
|
+
names << 'Herefordshire'
|
242
|
+
names << 'Hertfordshire'
|
243
|
+
names << 'Highlands and Islands'
|
244
|
+
names << 'Humberside'
|
245
|
+
names << 'Isle of Wight'
|
246
|
+
names << 'Kent'
|
247
|
+
names << 'Lancashire'
|
248
|
+
names << 'Leicestershire'
|
249
|
+
names << 'Lincolnshire'
|
250
|
+
names << 'London'
|
251
|
+
names << 'Lothian'
|
252
|
+
names << 'Merseyside'
|
253
|
+
names << 'Mid Glamorgan'
|
254
|
+
names << 'Norfolk'
|
255
|
+
names << 'North Yorkshire'
|
256
|
+
names << 'Northamptonshire'
|
257
|
+
names << 'Northumberland'
|
258
|
+
names << 'Nottinghamshire'
|
259
|
+
names << 'Oxfordshire'
|
260
|
+
names << 'Powys'
|
261
|
+
names << 'Rutland'
|
262
|
+
names << 'Shropshire'
|
263
|
+
names << 'Somerset'
|
264
|
+
names << 'South Glamorgan'
|
265
|
+
names << 'South Yorkshire'
|
266
|
+
names << 'Staffordshire'
|
267
|
+
names << 'Strathclyde'
|
268
|
+
names << 'Suffolk'
|
269
|
+
names << 'Surrey'
|
270
|
+
names << 'Tayside'
|
271
|
+
names << 'Tyne and Wear'
|
272
|
+
names << 'Warwickshire'
|
273
|
+
names << 'West Glamorgan'
|
274
|
+
names << 'West Midlands'
|
275
|
+
names << 'West Sussex'
|
276
|
+
names << 'West Yorkshire'
|
277
|
+
names << 'Wiltshire'
|
278
|
+
names << 'Worcestershire'
|
279
|
+
|
280
|
+
uk = Spree::Country.find_by_name( 'United Kingdom' )
|
281
|
+
|
282
|
+
names.each do |n|
|
283
|
+
Spree::State.create( :name => n, :country_id => uk.id)
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
287
|
+
end
|
288
|
+
end # class
|
289
|
+
|
290
|
+
end # module
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datashift_spree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: datashift
|
@@ -61,7 +61,8 @@ files:
|
|
61
61
|
- lib/loaders/spree/product_loader.rb
|
62
62
|
- lib/thor/spree/products_images.thor
|
63
63
|
- lib/thor/spree/reports.thor
|
64
|
-
- lib/thor/spree/
|
64
|
+
- lib/thor/spree/utils.thor
|
65
|
+
- lib/thor/spree_databank/uk_shipping.thor
|
65
66
|
- lib/datashift_spree_helper.rb
|
66
67
|
- lib/helpers/spree_helper.rb
|
67
68
|
- spec/spree_generator_spec.rb
|