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.
- checksums.yaml +7 -0
- data/README.md +225 -0
- data/Rakefile +21 -0
- data/app/assets/config/spree_boxnow_manifest.js +3 -0
- data/app/assets/images/integration_icons/boxnow-logo.png +0 -0
- data/app/controllers/spree/admin/boxnow_controller.rb +126 -0
- data/app/controllers/spree/boxnow_controller.rb +24 -0
- data/app/javascript/spree_boxnow/application.js +16 -0
- data/app/javascript/spree_boxnow/controllers/spree_boxnow_controller.js +34 -0
- data/app/lib/spree_boxnow/api_client.rb +108 -0
- data/app/models/spree/calculator/shipping/boxnow_rate.rb +123 -0
- data/app/models/spree/integrations/boxnow.rb +30 -0
- data/app/models/spree/order_decorator.rb +17 -0
- data/app/models/spree/shipment_decorator.rb +17 -0
- data/app/services/spree_boxnow/cancel_voucher.rb +24 -0
- data/app/services/spree_boxnow/create_voucher.rb +79 -0
- data/app/services/spree_boxnow/print_vouchers.rb +17 -0
- data/app/views/spree/admin/integrations/forms/_boxnow.html.erb +14 -0
- data/app/views/spree/admin/orders/_shipment.html.erb +198 -0
- data/app/views/spree/admin/shipping_methods/_boxnow_form.html.erb +13 -0
- data/app/views/spree/checkout/_delivery_shipping_rate.html.erb +31 -0
- data/app/views/spree_boxnow/_head.html.erb +1 -0
- data/app/views/spree_boxnow/_locker_picker.html.erb +101 -0
- data/app/views/spree_boxnow/_order_dropdown_options.html.erb +38 -0
- data/config/importmap.rb +6 -0
- data/config/initializers/spree.rb +12 -0
- data/config/locales/el.yml +74 -0
- data/config/locales/en.yml +74 -0
- data/config/routes.rb +10 -0
- data/db/migrate/20260210120618_add_boxnow_to_spree_shipping_methods.rb +5 -0
- data/lib/generators/spree_boxnow/install/install_generator.rb +20 -0
- data/lib/spree_boxnow/configuration.rb +13 -0
- data/lib/spree_boxnow/engine.rb +39 -0
- data/lib/spree_boxnow/factories.rb +10 -0
- data/lib/spree_boxnow/version.rb +7 -0
- data/lib/spree_boxnow.rb +11 -0
- 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,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
|
data/lib/spree_boxnow.rb
ADDED
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: []
|