spree_boxnow 1.0.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.
Files changed (37) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +225 -0
  3. data/Rakefile +21 -0
  4. data/app/assets/config/spree_boxnow_manifest.js +3 -0
  5. data/app/assets/images/integration_icons/boxnow-logo.png +0 -0
  6. data/app/controllers/spree/admin/boxnow_controller.rb +126 -0
  7. data/app/controllers/spree/boxnow_controller.rb +24 -0
  8. data/app/javascript/spree_boxnow/application.js +16 -0
  9. data/app/javascript/spree_boxnow/controllers/spree_boxnow_controller.js +34 -0
  10. data/app/lib/spree_boxnow/api_client.rb +108 -0
  11. data/app/models/spree/calculator/shipping/boxnow_rate.rb +123 -0
  12. data/app/models/spree/integrations/boxnow.rb +30 -0
  13. data/app/models/spree/order_decorator.rb +17 -0
  14. data/app/models/spree/shipment_decorator.rb +17 -0
  15. data/app/services/spree_boxnow/cancel_voucher.rb +24 -0
  16. data/app/services/spree_boxnow/create_voucher.rb +79 -0
  17. data/app/services/spree_boxnow/print_vouchers.rb +17 -0
  18. data/app/views/spree/admin/integrations/forms/_boxnow.html.erb +14 -0
  19. data/app/views/spree/admin/orders/_shipment.html.erb +198 -0
  20. data/app/views/spree/admin/shipping_methods/_boxnow_form.html.erb +13 -0
  21. data/app/views/spree/checkout/_delivery_shipping_rate.html.erb +31 -0
  22. data/app/views/spree_boxnow/_head.html.erb +1 -0
  23. data/app/views/spree_boxnow/_locker_picker.html.erb +101 -0
  24. data/app/views/spree_boxnow/_order_dropdown_options.html.erb +38 -0
  25. data/config/importmap.rb +6 -0
  26. data/config/initializers/spree.rb +12 -0
  27. data/config/locales/el.yml +74 -0
  28. data/config/locales/en.yml +74 -0
  29. data/config/routes.rb +10 -0
  30. data/db/migrate/20260210120618_add_boxnow_to_spree_shipping_methods.rb +5 -0
  31. data/lib/generators/spree_boxnow/install/install_generator.rb +20 -0
  32. data/lib/spree_boxnow/configuration.rb +13 -0
  33. data/lib/spree_boxnow/engine.rb +39 -0
  34. data/lib/spree_boxnow/factories.rb +10 -0
  35. data/lib/spree_boxnow/version.rb +7 -0
  36. data/lib/spree_boxnow.rb +11 -0
  37. metadata +192 -0
@@ -0,0 +1,74 @@
1
+ ---
2
+ el:
3
+ activerecord:
4
+ attributes:
5
+ spree/shipping_method:
6
+ boxnow: BoxNow
7
+ spree:
8
+ admin:
9
+ integrations:
10
+ boxnow:
11
+ title: BoxNow
12
+ description: Διασύνδεση με τις υπηρεσίες της BoxNow
13
+ client_id: Client ID
14
+ client_secret: Client Secret
15
+ partner_id: Partner ID
16
+ origin_location_id: ID Αποθήκης / Σημείου Παραλαβής
17
+ api_url: API URL
18
+ contact_name: Όνομα Επαφής Αποστολέα
19
+ contact_phone: Τηλέφωνο Επαφής Αποστολέα
20
+ contact_email: Email Επαφής Αποστολέα
21
+ small_box_price: Τιμή Μικρού Κουτιού
22
+ medium_box_price: Τιμή Μεσαίου Κουτιού
23
+ large_box_price: Τιμή Μεγάλου Κουτιού
24
+ create_voucher: Δημιουργία Voucher (BoxNow)
25
+ create_voucher_prompt: Είστε σίγουροι ότι θέλετε να δημιουργήσετε voucher BoxNow για αυτή την παραγγελία;
26
+ create_voucher_error: Αποτυχία δημιουργίας voucher BoxNow. Παρακαλώ δοκιμάστε ξανά.
27
+ print_voucher: Εκτύπωση Voucher (BoxNow)
28
+ cancel_voucher: Ακύρωση Voucher (BoxNow)
29
+ cancel_voucher_prompt: Είστε σίγουροι ότι θέλετε να ακυρώσετε το voucher BoxNow για αυτή την παραγγελία; Η ενέργεια δεν μπορεί να αναιρεθεί.
30
+ cancel_voucher_error: Αποτυχία ακύρωσης voucher BoxNow. Παρακαλώ δοκιμάστε ξανά.
31
+ voucher_successfully_created: Voucher δημιουργήθηκε επιτυχώς
32
+ voucher_creation_failed: Αποτυχία δημιουργίας Voucher
33
+ voucher_print_failed: Αποτυχία εκτύπωσης Voucher
34
+ voucher_successfully_cancelled: Voucher ακυρώθηκε επιτυχώς
35
+ voucher_cancellation_failed: Αποτυχία ακύρωσης Voucher
36
+ boxnow:
37
+ select_locker: Επιλογή θυρίδας BoxNow
38
+ change_locker: Αλλαγή θυρίδας
39
+ locker_selected: Επιλεγμένη θυρίδα
40
+ no_locker_selected: Δεν έχει επιλεγεί θυρίδα
41
+ api_errors:
42
+ P400: Μη έγκυρα δεδομένα αιτήματος
43
+ P401: Μη έγκυρο ID αποθήκης — ελέγξτε το πεδίο "ID Αποθήκης / Σημείου Παραλαβής" στις ρυθμίσεις της διασύνδεσης
44
+ P402: Μη έγκυρο ID θυρίδας προορισμού — η επιλεγμένη θυρίδα δεν είναι έγκυρη
45
+ P403: Η παράδοση AnyAPM-to-SameAPM δεν επιτρέπεται για αυτόν τον λογαριασμό
46
+ P404: Μη έγκυρο αρχείο CSV
47
+ P405: Μη έγκυρος αριθμός τηλεφώνου — απαιτείται διεθνής μορφή, π.χ. +30 210 1234567
48
+ P406: Μη έγκυρο μέγεθος δέματος — απαιτείται 1 (μικρό), 2 (μεσαίο) ή 3 (μεγάλο)
49
+ P407: Μη έγκυρος κωδικός χώρας — απαιτείται μορφή ISO 3166-1 alpha-2, π.χ. GR
50
+ P408: Μη έγκυρο ποσό αντικαταβολής — πρέπει να είναι μεταξύ 0 και 5000
51
+ P409: Μη έγκυρη αναφορά συνεργάτη delivery
52
+ P410: Ο αριθμός παραγγελίας χρησιμοποιήθηκε ήδη — θα χρησιμοποιηθεί νέος μοναδικός αριθμός στην επόμενη προσπάθεια
53
+ P411: Η αντικαταβολή δεν είναι ενεργοποιημένη για αυτόν τον λογαριασμό — επικοινωνήστε με τη BoxNow
54
+ P412: Οι επιστροφές πελατών δεν επιτρέπονται για αυτόν τον λογαριασμό
55
+ P413: Μη έγκυρη αναφορά τοποθεσίας επιστροφής
56
+ P414: Μη εξουσιοδοτημένη πρόσβαση σε δέμα
57
+ P415: Η παράδοση σε διεύθυνση κατοικίας δεν επιτρέπεται για αυτόν τον λογαριασμό
58
+ P416: Η αντικαταβολή δεν επιτρέπεται για παράδοση σε διεύθυνση κατοικίας
59
+ P420: Το δέμα δεν είναι έτοιμο για ακύρωση — μόνο νέα/μη παραδοθέντα δέματα μπορούν να ακυρωθούν
60
+ P421: Μη έγκυρο βάρος δέματος — πρέπει να είναι μεταξύ 0 και 10^6
61
+ P422: Η διεύθυνση δεν βρέθηκε — δοκιμάστε μόνο με ταχυδρομικό κώδικα και χώρα
62
+ P423: Δεν βρέθηκε κοντινή θυρίδα
63
+ P424: Μη έγκυρη μορφή περιοχής — χρησιμοποιήστε κωδικό γλώσσα-χώρα, π.χ. el-GR
64
+ P430: Το δέμα δεν είναι έτοιμο για επιβεβαίωση AnyAPM
65
+ P440: Ασαφής συνεργάτης — αποστολή κεφαλίδας X-PartnerID
66
+ P441: Μη έγκυρη κεφαλίδα X-PartnerID
67
+ P442: Υπέρβαση ορίου αιτημάτων — μέγιστο 100 αποτελέσματα ανά αίτημα
68
+ shipping_boxnow_rate: Μέθοδος υπολογισμού BoxNow
69
+ base_padding_cm: Επιπλέον περιθώριο συσκευασίας (cm)
70
+ multi_item_factor: Συντελεστής προσαύξησης για πολλαπλά προϊόντα
71
+ small_box_price: Κόστος αποστολής – Μικρό κουτί
72
+ medium_box_price: Κόστος αποστολής – Μεσαίο κουτί
73
+ large_box_price: Κόστος αποστολής – Μεγάλο κουτί
74
+
@@ -0,0 +1,74 @@
1
+ ---
2
+ en:
3
+ activerecord:
4
+ attributes:
5
+ spree/shipping_method:
6
+ boxnow: BoxNow
7
+ spree:
8
+ admin:
9
+ integrations:
10
+ boxnow:
11
+ title: BoxNow
12
+ description: BoxNow is a shipping integration for Greece
13
+ client_id: Client ID
14
+ client_secret: Client Secret
15
+ partner_id: Partner ID
16
+ origin_location_id: Warehouse / Origin Location ID
17
+ api_url: API URL
18
+ contact_name: Origin Contact Name
19
+ contact_phone: Origin Contact Phone (required, e.g. +30 210 1234567)
20
+ contact_email: Origin Contact Email (required)
21
+ small_box_price: Small Box Price
22
+ medium_box_price: Medium Box Price
23
+ large_box_price: Large Box Price
24
+ create_voucher: Create Voucher (BoxNow)
25
+ create_voucher_prompt: Are you sure you want to create a BoxNow voucher for this order?
26
+ create_voucher_error: Failed to create BoxNow voucher. Please try again.
27
+ print_voucher: Print Voucher (BoxNow)
28
+ cancel_voucher: Cancel Voucher (BoxNow)
29
+ cancel_voucher_prompt: Are you sure you want to cancel the BoxNow voucher for this order? This cannot be undone.
30
+ cancel_voucher_error: Failed to cancel BoxNow voucher. Please try again.
31
+ voucher_successfully_created: Voucher successfully created
32
+ voucher_creation_failed: Voucher creation failed
33
+ voucher_print_failed: Voucher printing failed
34
+ voucher_successfully_cancelled: Voucher successfully cancelled
35
+ voucher_cancellation_failed: Voucher cancellation failed
36
+ boxnow:
37
+ select_locker: Select BoxNow Locker
38
+ change_locker: Change Locker
39
+ locker_selected: Selected locker
40
+ no_locker_selected: No locker selected yet
41
+ api_errors:
42
+ P400: Invalid request data
43
+ P401: Invalid origin location ID — check the Warehouse/Origin Location ID in integration settings
44
+ P402: Invalid destination location ID — the selected locker is not valid
45
+ P403: AnyAPM-to-SameAPM delivery not allowed for this account
46
+ P404: Invalid import CSV
47
+ P405: Invalid phone number — must be in international format, e.g. +30 210 1234567
48
+ P406: Invalid parcel size — must be 1 (small), 2 (medium) or 3 (large)
49
+ P407: Invalid country code — must be ISO 3166-1 alpha-2, e.g. GR
50
+ P408: Invalid amountToBeCollected — must be between 0 and 5000
51
+ P409: Invalid delivery partner reference
52
+ P410: Order number already used — a new unique number will be used on retry
53
+ P411: Cash-on-delivery not enabled for this account — contact BoxNow support
54
+ P412: Customer return deliveries not allowed for this account
55
+ P413: Invalid return location reference
56
+ P414: Unauthorized parcel access
57
+ P415: Home address delivery not allowed for this account
58
+ P416: COD payment not allowed for home address delivery
59
+ P420: Parcel not ready for cancellation — only new/undelivered parcels can be cancelled
60
+ P421: Invalid parcel weight — must be between 0 and 10^6
61
+ P422: Address not found — try with postal code and country only
62
+ P423: No nearby locker found
63
+ P424: Invalid region format — use language-country code, e.g. el-GR
64
+ P430: Parcel not ready for AnyAPM confirmation
65
+ P440: Ambiguous partner — send X-PartnerID header
66
+ P441: Invalid X-PartnerID header
67
+ P442: Query limit exceeded — max 100 results per request
68
+ shipping_boxnow_rate: BoxNow Calculation Method
69
+ base_padding_cm: Additional packaging margin (cm)
70
+ multi_item_factor: Surcharge factor for multiple items
71
+ small_box_price: Shipping cost – Small box
72
+ medium_box_price: Shipping cost – Medium box
73
+ large_box_price: Shipping cost – Large box
74
+
data/config/routes.rb ADDED
@@ -0,0 +1,10 @@
1
+ Spree::Core::Engine.add_routes do
2
+ namespace :admin, path: Spree.admin_path do
3
+ post 'boxnow/:order_id/create', to: 'boxnow#create', as: :boxnow_create
4
+ get 'boxnow/:order_id/print', to: 'boxnow#print', as: :boxnow_print
5
+ post 'boxnow/:order_id/select_locker', to: 'boxnow#select_locker', as: :boxnow_select_locker
6
+ post 'boxnow/:order_id/cancel', to: 'boxnow#cancel', as: :boxnow_cancel
7
+ end
8
+
9
+ post 'boxnow/select_locker', to: 'boxnow#select_locker', as: :boxnow_select_locker
10
+ end
@@ -0,0 +1,5 @@
1
+ class AddBoxnowToSpreeShippingMethods < ActiveRecord::Migration[8.1]
2
+ def change
3
+ add_column :spree_shipping_methods, :boxnow, :boolean
4
+ end
5
+ end
@@ -0,0 +1,20 @@
1
+ module SpreeBoxnow
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ class_option :migrate, type: :boolean, default: true
5
+
6
+ def add_migrations
7
+ run 'bundle exec rake railties:install:migrations FROM=spree_boxnow'
8
+ end
9
+
10
+ def run_migrations
11
+ run_migrations = options[:migrate] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]'))
12
+ if run_migrations
13
+ run 'bin/rails db:migrate'
14
+ else
15
+ puts 'Skipping rails db:migrate, don\'t forget to run it!'
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,13 @@
1
+ module SpreeBoxnow
2
+ class Configuration < Spree::Preferences::Configuration
3
+
4
+ # Some example preferences are shown below, for more information visit:
5
+ # https://docs.spreecommerce.org/developer/contributing/creating-an-extension
6
+
7
+ # preference :enabled, :boolean, default: true
8
+ # preference :dark_chocolate, :boolean, default: true
9
+ # preference :color, :string, default: 'Red'
10
+ # preference :favorite_number, :integer
11
+ # preference :supported_locales, :array, default: [:en]
12
+ end
13
+ end
@@ -0,0 +1,39 @@
1
+ module SpreeBoxnow
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+ isolate_namespace Spree
5
+ engine_name 'spree_boxnow'
6
+
7
+ # use rspec for tests
8
+ config.generators do |g|
9
+ g.test_framework :rspec
10
+ end
11
+
12
+ initializer 'spree_boxnow.environment', before: :load_config_initializers do |_app|
13
+ SpreeBoxnow::Config = SpreeBoxnow::Configuration.new
14
+ end
15
+
16
+ initializer 'spree_boxnow.assets' do |app|
17
+ app.config.assets.paths << root.join('app/javascript')
18
+ app.config.assets.precompile += %w[spree_boxnow_manifest]
19
+ end
20
+
21
+ initializer 'spree_boxnow.importmap', after: 'spree.admin.importmap' do |app|
22
+ app.config.spree_admin.importmap.draw(root.join('config/importmap.rb'))
23
+ end
24
+
25
+ initializer 'spree_boxnow.cache_sweeper', before: 'spree.admin.importmap.cache_sweeper' do |app|
26
+ if app.config.importmap.sweep_cache && app.config.reloading_enabled?
27
+ app.config.spree_admin.cache_sweepers << root.join('app/javascript')
28
+ end
29
+ end
30
+
31
+ def self.activate
32
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
33
+ Rails.configuration.cache_classes ? require(c) : load(c)
34
+ end
35
+ end
36
+
37
+ config.to_prepare(&method(:activate).to_proc)
38
+ end
39
+ end
@@ -0,0 +1,10 @@
1
+ FactoryBot.define do
2
+ factory :boxnow_integration, class: Spree::Integrations::Boxnow do
3
+ active { true }
4
+ preferred_client_id { ENV['BOXNOW_CLIENT_ID'] }
5
+ preferred_client_secret { ENV['BOXNOW_CLIENT_SECRET'] }
6
+ preferred_partner_id { ENV['BOXNOW_PARTNER_ID'] }
7
+ preferred_api_url { ENV['BOXNOW_API_URL'] }
8
+ store { Spree::Store.default }
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ module SpreeBoxnow
2
+ VERSION = '1.0.0'.freeze
3
+
4
+ def gem_version
5
+ Gem::Version.new(VERSION)
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ require 'spree_core'
2
+ require 'spree_extension'
3
+ require 'spree_boxnow/engine'
4
+ require 'spree_boxnow/version'
5
+ require 'spree_boxnow/configuration'
6
+
7
+ module SpreeBoxnow
8
+ def self.queue
9
+ 'default'
10
+ end
11
+ end
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_boxnow
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - OlympusOne
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: spree
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: 5.2.0
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: 5.2.0
26
+ - !ruby/object:Gem::Dependency
27
+ name: spree_storefront
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 5.2.0
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 5.2.0
40
+ - !ruby/object:Gem::Dependency
41
+ name: spree_admin
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 5.2.0
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: 5.2.0
54
+ - !ruby/object:Gem::Dependency
55
+ name: spree_extension
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: combine_pdf
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.0'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: faraday
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '2.0'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '2.0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: faraday-retry
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '2.0'
103
+ type: :runtime
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - "~>"
108
+ - !ruby/object:Gem::Version
109
+ version: '2.0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: spree_dev_tools
112
+ requirement: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ description: Adds the ability to manage BoxNow vouchers to Spree stores.
125
+ email: info@olympusone.com
126
+ executables: []
127
+ extensions: []
128
+ extra_rdoc_files: []
129
+ files:
130
+ - README.md
131
+ - Rakefile
132
+ - app/assets/config/spree_boxnow_manifest.js
133
+ - app/assets/images/integration_icons/boxnow-logo.png
134
+ - app/controllers/spree/admin/boxnow_controller.rb
135
+ - app/controllers/spree/boxnow_controller.rb
136
+ - app/javascript/spree_boxnow/application.js
137
+ - app/javascript/spree_boxnow/controllers/spree_boxnow_controller.js
138
+ - app/lib/spree_boxnow/api_client.rb
139
+ - app/models/spree/calculator/shipping/boxnow_rate.rb
140
+ - app/models/spree/integrations/boxnow.rb
141
+ - app/models/spree/order_decorator.rb
142
+ - app/models/spree/shipment_decorator.rb
143
+ - app/services/spree_boxnow/cancel_voucher.rb
144
+ - app/services/spree_boxnow/create_voucher.rb
145
+ - app/services/spree_boxnow/print_vouchers.rb
146
+ - app/views/spree/admin/integrations/forms/_boxnow.html.erb
147
+ - app/views/spree/admin/orders/_shipment.html.erb
148
+ - app/views/spree/admin/shipping_methods/_boxnow_form.html.erb
149
+ - app/views/spree/checkout/_delivery_shipping_rate.html.erb
150
+ - app/views/spree_boxnow/_head.html.erb
151
+ - app/views/spree_boxnow/_locker_picker.html.erb
152
+ - app/views/spree_boxnow/_order_dropdown_options.html.erb
153
+ - config/importmap.rb
154
+ - config/initializers/spree.rb
155
+ - config/locales/el.yml
156
+ - config/locales/en.yml
157
+ - config/routes.rb
158
+ - db/migrate/20260210120618_add_boxnow_to_spree_shipping_methods.rb
159
+ - lib/generators/spree_boxnow/install/install_generator.rb
160
+ - lib/spree_boxnow.rb
161
+ - lib/spree_boxnow/configuration.rb
162
+ - lib/spree_boxnow/engine.rb
163
+ - lib/spree_boxnow/factories.rb
164
+ - lib/spree_boxnow/version.rb
165
+ homepage: https://github.com/olympusone/spree_boxnow
166
+ licenses:
167
+ - MIT
168
+ metadata:
169
+ bug_tracker_uri: https://github.com/olympusone/spree_boxnow/issues
170
+ changelog_uri: https://github.com/olympusone/spree_boxnow/releases/tag/v1.0.0
171
+ documentation_uri: https://github.com/olympusone/spree_boxnow
172
+ homepage_uri: https://github.com/olympusone/spree_boxnow
173
+ source_code_uri: https://github.com/olympusone/spree_boxnow/tree/v1.0.0
174
+ rdoc_options: []
175
+ require_paths:
176
+ - lib
177
+ required_ruby_version: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - ">="
180
+ - !ruby/object:Gem::Version
181
+ version: '3.0'
182
+ required_rubygems_version: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ requirements:
188
+ - none
189
+ rubygems_version: 4.0.3
190
+ specification_version: 4
191
+ summary: Spree Commerce BoxNow Extension
192
+ test_files: []