solidus_zip_zones 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6e4438dac549ffd8840cdf090930737eedcecbb132ecc1d5765088cc4cd7308b
4
+ data.tar.gz: c5e4e53c3f3f473f73bc797714ffbe2f3d057eb416c53105bf1fa76bfbe5f654
5
+ SHA512:
6
+ metadata.gz: 5cb5b60877b8d0ab37cdb9ce9d81ccfd3265228381309b2a9ae1d4458048b1522bf87124bd40ecfc0f58e60f1f6b75d98b5b6efc22d4958f200e54f59c531306
7
+ data.tar.gz: c8afd353fb71bc3f5f860e94fb7a0b58428a4580982fd07a7c4c7cfa267ea7c11b41bebc0a4107985c9e9082f8b9ae1766a63f47b350746a8f5a643bf9d84932
data/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ Copyright (c) 2017 [name of plugin creator]
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ * Neither the name Spree nor the names of its contributors may be used to
13
+ endorse or promote products derived from this software without specific
14
+ prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,53 @@
1
+ [![Build Status](https://travis-ci.org/nebulab/solidus_zip_zones.svg?branch=master)](https://travis-ci.org/nebulab/solidus_zip_zones)
2
+
3
+ SolidusZipZones
4
+ ===============
5
+
6
+ Extract the Spree::Zone by zip code.
7
+
8
+ Installation
9
+ ------------
10
+
11
+ Add solidus_zip_zones to your Gemfile:
12
+
13
+ ```ruby
14
+ gem 'solidus_zip_zones'
15
+ ```
16
+
17
+ Bundle your dependencies and run the installation generator:
18
+
19
+ ```shell
20
+ bundle
21
+ bundle exec rails g solidus_zip_zones:install
22
+ ```
23
+
24
+ Testing
25
+ -------
26
+
27
+ First bundle your dependencies, then run `rake`. `rake` will default to building the dummy app if it does not exist, then it will run specs, and [Rubocop](https://github.com/bbatsov/rubocop) static code analysis. The dummy app can be regenerated by using `rake test_app`.
28
+
29
+ ```shell
30
+ bundle
31
+ bundle exec rake
32
+ ```
33
+
34
+ When testing your applications integration with this extension you may use it's factories.
35
+ Simply add this require statement to your spec_helper:
36
+
37
+ ```ruby
38
+ require 'solidus_zip_zones/factories'
39
+ ```
40
+
41
+ ## License
42
+
43
+ SolidusZipZones is copyright © 2019 [Nebulab](http://nebulab.it/). It is free software, and may be redistributed under the terms specified in the [license].
44
+
45
+ ## About
46
+
47
+ ![Nebulab](http://nebulab.it/assets/images/public/logo.svg)
48
+
49
+ SolidusZipZones is funded and maintained by the [Nebulab](http://nebulab.it/) team.
50
+
51
+ We firmly believe in the power of open-source. [Contact us](http://nebulab.it/contact-us/) if you like our work and you need help with your project design or development.
52
+
53
+ [license]: MIT-LICENSE
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+
5
+ require 'solidus_dev_support/rake_tasks'
6
+ SolidusDevSupport::RakeTasks.install
7
+
8
+ task default: 'extension:specs'
@@ -0,0 +1,3 @@
1
+ // Placeholder manifest file.
2
+ // the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/backend/all.js'
3
+ //= require 'spree/backend/views/zones/form_zip_based'
@@ -0,0 +1,47 @@
1
+ $(function(){
2
+ if($('.js-zones-form').length){
3
+ Spree.Views.Zones.FormZipBased = Backbone.View.extend({
4
+ events: {
5
+ 'click [name="zone[kind]"]': 'render'
6
+ },
7
+
8
+ render: function() {
9
+ var kind = this.$('[name="zone[kind]"]:checked').val() || 'state';
10
+
11
+ $('#zip_members').toggleClass('hidden', kind !== 'zip');
12
+ $('#zip_members :input').prop('disabled', kind !== 'zip');
13
+ }
14
+ })
15
+
16
+ var view = new Spree.Views.Zones.FormZipBased({
17
+ el: $('.js-zones-form')
18
+ });
19
+ view.render()
20
+ } else {
21
+ $('#country_based, #state_based').click(function(){
22
+ $('#zip_members #zone_zipcodes').prop('disabled', true)
23
+ $('#zip_members').hide()
24
+ })
25
+
26
+ $('#zip_based').click(function(){
27
+ $('#zip_members #zone_zipcodes').prop('disabled', false)
28
+ $('#zip_members').show()
29
+
30
+ $('#country_members :input, #state_members :input').each(function(){
31
+ $(this).prop('disabled', true)
32
+ })
33
+ $('#country_members, #state_members').hide()
34
+ })
35
+
36
+ if($('#zone_zipcodes').val() != ''){
37
+ $('#zip_based').click()
38
+ } else {
39
+ $('#zip_members').hide()
40
+ }
41
+ }
42
+
43
+ $(".select2-taggable").select2({
44
+ tags: true,
45
+ tokenSeparators: [',', ' ']
46
+ })
47
+ })
@@ -0,0 +1,2 @@
1
+ // Placeholder manifest file.
2
+ // the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/frontend/all.js'
@@ -0,0 +1,4 @@
1
+ /*
2
+ Placeholder manifest file.
3
+ the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/backend/all.css'
4
+ */
@@ -0,0 +1,4 @@
1
+ /*
2
+ Placeholder manifest file.
3
+ the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/frontend/all.css'
4
+ */
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusZipZones
4
+ module TaxLocationDecorator
5
+ def self.prepended(base)
6
+ base.send(:attr_reader, :zipcode)
7
+ end
8
+
9
+ def initialize(country: nil, state: nil, zipcode: nil)
10
+ super(country: country, state: state)
11
+
12
+ @zipcode = zipcode
13
+ end
14
+
15
+ def ==(other)
16
+ super && zipcode == other.zipcode
17
+ end
18
+
19
+ def empty?
20
+ super && zipcode.blank?
21
+ end
22
+
23
+ Spree::Tax::TaxLocation.prepend self
24
+ end
25
+ end
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusZipZones
4
+ module ZoneDecorator
5
+ def self.prepended(base)
6
+ base.scope :with_member_ids, ->(state_ids, country_ids, zipcode) do
7
+ if state_ids.blank? && country_ids.blank? && zipcode.blank?
8
+ none
9
+ else
10
+ if country_ids == 233
11
+ zipcode = zipcode.split('-').first
12
+ end
13
+ spree_zone_members_table = Spree::ZoneMember.arel_table
14
+ matching_state =
15
+ spree_zone_members_table[:zoneable_type].eq("Spree::State").
16
+ and(spree_zone_members_table[:zoneable_id].in(state_ids))
17
+ matching_country =
18
+ spree_zone_members_table[:zoneable_type].eq("Spree::Country").
19
+ and(spree_zone_members_table[:zoneable_id].in(country_ids))
20
+ spree_zones_table = Spree::Zone.arel_table
21
+ matching_zipcode = spree_zones_table[:zipcodes].matches("%#{zipcode}%")
22
+ left_joins(:zone_members).where(matching_zipcode.or(matching_state.or(matching_country))).distinct
23
+ end
24
+ end
25
+
26
+ base.scope :for_address, ->(address) do
27
+ if address
28
+ with_member_ids(address.state_id, address.country_id, address.zipcode)
29
+ else
30
+ none
31
+ end
32
+ end
33
+ end
34
+
35
+ def kind
36
+ return 'zip' if zipcodes.present?
37
+
38
+ super
39
+ end
40
+
41
+ Spree::Zone.prepend self
42
+ end
43
+ end
@@ -0,0 +1,6 @@
1
+ <!-- insert_bottom '[data-hook=type] ul' -->
2
+
3
+ <li>
4
+ <%= zone_form.radio_button('kind', 'zip', { id: 'zip_based' }) %>
5
+ <%= label_tag :zip_based, t('spree.zip_based') %>
6
+ </li>
@@ -0,0 +1,3 @@
1
+ <!-- insert_after "erb[loud]:contains('country_members')" -->
2
+
3
+ <%= render partial: 'spree/admin/zones/zip_members', locals: { zone_form: zone_form } %>
@@ -0,0 +1,11 @@
1
+ <div id="zip_members" data-hook="member">
2
+ <fieldset class="no-border-bottom">
3
+ <legend align="center"><%= t('spree.zipcode') %></legend>
4
+
5
+ <%= zone_form.field_container :zipcodes do %>
6
+ <%= zone_form.label :zipcodes, t('spree.zipcode') %><br>
7
+ <%= zone_form.hidden_field :zipcodes, value: '', id: 'hidden_zone_zipcodes' %>
8
+ <%= zone_form.text_field :zipcodes, class: "select2-taggable fullwidth" %>
9
+ <% end %>
10
+ </fieldset>
11
+ </div>
@@ -0,0 +1,7 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ hello: Hello world
6
+ spree:
7
+ zip_based: Zip Based
data/config/routes.rb ADDED
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ Spree::Core::Engine.routes.draw do
4
+ # Add your extension routes here
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddZipcodesToSpreeZone < SolidusSupport::Migration[4.2]
2
+ def change
3
+ add_column :spree_zones, :zipcodes, :text
4
+ end
5
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusZipZones
4
+ module Generators
5
+ class InstallGenerator < Rails::Generators::Base
6
+ class_option :auto_run_migrations, type: :boolean, default: false
7
+
8
+ def add_javascripts
9
+ append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/solidus_zip_zones\n"
10
+ append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/solidus_zip_zones\n"
11
+ end
12
+
13
+ def add_stylesheets
14
+ inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css',
15
+ " *= require spree/frontend/solidus_zip_zones\n", before: %r{\*/}, verbose: true
16
+ inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css',
17
+ " *= require spree/backend/solidus_zip_zones\n", before: %r{\*/}, verbose: true
18
+ end
19
+
20
+ def add_migrations
21
+ run 'bundle exec rake railties:install:migrations FROM=solidus_zip_zones'
22
+ end
23
+
24
+ def run_migrations
25
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]')) # rubocop:disable Layout/LineLength
26
+ if run_migrations
27
+ run 'bundle exec rake db:migrate'
28
+ else
29
+ Rails.logger.debug 'Skipping rake db:migrate, don\'t forget to run it!'
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusZipZones
4
+ class Engine < Rails::Engine
5
+ require 'spree/core'
6
+ isolate_namespace Spree
7
+ engine_name 'solidus_zip_zones'
8
+
9
+ # use rspec for tests
10
+ config.generators do |g|
11
+ g.test_framework :rspec
12
+ end
13
+
14
+ def self.activate
15
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')).sort.each do |c|
16
+ Rails.configuration.cache_classes ? require(c) : load(c)
17
+ end
18
+ end
19
+
20
+ config.to_prepare(&method(:activate).to_proc)
21
+ end
22
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ FactoryBot.define do
4
+ # Define your Spree extensions Factories within this file to enable applications, and other extensions to use and
5
+ # override them.
6
+ #
7
+ # Example adding this to your spec_helper will load these Factories for use:
8
+ # require 'solidus_zip_zones/factories'
9
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module SolidusZipZones
4
+ VERSION = '0.1.0'
5
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'solidus_core'
4
+ require 'solidus_support'
5
+ require 'solidus_zip_zones/engine'
metadata ADDED
@@ -0,0 +1,314 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: solidus_zip_zones
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Daniele Palombo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-05-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: solidus_backend
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '5.0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '1.0'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '5.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: solidus_core
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '1.0'
54
+ - - "<"
55
+ - !ruby/object:Gem::Version
56
+ version: '5.0'
57
+ type: :runtime
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '1.0'
64
+ - - "<"
65
+ - !ruby/object:Gem::Version
66
+ version: '5.0'
67
+ - !ruby/object:Gem::Dependency
68
+ name: solidus_support
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '0.5'
74
+ type: :runtime
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '0.5'
81
+ - !ruby/object:Gem::Dependency
82
+ name: deface
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '1.0'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: capybara
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: coffee-rails
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: database_cleaner
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: factory_bot
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: ffaker
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ - !ruby/object:Gem::Dependency
166
+ name: poltergeist
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ - !ruby/object:Gem::Dependency
180
+ name: pry
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ - !ruby/object:Gem::Dependency
194
+ name: rspec-rails
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: sass-rails
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ - !ruby/object:Gem::Dependency
222
+ name: simplecov
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ - !ruby/object:Gem::Dependency
236
+ name: solidus_dev_support
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - "~>"
240
+ - !ruby/object:Gem::Version
241
+ version: '2.5'
242
+ type: :development
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - "~>"
247
+ - !ruby/object:Gem::Version
248
+ version: '2.5'
249
+ - !ruby/object:Gem::Dependency
250
+ name: sqlite3
251
+ requirement: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ version: '0'
256
+ type: :development
257
+ prerelease: false
258
+ version_requirements: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ description: Create zone zip code based
264
+ email: danielepalombo@nebulab.it
265
+ executables: []
266
+ extensions: []
267
+ extra_rdoc_files: []
268
+ files:
269
+ - LICENSE
270
+ - README.md
271
+ - Rakefile
272
+ - app/assets/javascripts/spree/backend/solidus_zip_zones.js
273
+ - app/assets/javascripts/spree/backend/views/zones/form_zip_based.js
274
+ - app/assets/javascripts/spree/frontend/solidus_zip_zones.js
275
+ - app/assets/stylesheets/spree/backend/solidus_zip_zones.css
276
+ - app/assets/stylesheets/spree/frontend/solidus_zip_zones.css
277
+ - app/models/solidus_zip_zones/tax_location_decorator.rb
278
+ - app/models/solidus_zip_zones/zone_decorator.rb
279
+ - app/overrides/spree/admin/zones/_form/add_zip_based_radio_button.html.erb.deface
280
+ - app/overrides/spree/admin/zones/_form/add_zip_members.html.erb.deface
281
+ - app/views/spree/admin/zones/_zip_members.html.erb
282
+ - config/locales/en.yml
283
+ - config/routes.rb
284
+ - db/migrate/20171206101152_add_zipcodes_to_spree_zone.rb
285
+ - lib/generators/solidus_zip_zones/install/install_generator.rb
286
+ - lib/solidus_zip_zones.rb
287
+ - lib/solidus_zip_zones/engine.rb
288
+ - lib/solidus_zip_zones/factories.rb
289
+ - lib/solidus_zip_zones/version.rb
290
+ homepage: http://github.com/solidusio-contrib/solidus_zip_zones
291
+ licenses:
292
+ - BSD-3-Clause
293
+ metadata:
294
+ changelog_uri: https://github.com/solidusio-contrib/solidus_zip_zones/releases
295
+ post_install_message:
296
+ rdoc_options: []
297
+ require_paths:
298
+ - lib
299
+ required_ruby_version: !ruby/object:Gem::Requirement
300
+ requirements:
301
+ - - ">="
302
+ - !ruby/object:Gem::Version
303
+ version: '2.5'
304
+ required_rubygems_version: !ruby/object:Gem::Requirement
305
+ requirements:
306
+ - - ">="
307
+ - !ruby/object:Gem::Version
308
+ version: '0'
309
+ requirements: []
310
+ rubygems_version: 3.3.7
311
+ signing_key:
312
+ specification_version: 4
313
+ summary: Solidus zip zones
314
+ test_files: []