spree_cm_commissioner 1.8.3 → 1.8.5
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 +4 -4
- data/Gemfile.lock +1 -1
- data/app/controllers/spree/admin/base_controller_decorator.rb +8 -2
- data/app/controllers/spree/api/v2/tenant/cart_controller.rb +15 -0
- data/app/controllers/spree/api/v2/tenant/cart_payment_method_groups_controller.rb +33 -0
- data/app/controllers/spree/api/v2/tenant/checkout_controller.rb +14 -0
- data/app/models/spree_cm_commissioner/ability_decorator.rb +1 -1
- data/app/models/spree_cm_commissioner/order_decorator.rb +1 -1
- data/app/models/spree_cm_commissioner/place.rb +2 -0
- data/app/models/spree_cm_commissioner/taxon_decorator.rb +1 -0
- data/app/models/spree_cm_commissioner/tenant.rb +5 -1
- data/app/models/spree_cm_commissioner/trip_stop.rb +3 -3
- data/app/models/spree_cm_commissioner/variant_decorator.rb +1 -0
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +3 -3
- data/app/models/spree_cm_commissioner/vendor_stop.rb +1 -1
- data/app/overrides/spree/admin/products/edit/clear_cache_button.html.erb.deface +3 -0
- data/app/overrides/spree/admin/taxons/edit/clear_cache_button.html.erb.deface +7 -0
- data/app/queries/spree_cm_commissioner/organizer_profile_event_query.rb +1 -1
- data/app/serializers/spree/v2/storefront/product_serializer_decorator.rb +3 -1
- data/app/serializers/spree/v2/storefront/taxon_serializer_decorator.rb +2 -0
- data/app/serializers/spree/v2/tenant/payment_method_group_serializer.rb +11 -0
- data/app/serializers/spree/v2/tenant/payment_method_serializer.rb +13 -0
- data/app/views/spree/admin/user_events/_users.html.erb +11 -6
- data/config/routes.rb +3 -0
- data/lib/spree_cm_commissioner/version.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53d7b7682c7178ee43a82fa1bed180bff277284eb4cc11790f7b9286d4aa2c98
|
4
|
+
data.tar.gz: e352ffca56db709ce091fd5d1900b0893ef86fc55a0c0254da1443cad454a49f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab207fab5a440fb505cb157f7d29070c3d0f53a89117854bcdfceb0141e9cea8cc497d73d80afae1b6921c79b566744b52e86e4783c747527fa36bfb19505e5a
|
7
|
+
data.tar.gz: 790e0b20a95d9a52c525b1e0528f6421479742d2713fd87fc325e3b69c09ab8c6804db3969fee36256d13e728ace25277a2a2f3e96aad496ff3e02fa0695d2ac
|
data/Gemfile.lock
CHANGED
@@ -32,7 +32,7 @@ module Spree
|
|
32
32
|
end
|
33
33
|
|
34
34
|
# POST
|
35
|
-
def invalidate_api_caches
|
35
|
+
def invalidate_api_caches # rubocop:disable Metrics/CyclomaticComplexity
|
36
36
|
if params[:model].present?
|
37
37
|
model = case params[:model]
|
38
38
|
when 'SpreeCmCommissioner::HomepageSection'
|
@@ -41,6 +41,10 @@ module Spree
|
|
41
41
|
SpreeCmCommissioner::HomepageBackground
|
42
42
|
when 'Spree::Menu'
|
43
43
|
Spree::Menu
|
44
|
+
when 'Spree::Taxon'
|
45
|
+
Spree::Taxon
|
46
|
+
when 'Spree::Product'
|
47
|
+
Spree::Product
|
44
48
|
else
|
45
49
|
flash[:error] = 'Invalid model provided' # rubocop:disable Rails/I18nLocaleTexts
|
46
50
|
redirect_back fallback_location: admin_root_path and return
|
@@ -50,7 +54,9 @@ module Spree
|
|
50
54
|
api_patterns_map = {
|
51
55
|
SpreeCmCommissioner::HomepageSection => '/api/v2/storefront/homepage/*',
|
52
56
|
SpreeCmCommissioner::HomepageBackground => '/api/v2/storefront/homepage/*',
|
53
|
-
Spree::Menu => '/api/v2/storefront/menus*'
|
57
|
+
Spree::Menu => '/api/v2/storefront/menus*',
|
58
|
+
Spree::Taxon => '/api/v2/storefront/taxons*',
|
59
|
+
Spree::Product => '/api/v2/storefront/products*'
|
54
60
|
}
|
55
61
|
api_patterns = api_patterns_map[model]
|
56
62
|
|
@@ -53,6 +53,17 @@ module Spree
|
|
53
53
|
render_order(result)
|
54
54
|
end
|
55
55
|
|
56
|
+
def remove_line_item
|
57
|
+
spree_authorize! :update, spree_current_order, order_token
|
58
|
+
|
59
|
+
remove_line_item_service.call(
|
60
|
+
order: spree_current_order,
|
61
|
+
line_item: line_item
|
62
|
+
)
|
63
|
+
|
64
|
+
render_serialized_payload { serialized_current_order }
|
65
|
+
end
|
66
|
+
|
56
67
|
def destroy
|
57
68
|
spree_authorize! :update, spree_current_order, order_token
|
58
69
|
|
@@ -145,6 +156,10 @@ module Spree
|
|
145
156
|
Spree::Api::Dependencies.storefront_cart_add_item_service.constantize
|
146
157
|
end
|
147
158
|
|
159
|
+
def remove_line_item_service
|
160
|
+
Spree::Api::Dependencies.storefront_cart_remove_line_item_service.constantize
|
161
|
+
end
|
162
|
+
|
148
163
|
def destroy_cart_service
|
149
164
|
Spree::Api::Dependencies.storefront_cart_destroy_service.constantize
|
150
165
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Spree
|
2
|
+
module Api
|
3
|
+
module V2
|
4
|
+
module Tenant
|
5
|
+
class CartPaymentMethodGroupsController < BaseController
|
6
|
+
include Spree::Api::V2::Storefront::OrderConcern
|
7
|
+
|
8
|
+
before_action :ensure_order
|
9
|
+
|
10
|
+
# override
|
11
|
+
def index
|
12
|
+
render_serialized_payload do
|
13
|
+
collection_serializer.new(collection, { include: resource_includes }).serializable_hash
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# override
|
18
|
+
def collection
|
19
|
+
@collection ||= SpreeCmCommissioner::PaymentMethods::GroupByBank.new.execute(
|
20
|
+
payment_methods: spree_current_order.available_payment_methods,
|
21
|
+
preferred_payment_method_id: spree_current_user&.preferred_payment_method_id
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
# override
|
26
|
+
def collection_serializer
|
27
|
+
Spree::V2::Tenant::PaymentMethodGroupSerializer
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -47,6 +47,16 @@ module Spree
|
|
47
47
|
render_order(result)
|
48
48
|
end
|
49
49
|
|
50
|
+
def create_payment
|
51
|
+
result = create_payment_service.call(order: spree_current_order, params: params)
|
52
|
+
|
53
|
+
if result.success?
|
54
|
+
render_serialized_payload(201) { serialize_resource(spree_current_order.reload) }
|
55
|
+
else
|
56
|
+
render_error_payload(result.error)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
50
60
|
private
|
51
61
|
|
52
62
|
def wrap_with_multitenant_without(&block)
|
@@ -72,6 +82,10 @@ module Spree
|
|
72
82
|
def update_service
|
73
83
|
Spree::Api::Dependencies.storefront_checkout_update_service.constantize
|
74
84
|
end
|
85
|
+
|
86
|
+
def create_payment_service
|
87
|
+
Vpago::Payments::FindOrCreate
|
88
|
+
end
|
75
89
|
end
|
76
90
|
end
|
77
91
|
end
|
@@ -31,7 +31,7 @@ module SpreeCmCommissioner
|
|
31
31
|
base.has_one :invoice, dependent: :destroy, class_name: 'SpreeCmCommissioner::Invoice'
|
32
32
|
base.has_one :customer, class_name: 'SpreeCmCommissioner::Customer', through: :subscription
|
33
33
|
|
34
|
-
base.belongs_to :tenant, class_name: 'SpreeCmCommissioner::Tenant'
|
34
|
+
base.belongs_to :tenant, class_name: 'SpreeCmCommissioner::Tenant', optional: true
|
35
35
|
base.belongs_to :subscription, class_name: 'SpreeCmCommissioner::Subscription', optional: true
|
36
36
|
|
37
37
|
base.has_many :taxons, class_name: 'Spree::Taxon', through: :customer
|
@@ -16,6 +16,8 @@ module SpreeCmCommissioner
|
|
16
16
|
has_many :children, class_name: 'SpreeCmCommissioner::Place', foreign_key: :parent_id, dependent: :destroy
|
17
17
|
belongs_to :parent, class_name: 'SpreeCmCommissioner::Place', optional: true
|
18
18
|
|
19
|
+
has_many :vendor_stops, class_name: 'SpreeCmCommissioner::VendorStop', dependent: :destroy
|
20
|
+
|
19
21
|
def self.ransackable_attributes(auth_object = nil)
|
20
22
|
super & %w[name code]
|
21
23
|
end
|
@@ -7,6 +7,7 @@ module SpreeCmCommissioner
|
|
7
7
|
|
8
8
|
base.preference :background_color, :string
|
9
9
|
base.preference :foreground_color, :string
|
10
|
+
base.preference :reports, :array, default: []
|
10
11
|
|
11
12
|
base.has_many :taxon_vendors, class_name: 'SpreeCmCommissioner::TaxonVendor'
|
12
13
|
base.has_many :vendors, through: :taxon_vendors
|
@@ -3,7 +3,11 @@ module SpreeCmCommissioner
|
|
3
3
|
extend FriendlyId
|
4
4
|
friendly_id :name, use: :history
|
5
5
|
|
6
|
-
has_many :vendors, class_name: 'Spree::Vendor'
|
6
|
+
has_many :vendors, class_name: 'Spree::Vendor', inverse_of: :tenant
|
7
|
+
has_many :orders, class_name: 'Spree::Order', inverse_of: :tenant
|
8
|
+
has_many :tenant_payment_methods, class_name: 'Spree::PaymentMethod',
|
9
|
+
through: :vendors,
|
10
|
+
source: :payment_methods
|
7
11
|
|
8
12
|
enum state: { enabled: 0, disabled: 1 }
|
9
13
|
|
@@ -2,10 +2,10 @@ require_dependency 'spree_cm_commissioner'
|
|
2
2
|
module SpreeCmCommissioner
|
3
3
|
class TripStop < SpreeCmCommissioner::Base
|
4
4
|
acts_as_list column: :sequence, scope: :trip_id
|
5
|
-
enum stop_type
|
5
|
+
enum :stop_type, { boarding: 0, drop_off: 1 }
|
6
6
|
|
7
|
-
belongs_to :trip, class_name: '
|
8
|
-
belongs_to :stop, class_name: '
|
7
|
+
belongs_to :trip, class_name: 'Spree::Variant'
|
8
|
+
belongs_to :stop, class_name: 'SpreeCmCommissioner::Place'
|
9
9
|
|
10
10
|
before_validation :set_stop_name
|
11
11
|
after_create :create_vendor_stop
|
@@ -21,6 +21,7 @@ module SpreeCmCommissioner
|
|
21
21
|
base.has_many :variant_guest_card_class, class_name: 'SpreeCmCommissioner::VariantGuestCardClass'
|
22
22
|
base.has_many :guest_card_classes, class_name: 'SpreeCmCommissioner::GuestCardClass', through: :variant_guest_card_class
|
23
23
|
|
24
|
+
base.has_many :trip_stops, class_name: 'SpreeCmCommissioner::TripStop', dependent: :destroy, foreign_key: :trip_id
|
24
25
|
base.scope :subscribable, -> { active.joins(:product).where(product: { subscribable: true, status: :active }) }
|
25
26
|
|
26
27
|
base.accepts_nested_attributes_for :option_values
|
@@ -37,16 +37,16 @@ module SpreeCmCommissioner
|
|
37
37
|
through: :option_value_vendors, source: :option_value
|
38
38
|
|
39
39
|
base.has_many :branches, class_name: 'SpreeCmCommissioner::Branch'
|
40
|
-
base.has_many :stops, class_name: 'SpreeCmCommissioner::
|
40
|
+
base.has_many :stops, class_name: 'SpreeCmCommissioner::Place'
|
41
41
|
|
42
42
|
base.has_many :places,
|
43
43
|
through: :nearby_places, source: :place, class_name: 'SpreeCmCommissioner::Place'
|
44
44
|
|
45
45
|
base.has_many :vendor_stops, class_name: 'SpreeCmCommissioner::VendorStop', dependent: :destroy
|
46
46
|
base.has_many :boarding_points, -> { where(cm_vendor_stops: { stop_type: 0 }) },
|
47
|
-
through: :vendor_stops, source: :stop, class_name: '
|
47
|
+
through: :vendor_stops, source: :stop, class_name: 'SpreeCmCommissioner::Place'
|
48
48
|
base.has_many :drop_off_points, -> { where(cm_vendor_stops: { stop_type: 1 }) },
|
49
|
-
through: :vendor_stops, source: :stop, class_name: '
|
49
|
+
through: :vendor_stops, source: :stop, class_name: 'SpreeCmCommissioner::Place'
|
50
50
|
|
51
51
|
base.has_one :logo, as: :viewable, dependent: :destroy, class_name: 'SpreeCmCommissioner::VendorLogo'
|
52
52
|
base.has_one :payment_qrcode, as: :viewable, dependent: :destroy, class_name: 'SpreeCmCommissioner::VendorPaymentQrcode'
|
@@ -2,7 +2,7 @@ require_dependency 'spree_cm_commissioner'
|
|
2
2
|
module SpreeCmCommissioner
|
3
3
|
class VendorStop < ApplicationRecord
|
4
4
|
belongs_to :vendor, class_name: 'Spree::Vendor'
|
5
|
-
belongs_to :stop, class_name: '
|
5
|
+
belongs_to :stop, class_name: 'SpreeCmCommissioner::Place'
|
6
6
|
|
7
7
|
enum stop_type: { boarding: 0, drop_off: 1 }
|
8
8
|
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<!-- insert_after "erb[silent]:contains('content_for :page_actions')" -->
|
2
|
+
|
3
|
+
<% if @taxon.depth == 1 %>
|
4
|
+
<%= button_link_to Spree.t(:clear_cache),
|
5
|
+
admin_invalidate_api_caches_path(model: Spree::Taxon.name),
|
6
|
+
method: :post, class: "btn btn-outline-primary" %>
|
7
|
+
<% end %>
|
@@ -2,7 +2,7 @@ module Spree
|
|
2
2
|
module V2
|
3
3
|
module Storefront
|
4
4
|
module ProductSerializerDecorator
|
5
|
-
def self.prepended(base)
|
5
|
+
def self.prepended(base) # rubocop:disable Metrics/MethodLength
|
6
6
|
base.has_many :variant_kind_option_types, serializer: :option_type
|
7
7
|
base.has_many :product_kind_option_types, serializer: :option_type
|
8
8
|
base.has_many :promoted_option_types, serializer: :option_type
|
@@ -41,6 +41,8 @@ module Spree
|
|
41
41
|
value = product.available?
|
42
42
|
[true, false].include?(value) ? value : nil
|
43
43
|
end
|
44
|
+
|
45
|
+
base.cache_options store: nil
|
44
46
|
end
|
45
47
|
end
|
46
48
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Spree
|
2
|
+
module V2
|
3
|
+
module Tenant
|
4
|
+
class PaymentMethodSerializer < BaseSerializer
|
5
|
+
attributes :type, :name, :description, :public_metadata
|
6
|
+
|
7
|
+
attribute :preferences do |object|
|
8
|
+
object.public_preferences.as_json
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -30,12 +30,17 @@
|
|
30
30
|
</thead>
|
31
31
|
<tbody>
|
32
32
|
<% @user_events.each do |user_event| %>
|
33
|
-
|
34
|
-
|
35
|
-
<td
|
36
|
-
|
37
|
-
|
38
|
-
|
33
|
+
<tr id="<%= spree_dom_id user_event %>" data-hook="admin_taxonomy_taxon_user_events_index_rows">
|
34
|
+
<td><%= user_event.id %></td>
|
35
|
+
<td class='user_email'>
|
36
|
+
<% if user_event.user.present? %>
|
37
|
+
<%= link_to user_event.user.email, edit_admin_user_url(user_event.user) %>
|
38
|
+
<% else %>
|
39
|
+
<span class="text-danger">User is deleted</span>
|
40
|
+
<% end %>
|
41
|
+
</td>
|
42
|
+
<td><%= user_event.created_at %></td>
|
43
|
+
<td><%= user_event.updated_at %></td>
|
39
44
|
<td data-hook="admin_taxonomy_taxon_user_events_index_row_actions" class="actions">
|
40
45
|
<span class="d-flex justify-content-end">
|
41
46
|
<%= link_to_delete user_event, url: admin_user_event_path(user_event.id), no_text: true if can?(:delete, user_event) %>
|
data/config/routes.rb
CHANGED
@@ -466,6 +466,7 @@ Spree::Core::Engine.add_routes do
|
|
466
466
|
|
467
467
|
resource :cart, controller: :cart, only: %i[show create destroy] do
|
468
468
|
post :add_item
|
469
|
+
delete 'remove_line_item/:line_item_id', to: 'cart#remove_line_item', as: :cart_remove_line_item
|
469
470
|
patch :set_quantity
|
470
471
|
patch :apply_coupon_code
|
471
472
|
delete 'remove_coupon_code/:coupon_code', to: 'cart#remove_coupon_code', as: :cart_remove_coupon_code
|
@@ -479,6 +480,7 @@ Spree::Core::Engine.add_routes do
|
|
479
480
|
patch :next
|
480
481
|
patch :advance
|
481
482
|
patch :complete
|
483
|
+
post :create_payment
|
482
484
|
end
|
483
485
|
|
484
486
|
resources :customer_notifications, only: [:show]
|
@@ -492,6 +494,7 @@ Spree::Core::Engine.add_routes do
|
|
492
494
|
end
|
493
495
|
|
494
496
|
resources :user_account_linkages, only: %i[index create destroy]
|
497
|
+
resources :cart_payment_method_groups, only: %i[index]
|
495
498
|
resource :s3_signed_urls
|
496
499
|
resource :profile_images, only: %i[update destroy]
|
497
500
|
resources :line_items, only: %i[index show]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_cm_commissioner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.8.
|
4
|
+
version: 1.8.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- You
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-03-
|
11
|
+
date: 2025-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: spree
|
@@ -819,6 +819,7 @@ files:
|
|
819
819
|
- app/controllers/spree/api/v2/tenant/base_controller.rb
|
820
820
|
- app/controllers/spree/api/v2/tenant/cart_controller.rb
|
821
821
|
- app/controllers/spree/api/v2/tenant/cart_guests_controller.rb
|
822
|
+
- app/controllers/spree/api/v2/tenant/cart_payment_method_groups_controller.rb
|
822
823
|
- app/controllers/spree/api/v2/tenant/checkout_controller.rb
|
823
824
|
- app/controllers/spree/api/v2/tenant/customer_notifications_controller.rb
|
824
825
|
- app/controllers/spree/api/v2/tenant/guests_controller.rb
|
@@ -1300,6 +1301,7 @@ files:
|
|
1300
1301
|
- app/overrides/spree/admin/products/_form/reveal_description_to_user.html.erb.deface
|
1301
1302
|
- app/overrides/spree/admin/products/_form/subscribable_checkbox.html.erb.deface
|
1302
1303
|
- app/overrides/spree/admin/products/_form/use_video_as_default.html.erb.deface
|
1304
|
+
- app/overrides/spree/admin/products/edit/clear_cache_button.html.erb.deface
|
1303
1305
|
- app/overrides/spree/admin/products/index/product_vendor_link.html.erb.deface
|
1304
1306
|
- app/overrides/spree/admin/products/new/allow_anonymous_booking.html.erb.deface
|
1305
1307
|
- app/overrides/spree/admin/products/new/include_kyc_checkbox.html.erb.deface
|
@@ -1354,6 +1356,7 @@ files:
|
|
1354
1356
|
- app/overrides/spree/admin/taxons/_form/sub_title.html.erb.deface
|
1355
1357
|
- app/overrides/spree/admin/taxons/_form/to_date_form_date.html.erb.deface
|
1356
1358
|
- app/overrides/spree/admin/taxons/_form/vendor.html.erb.deface
|
1359
|
+
- app/overrides/spree/admin/taxons/edit/clear_cache_button.html.erb.deface
|
1357
1360
|
- app/overrides/spree/admin/taxons/edit/taxon_tabs.html.erb.deface
|
1358
1361
|
- app/overrides/spree/admin/taxons/edit/title.html.erb.deface
|
1359
1362
|
- app/overrides/spree/admin/users/_form/fields.html.erb.deface
|
@@ -1460,6 +1463,8 @@ files:
|
|
1460
1463
|
- app/serializers/spree/v2/tenant/option_type_serializer.rb
|
1461
1464
|
- app/serializers/spree/v2/tenant/option_value_serializer.rb
|
1462
1465
|
- app/serializers/spree/v2/tenant/order_serializer.rb
|
1466
|
+
- app/serializers/spree/v2/tenant/payment_method_group_serializer.rb
|
1467
|
+
- app/serializers/spree/v2/tenant/payment_method_serializer.rb
|
1463
1468
|
- app/serializers/spree/v2/tenant/role_serializer.rb
|
1464
1469
|
- app/serializers/spree/v2/tenant/s3_signed_url_serializer.rb
|
1465
1470
|
- app/serializers/spree/v2/tenant/stock_item_serializer.rb
|