spree_tradebyte 0.1.12.alpha

Sign up to get free protection for your applications and to get access to all the features.
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: []