spree_tradebyte 0.1.12.alpha

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.
Files changed (66) hide show
  1. checksums.yaml +7 -0
  2. data/.byebug_history +39 -0
  3. data/.gitignore +22 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +24 -0
  6. data/.travis.yml +31 -0
  7. data/Appraisals +29 -0
  8. data/Gemfile +16 -0
  9. data/LICENSE +26 -0
  10. data/README.md +59 -0
  11. data/Rakefile +21 -0
  12. data/app/assets/javascripts/spree/backend/spree_tradebyte.js +2 -0
  13. data/app/assets/javascripts/spree/frontend/spree_tradebyte.js +2 -0
  14. data/app/assets/stylesheets/spree/backend/spree_tradebyte.css +4 -0
  15. data/app/assets/stylesheets/spree/frontend/spree_tradebyte.css +4 -0
  16. data/app/jobs/spree_tradebyte/application_job.rb +7 -0
  17. data/app/jobs/spree_tradebyte/export_products_job.rb +229 -0
  18. data/app/jobs/spree_tradebyte/export_stock_job.rb +39 -0
  19. data/app/jobs/spree_tradebyte/import_orders_job.rb +70 -0
  20. data/app/jobs/spree_tradebyte/order/processor.rb +158 -0
  21. data/app/mailers/application_mailer.rb +5 -0
  22. data/app/mailers/spree_tradebyte/error_notification_mailer.rb +9 -0
  23. data/app/models/spree/order/mail_defuser.rb +15 -0
  24. data/app/models/spree/order/tradebyte_message_builder.rb +133 -0
  25. data/app/models/spree/order_decorator.rb +14 -0
  26. data/app/models/spree/order_updater_decorator.rb +18 -0
  27. data/app/models/spree/payment_method/tradebyte.rb +7 -0
  28. data/app/models/spree/product_decorator.rb +15 -0
  29. data/app/models/spree/reimbursement/mail_defuser.rb +9 -0
  30. data/app/models/spree/reimbursement_decorator.rb +11 -0
  31. data/app/models/spree/shipment_decorator.rb +9 -0
  32. data/app/models/spree/shipment_handler/mail_defuser.rb +7 -0
  33. data/app/models/spree/shipment_handler_decorator.rb +5 -0
  34. data/app/models/spree/variant_decorator.rb +47 -0
  35. data/app/overrides/order_index.rb +13 -0
  36. data/app/overrides/tradebyte_settings.rb +13 -0
  37. data/app/views/layouts/spree_tradebyte/mailer.html.erb +13 -0
  38. data/app/views/layouts/spree_tradebyte/mailer.text.erb +1 -0
  39. data/app/views/spree/admin/orders/_index_tradebyte_state_override.html.erb +7 -0
  40. data/app/views/spree/admin/orders/_index_tradebyte_state_override_head.html.erb +1 -0
  41. data/app/views/spree/admin/products/_tradebyte_fields.html.erb +15 -0
  42. data/app/views/spree/admin/variants/_tradebyte_fields.html.erb +16 -0
  43. data/app/views/spree_tradebyte/error_notification_mailer/exception_mail.html.erb +12 -0
  44. data/bin/rails +8 -0
  45. data/config/locales/en.yml +5 -0
  46. data/config/routes.rb +3 -0
  47. data/db/migrate/20190301122602_add_tradebyte_exported_to_spree_orders.rb +5 -0
  48. data/db/migrate/20190305123644_add_columns_to_spree_orders.rb +8 -0
  49. data/db/migrate/20190307133555_add_tradebyte_id_to_spree_line_items.rb +5 -0
  50. data/db/migrate/20190315162630_add_tradebyte_sku_to_line_items.rb +5 -0
  51. data/db/migrate/20190529120919_add_tradebyte_fields_to_products.rb +7 -0
  52. data/db/migrate/20190529145337_add_tradebyte_settings_to_spree_variants.rb +5 -0
  53. data/db/migrate/20190611114706_create_shipping_methods_for_tradebyte.rb +17 -0
  54. data/db/migrate/20190611114720_create_payment_method_for_tradebyte.rb +5 -0
  55. data/lib/generators/spree_tradebyte/install/install_generator.rb +28 -0
  56. data/lib/generators/spree_tradebyte/templates/initializer.rb +42 -0
  57. data/lib/helpers/setup_configuration.rb +27 -0
  58. data/lib/spree_tradebyte.rb +26 -0
  59. data/lib/spree_tradebyte/engine.rb +25 -0
  60. data/lib/spree_tradebyte/factories.rb +6 -0
  61. data/lib/spree_tradebyte/tb_logger.rb +14 -0
  62. data/lib/spree_tradebyte/tradebyte_ftp.rb +98 -0
  63. data/lib/spree_tradebyte/version.rb +18 -0
  64. data/lib/tasks/variants.rake +13 -0
  65. data/spree_tradebyte.gemspec +48 -0
  66. metadata +427 -0
@@ -0,0 +1,26 @@
1
+ require 'spree_core'
2
+ require 'spree_extension'
3
+ require 'spree_tradebyte/engine'
4
+ require 'spree_tradebyte/version'
5
+ require 'helpers/setup_configuration'
6
+ require 'spree_tradebyte/tradebyte_ftp'
7
+
8
+ module SpreeTradebyte
9
+ extend SetupConfiguration
10
+
11
+ define_setting :ftp_server
12
+ define_setting :ftp_user
13
+ define_setting :ftp_password
14
+ define_setting :ftp_port
15
+ define_setting :active_job_queue_adapter
16
+ define_setting :admin_email
17
+ define_setting :parcel_type_method
18
+ define_setting :product_id_method
19
+ define_setting :brand_name
20
+ define_setting :host
21
+ define_setting :use_base_taxonomy
22
+ define_setting :base_taxonomy
23
+ define_setting :channels
24
+ define_setting :delivery_time
25
+
26
+ end
@@ -0,0 +1,25 @@
1
+ module SpreeTradebyte
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+ isolate_namespace Spree
5
+ engine_name 'spree_tradebyte'
6
+
7
+ # use rspec for tests
8
+ config.generators do |g|
9
+ g.test_framework :rspec
10
+ end
11
+
12
+ def self.activate
13
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
14
+ Rails.configuration.cache_classes ? require(c) : load(c)
15
+ end
16
+
17
+ Rails.configuration.active_job.queue_adapter = SpreeTradebyte.active_job_queue_adapter
18
+ end
19
+
20
+ config.to_prepare(&method(:activate).to_proc)
21
+
22
+ Spree::PermittedAttributes.product_attributes.push(tradebyte_settings: {})
23
+ Spree::PermittedAttributes.variant_attributes.push(tradebyte_settings: {})
24
+ end
25
+ end
@@ -0,0 +1,6 @@
1
+ FactoryBot.define do
2
+ # Define your Spree extensions Factories within this file to enable applications, and other extensions to use and override them.
3
+ #
4
+ # Example adding this to your spec_helper will load these Factories for use:
5
+ # require 'spree_tradebyte/factories'
6
+ end
@@ -0,0 +1,14 @@
1
+ module SpreeTradebyte
2
+ class TBLogger
3
+ def self.debug(message = nil)
4
+ return unless message.present?
5
+
6
+ @logger ||= Logger.new(File.join(Rails.root, 'log', 'tradebyte.log'))
7
+ @logger.debug(message)
8
+ end
9
+
10
+ class << self
11
+ attr_writer :logger
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,98 @@
1
+ require 'net/ftp'
2
+ require 'tempfile'
3
+ require 'spree_tradebyte/tb_logger'
4
+
5
+ module SpreeTradebyte
6
+ class TradebyteFTP
7
+
8
+ DIR_ARCHIVE = '/archiv'
9
+ DIR_OUT = '/out'
10
+ DIR_IN = '/in'
11
+
12
+ attr_reader :ftp
13
+
14
+ def initialize(username, password, server, port = 21)
15
+ @ftp = Net::FTP.new
16
+ @ftp.connect(server, port)
17
+ @ftp.login(username, password)
18
+ end
19
+
20
+ def put_stock_file(file_contents)
21
+ file_name = "TBCAT_stock_#{Time.now.strftime('%Y%m%d_%H%M%S')}.xml"
22
+ put_file(file_contents, file_name)
23
+ end
24
+
25
+ def put_products_file(file_contents)
26
+ file_name = "TBCAT_#{Time.now.strftime('%Y%m%d_%H%M%S')}.xml"
27
+ put_file(file_contents, file_name)
28
+ end
29
+
30
+ def put_message_file(file_contents)
31
+ file_name = "MESSAGES_#{Time.now.strftime('%Y%m%d_%H%M%S')}.xml"
32
+ put_file(file_contents, file_name)
33
+ end
34
+
35
+ def put_articles_file(file_contents)
36
+ file_name = "TBCAT_#{Time.now.strftime('%Y%m%d_%H%M%S')}.xml"
37
+ put_file(file_contents, file_name)
38
+ end
39
+
40
+ def get_order_files
41
+ read_files.select {|f| f[:file_name].include?('ORDER')}
42
+ end
43
+
44
+ def archive_files(file_names)
45
+ file_names.each &method(:archive_file)
46
+ end
47
+
48
+ def close
49
+ @ftp.close
50
+ @ftp = nil
51
+ end
52
+
53
+ private
54
+
55
+ # Put a file in the IN folder for exporting to tradebyte
56
+ # as per tradebyte docs we first upload the file with a .tmp extension.
57
+ # When the upload is complete the original file extension will be restored
58
+ # Params:
59
+ # +file_contents+:: Content string
60
+ # +file_name+:: Name of the file
61
+ def put_file(file_contents, file_name)
62
+ ext = file_name[/(\..{2,4})$/]
63
+ tmp_file = Tempfile.new
64
+ tmp_file.write(file_contents)
65
+ tmp_file.close
66
+
67
+ dest_path = File.join(DIR_IN, file_name.gsub(ext, '.tmp'))
68
+
69
+ @ftp.putbinaryfile(tmp_file.path, dest_path)
70
+ @ftp.rename(dest_path, dest_path.gsub('.tmp', ext))
71
+ tmp_file.unlink
72
+ TBLogger.debug("Saved file #{file_name} in #{DIR_IN}")
73
+ end
74
+
75
+ # Move a file from the IN folder tot he OUT folder
76
+ # per tradebyte docs the file will get its name prepended with _done_timestamp_
77
+ # +file_name+:: the file path of the file being archived
78
+ # +new_file_name+:: if desired you can provide a different file path, leave nil for default functionality
79
+ def archive_file(file_name, new_file_name = nil)
80
+ new_file_name = "_done_#{Time.now.strftime('%Y%m%d_%H%M%S')}_#{file_name.split('/').last}" if new_file_name.nil?
81
+
82
+ @ftp.rename(file_name, File.join(DIR_ARCHIVE, new_file_name))
83
+ TBLogger.debug("Archived file #{file_name} as #{new_file_name}")
84
+ end
85
+
86
+ # List and map files in out directory with .xml extension
87
+ # Files will me mapped to an array of hashes each having a +file_name+ and +file_contents+ node
88
+ def read_files
89
+ @ftp.nlst(File.join(DIR_OUT, '*.xml')).map do |file_name|
90
+ {
91
+ file_name: file_name,
92
+ file_contents: @ftp.getbinaryfile(file_name, nil)
93
+ }
94
+ end
95
+ end
96
+
97
+ end
98
+ end
@@ -0,0 +1,18 @@
1
+ module SpreeTradebyte
2
+ module_function
3
+
4
+ # Returns the version of the currently loaded SpreeTradebyte as a
5
+ # <tt>Gem::Version</tt>.
6
+ def version
7
+ Gem::Version.new VERSION::STRING
8
+ end
9
+
10
+ module VERSION
11
+ MAJOR = 0
12
+ MINOR = 1
13
+ TINY = 12
14
+ PRE = 'alpha'.freeze
15
+
16
+ STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ require 'parallel'
2
+
3
+ namespace :variants do
4
+ desc "Copy variant price to tradebyte price columns"
5
+ task fill_tb_settings: :environment do
6
+ Parallel.each(Spree::Variant.includes(:prices).where(tradebyte_settings: nil)) do |v|
7
+ Spree::Variant.connection.reconnect!
8
+ v.update_tradebyte_prices
9
+ end
10
+ Spree::Variant.connection.reconnect!
11
+ end
12
+
13
+ end
@@ -0,0 +1,48 @@
1
+ # encoding: UTF-8
2
+ lib = File.expand_path('../lib/', __FILE__)
3
+ $LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
4
+
5
+ require 'spree_tradebyte/version'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.platform = Gem::Platform::RUBY
9
+ s.name = 'spree_tradebyte'
10
+ s.version = SpreeTradebyte.version
11
+ s.summary = 'Integrates spree with tradebyte'
12
+ s.description = 'This integration connects your spree shop to the tradebyte platform'
13
+ s.required_ruby_version = '>= 2.2.7'
14
+
15
+ s.author = 'Fabian Oudhaarlem'
16
+ s.email = 'fabian@oldharlem.nl'
17
+ # s.homepage = 'https://github.com/your-github-handle/spree_tradebyte'
18
+ s.license = 'BSD-3-Clause'
19
+
20
+ s.files = `git ls-files`.split("\n").reject { |f| f.match(/^spec/) && !f.match(/^spec\/fixtures/) }
21
+ s.require_path = 'lib'
22
+ s.requirements << 'none'
23
+
24
+ spree_version = '>= 3.1.0', '< 4.0'
25
+ s.add_dependency 'spree_core', spree_version
26
+ s.add_dependency 'spree_backend', spree_version
27
+ s.add_dependency 'spree_extension'
28
+ s.add_dependency 'nokogiri', '~> 1.8'
29
+ s.add_dependency 'storext', '~> 2.2.2'
30
+ s.add_dependency 'parallel', '~> 1.17.0'
31
+
32
+ s.add_development_dependency 'appraisal'
33
+ s.add_development_dependency 'capybara'
34
+ s.add_development_dependency 'capybara-screenshot'
35
+ s.add_development_dependency 'coffee-rails'
36
+ s.add_development_dependency 'database_cleaner'
37
+ s.add_development_dependency 'factory_bot'
38
+ s.add_development_dependency 'ffaker'
39
+ s.add_development_dependency 'mysql2'
40
+ s.add_development_dependency 'rspec-rails'
41
+ s.add_development_dependency 'fake_ftp'
42
+ s.add_development_dependency 'sass-rails'
43
+ s.add_development_dependency 'selenium-webdriver'
44
+ s.add_development_dependency 'sqlite3', '~> 1.3.6'
45
+ s.add_development_dependency 'pg', '~> 0.18'
46
+ s.add_development_dependency 'simplecov'
47
+ s.add_development_dependency 'byebug'
48
+ end
metadata ADDED
@@ -0,0 +1,427 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_tradebyte
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.12.alpha
5
+ platform: ruby
6
+ authors:
7
+ - Fabian Oudhaarlem
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-06-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: spree_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 3.1.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '4.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 3.1.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '4.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: spree_backend
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 3.1.0
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '4.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 3.1.0
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '4.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: spree_extension
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ - !ruby/object:Gem::Dependency
68
+ name: nokogiri
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '1.8'
74
+ type: :runtime
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: '1.8'
81
+ - !ruby/object:Gem::Dependency
82
+ name: storext
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: 2.2.2
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: 2.2.2
95
+ - !ruby/object:Gem::Dependency
96
+ name: parallel
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: 1.17.0
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: 1.17.0
109
+ - !ruby/object:Gem::Dependency
110
+ name: appraisal
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: capybara
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: capybara-screenshot
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: coffee-rails
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: database_cleaner
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: factory_bot
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: ffaker
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: mysql2
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: rspec-rails
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: fake_ftp
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - ">="
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
242
+ type: :development
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - ">="
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ - !ruby/object:Gem::Dependency
250
+ name: sass-rails
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
+ - !ruby/object:Gem::Dependency
264
+ name: selenium-webdriver
265
+ requirement: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ type: :development
271
+ prerelease: false
272
+ version_requirements: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
277
+ - !ruby/object:Gem::Dependency
278
+ name: sqlite3
279
+ requirement: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - "~>"
282
+ - !ruby/object:Gem::Version
283
+ version: 1.3.6
284
+ type: :development
285
+ prerelease: false
286
+ version_requirements: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - "~>"
289
+ - !ruby/object:Gem::Version
290
+ version: 1.3.6
291
+ - !ruby/object:Gem::Dependency
292
+ name: pg
293
+ requirement: !ruby/object:Gem::Requirement
294
+ requirements:
295
+ - - "~>"
296
+ - !ruby/object:Gem::Version
297
+ version: '0.18'
298
+ type: :development
299
+ prerelease: false
300
+ version_requirements: !ruby/object:Gem::Requirement
301
+ requirements:
302
+ - - "~>"
303
+ - !ruby/object:Gem::Version
304
+ version: '0.18'
305
+ - !ruby/object:Gem::Dependency
306
+ name: simplecov
307
+ requirement: !ruby/object:Gem::Requirement
308
+ requirements:
309
+ - - ">="
310
+ - !ruby/object:Gem::Version
311
+ version: '0'
312
+ type: :development
313
+ prerelease: false
314
+ version_requirements: !ruby/object:Gem::Requirement
315
+ requirements:
316
+ - - ">="
317
+ - !ruby/object:Gem::Version
318
+ version: '0'
319
+ - !ruby/object:Gem::Dependency
320
+ name: byebug
321
+ requirement: !ruby/object:Gem::Requirement
322
+ requirements:
323
+ - - ">="
324
+ - !ruby/object:Gem::Version
325
+ version: '0'
326
+ type: :development
327
+ prerelease: false
328
+ version_requirements: !ruby/object:Gem::Requirement
329
+ requirements:
330
+ - - ">="
331
+ - !ruby/object:Gem::Version
332
+ version: '0'
333
+ description: This integration connects your spree shop to the tradebyte platform
334
+ email: fabian@oldharlem.nl
335
+ executables: []
336
+ extensions: []
337
+ extra_rdoc_files: []
338
+ files:
339
+ - ".byebug_history"
340
+ - ".gitignore"
341
+ - ".rspec"
342
+ - ".rubocop.yml"
343
+ - ".travis.yml"
344
+ - Appraisals
345
+ - Gemfile
346
+ - LICENSE
347
+ - README.md
348
+ - Rakefile
349
+ - app/assets/javascripts/spree/backend/spree_tradebyte.js
350
+ - app/assets/javascripts/spree/frontend/spree_tradebyte.js
351
+ - app/assets/stylesheets/spree/backend/spree_tradebyte.css
352
+ - app/assets/stylesheets/spree/frontend/spree_tradebyte.css
353
+ - app/jobs/spree_tradebyte/application_job.rb
354
+ - app/jobs/spree_tradebyte/export_products_job.rb
355
+ - app/jobs/spree_tradebyte/export_stock_job.rb
356
+ - app/jobs/spree_tradebyte/import_orders_job.rb
357
+ - app/jobs/spree_tradebyte/order/processor.rb
358
+ - app/mailers/application_mailer.rb
359
+ - app/mailers/spree_tradebyte/error_notification_mailer.rb
360
+ - app/models/spree/order/mail_defuser.rb
361
+ - app/models/spree/order/tradebyte_message_builder.rb
362
+ - app/models/spree/order_decorator.rb
363
+ - app/models/spree/order_updater_decorator.rb
364
+ - app/models/spree/payment_method/tradebyte.rb
365
+ - app/models/spree/product_decorator.rb
366
+ - app/models/spree/reimbursement/mail_defuser.rb
367
+ - app/models/spree/reimbursement_decorator.rb
368
+ - app/models/spree/shipment_decorator.rb
369
+ - app/models/spree/shipment_handler/mail_defuser.rb
370
+ - app/models/spree/shipment_handler_decorator.rb
371
+ - app/models/spree/variant_decorator.rb
372
+ - app/overrides/order_index.rb
373
+ - app/overrides/tradebyte_settings.rb
374
+ - app/views/layouts/spree_tradebyte/mailer.html.erb
375
+ - app/views/layouts/spree_tradebyte/mailer.text.erb
376
+ - app/views/spree/admin/orders/_index_tradebyte_state_override.html.erb
377
+ - app/views/spree/admin/orders/_index_tradebyte_state_override_head.html.erb
378
+ - app/views/spree/admin/products/_tradebyte_fields.html.erb
379
+ - app/views/spree/admin/variants/_tradebyte_fields.html.erb
380
+ - app/views/spree_tradebyte/error_notification_mailer/exception_mail.html.erb
381
+ - bin/rails
382
+ - config/locales/en.yml
383
+ - config/routes.rb
384
+ - db/migrate/20190301122602_add_tradebyte_exported_to_spree_orders.rb
385
+ - db/migrate/20190305123644_add_columns_to_spree_orders.rb
386
+ - db/migrate/20190307133555_add_tradebyte_id_to_spree_line_items.rb
387
+ - db/migrate/20190315162630_add_tradebyte_sku_to_line_items.rb
388
+ - db/migrate/20190529120919_add_tradebyte_fields_to_products.rb
389
+ - db/migrate/20190529145337_add_tradebyte_settings_to_spree_variants.rb
390
+ - db/migrate/20190611114706_create_shipping_methods_for_tradebyte.rb
391
+ - db/migrate/20190611114720_create_payment_method_for_tradebyte.rb
392
+ - lib/generators/spree_tradebyte/install/install_generator.rb
393
+ - lib/generators/spree_tradebyte/templates/initializer.rb
394
+ - lib/helpers/setup_configuration.rb
395
+ - lib/spree_tradebyte.rb
396
+ - lib/spree_tradebyte/engine.rb
397
+ - lib/spree_tradebyte/factories.rb
398
+ - lib/spree_tradebyte/tb_logger.rb
399
+ - lib/spree_tradebyte/tradebyte_ftp.rb
400
+ - lib/spree_tradebyte/version.rb
401
+ - lib/tasks/variants.rake
402
+ - spree_tradebyte.gemspec
403
+ homepage:
404
+ licenses:
405
+ - BSD-3-Clause
406
+ metadata: {}
407
+ post_install_message:
408
+ rdoc_options: []
409
+ require_paths:
410
+ - lib
411
+ required_ruby_version: !ruby/object:Gem::Requirement
412
+ requirements:
413
+ - - ">="
414
+ - !ruby/object:Gem::Version
415
+ version: 2.2.7
416
+ required_rubygems_version: !ruby/object:Gem::Requirement
417
+ requirements:
418
+ - - ">"
419
+ - !ruby/object:Gem::Version
420
+ version: 1.3.1
421
+ requirements:
422
+ - none
423
+ rubygems_version: 3.0.8
424
+ signing_key:
425
+ specification_version: 4
426
+ summary: Integrates spree with tradebyte
427
+ test_files: []