spree_cm_commissioner 2.3.1 → 2.3.2.pre.pre4

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 (93) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/app/controllers/spree/admin/product_completion_steps_controller.rb +17 -1
  4. data/app/controllers/spree/admin/tenants_controller.rb +1 -1
  5. data/app/controllers/spree/api/v2/storefront/intercity_taxi/draft_orders_controller.rb +52 -11
  6. data/app/controllers/spree/api/v2/storefront/popular_route_places_controller.rb +63 -0
  7. data/app/controllers/spree/api/v2/storefront/route_places_controller.rb +68 -0
  8. data/app/controllers/spree/api/v2/tenant/intercity_taxi/draft_orders_controller.rb +81 -0
  9. data/app/controllers/spree/api/v2/tenant/trip_places_controller.rb +42 -0
  10. data/app/controllers/spree/api/v2/tenant/trip_search_controller.rb +103 -0
  11. data/app/controllers/spree/api/v2/tenant/trips_controller.rb +32 -0
  12. data/app/factory/spree_cm_commissioner/order_telegram_message_factory.rb +12 -0
  13. data/app/finders/spree_cm_commissioner/places/find_with_route.rb +43 -0
  14. data/app/finders/spree_cm_commissioner/routes/find_popular.rb +25 -0
  15. data/app/interactors/spree_cm_commissioner/create_ticket.rb +2 -0
  16. data/app/interactors/spree_cm_commissioner/host_matcher.rb +1 -1
  17. data/app/interactors/spree_cm_commissioner/vendor_creation_telegram_alert_sender.rb +1 -1
  18. data/app/mailers/spree/order_mailer_decorator.rb +12 -11
  19. data/app/models/concerns/spree_cm_commissioner/line_item_transitable.rb +34 -89
  20. data/app/models/concerns/spree_cm_commissioner/service_recommendations.rb +2 -2
  21. data/app/models/concerns/spree_cm_commissioner/store_preference.rb +1 -0
  22. data/app/models/spree_cm_commissioner/adjustment_decorator.rb +1 -1
  23. data/app/models/spree_cm_commissioner/calculators/extra_drop_off_distance.rb +15 -0
  24. data/app/models/spree_cm_commissioner/calculators/extra_pick_up_distance.rb +15 -0
  25. data/app/models/spree_cm_commissioner/place.rb +7 -0
  26. data/app/models/spree_cm_commissioner/pricing_action.rb +27 -0
  27. data/app/models/spree_cm_commissioner/pricing_model.rb +18 -0
  28. data/app/models/spree_cm_commissioner/pricing_model_variant.rb +6 -0
  29. data/app/models/spree_cm_commissioner/pricing_rule.rb +15 -0
  30. data/app/models/spree_cm_commissioner/pricing_rule_group.rb +20 -0
  31. data/app/models/spree_cm_commissioner/pricing_rules/extra_drop_off_distance.rb +10 -0
  32. data/app/models/spree_cm_commissioner/pricing_rules/extra_pick_up_distance.rb +12 -0
  33. data/app/models/spree_cm_commissioner/pricing_rules/nationality.rb +35 -0
  34. data/app/models/spree_cm_commissioner/product_completion_step.rb +4 -1
  35. data/app/models/spree_cm_commissioner/product_completion_step_banner.rb +12 -0
  36. data/app/models/spree_cm_commissioner/product_completion_steps/social_entry_url.rb +86 -19
  37. data/app/models/spree_cm_commissioner/tenant.rb +14 -1
  38. data/app/models/spree_cm_commissioner/variant_decorator.rb +3 -0
  39. data/app/models/spree_cm_commissioner/vendor_decorator.rb +1 -0
  40. data/app/models/spree_cm_commissioner/vendor_place.rb +10 -1
  41. data/app/overrides/spree/admin/stores/_form/store_preferences.html.erb.deface +9 -0
  42. data/app/queries/spree_cm_commissioner/trip_query.rb +23 -17
  43. data/app/request_schemas/spree_cm_commissioner/intercity_taxi_draft_order_schema.rb +10 -0
  44. data/app/request_schemas/spree_cm_commissioner/intercity_taxi_draft_order_update_schema.rb +29 -0
  45. data/app/request_schemas/spree_cm_commissioner/route_places_request_schema.rb +12 -0
  46. data/app/serializers/spree/v2/storefront/place_serializer.rb +3 -2
  47. data/app/serializers/spree/v2/tenant/cart_serializer.rb +1 -0
  48. data/app/serializers/spree/v2/tenant/intercity_taxi_cart_serializer.rb +12 -0
  49. data/app/serializers/spree/v2/tenant/line_item_serializer.rb +1 -0
  50. data/app/serializers/spree/v2/tenant/trip_place_serializer.rb +8 -0
  51. data/app/serializers/spree/v2/tenant/trip_query_result_serializer.rb +8 -0
  52. data/app/serializers/spree/v2/tenant/trip_serializer.rb +8 -0
  53. data/app/serializers/spree_cm_commissioner/v2/storefront/intercity_taxi_line_item_serializer.rb +17 -18
  54. data/app/serializers/spree_cm_commissioner/v2/storefront/route_serializer.rb +12 -0
  55. data/app/serializers/spree_cm_commissioner/v2/storefront/trip_vehicle_serializer.rb +1 -1
  56. data/app/services/spree_cm_commissioner/intercity_taxi_order/create.rb +20 -23
  57. data/app/services/spree_cm_commissioner/intercity_taxi_order/update.rb +36 -72
  58. data/app/services/spree_cm_commissioner/pricing_models/apply.rb +51 -0
  59. data/app/services/spree_cm_commissioner/pricing_rules/build_params.rb +53 -0
  60. data/app/services/spree_cm_commissioner/pricing_rules/build_template.rb +27 -0
  61. data/app/services/spree_cm_commissioner/pricing_rules/create.rb +10 -0
  62. data/app/services/spree_cm_commissioner/pricing_rules/update.rb +11 -0
  63. data/app/services/spree_cm_commissioner/vendor_places/base.rb +24 -0
  64. data/app/services/spree_cm_commissioner/vendor_places/bulk_create.rb +70 -0
  65. data/app/services/spree_cm_commissioner/vendor_places/create_with_google_map_data.rb +85 -0
  66. data/app/services/spree_cm_commissioner/vendor_places/update.rb +56 -0
  67. data/app/views/shared/_asset_field.html.erb +13 -0
  68. data/app/views/spree/admin/product_completion_steps/_form.html.erb +28 -2
  69. data/app/views/spree/admin/product_completion_steps/_supported_fields.html.erb +33 -0
  70. data/app/views/spree/admin/tenants/_form.html.erb +1 -1
  71. data/app/views/spree/order_mailer/confirm_email.html.erb +1 -1
  72. data/app/views/spree_cm_commissioner/order_mailer/_mailer_stylesheets.html.erb +14 -13
  73. data/app/views/spree_cm_commissioner/order_mailer/tenant/_greeting.html.erb +6 -4
  74. data/config/initializers/spree_permitted_attributes.rb +1 -0
  75. data/config/locales/en.yml +4 -0
  76. data/config/locales/km.yml +65 -61
  77. data/config/routes.rb +15 -1
  78. data/db/migrate/20250915075830_create_spree_cm_commissioner_pricing_models.rb +17 -0
  79. data/db/migrate/20250915080733_create_spree_cm_commissioner_pricing_model_variants.rb +14 -0
  80. data/db/migrate/20251003082144_create_spree_cm_commissioner_pricing_rule_groups.rb +16 -0
  81. data/db/migrate/20251003093408_create_spree_cm_commissioner_pricing_rule.rb +19 -0
  82. data/db/migrate/20251003093643_create_spree_cm_commissioner_pricing_action.rb +14 -0
  83. data/db/migrate/20251119093000_add_tenant_id_to_cm_vendor_places.rb +8 -0
  84. data/lib/spree_cm_commissioner/intercity_taxi/distance.rb +38 -0
  85. data/lib/spree_cm_commissioner/intercity_taxi/map_place.rb +31 -0
  86. data/lib/spree_cm_commissioner/test_helper/factories/pricing_action_factory.rb +5 -0
  87. data/lib/spree_cm_commissioner/test_helper/factories/pricing_model_factory.rb +8 -0
  88. data/lib/spree_cm_commissioner/test_helper/factories/pricing_rule_factory.rb +17 -0
  89. data/lib/spree_cm_commissioner/test_helper/factories/pricing_rule_group_factory.rb +8 -0
  90. data/lib/spree_cm_commissioner/test_helper/factories/product_completion_step_banner_factory.rb +7 -0
  91. data/lib/spree_cm_commissioner/version.rb +1 -1
  92. data/lib/spree_cm_commissioner.rb +2 -0
  93. metadata +54 -4
data/config/routes.rb CHANGED
@@ -163,6 +163,10 @@ Spree::Core::Engine.add_routes do
163
163
  collection do
164
164
  post :update_positions
165
165
  end
166
+
167
+ member do
168
+ delete :remove_banner
169
+ end
166
170
  end
167
171
 
168
172
  resources :product_places do
@@ -546,6 +550,14 @@ Spree::Core::Engine.add_routes do
546
550
  resources :guest_card_classes
547
551
  resources :tickets, only: :index
548
552
 
553
+ resources :trip_places, only: :index
554
+ resources :trip_search, only: [:index]
555
+ resources :trips, only: %i[show]
556
+
557
+ namespace :intercity_taxi do
558
+ resource :draft_orders, only: %i[create update]
559
+ end
560
+
549
561
  resource :reset_passwords, only: [:update]
550
562
  resource :change_passwords, only: [:update]
551
563
  resource :user_contacts, only: [:update]
@@ -571,6 +583,8 @@ Spree::Core::Engine.add_routes do
571
583
  resources :trip_places
572
584
  resources :trip_search, only: [:index]
573
585
  resources :trips, only: %i[show]
586
+ resources :route_places, only: [:index]
587
+ resources :popular_route_places, only: [:index]
574
588
 
575
589
  namespace :queue_cart do
576
590
  resources :line_items, only: [:create]
@@ -685,7 +699,7 @@ Spree::Core::Engine.add_routes do
685
699
  resources :draft_orders, only: %i[create]
686
700
  end
687
701
  namespace :intercity_taxi do
688
- resources :draft_orders, only: %i[create update]
702
+ resource :draft_orders, only: %i[create update]
689
703
  end
690
704
  end
691
705
 
@@ -0,0 +1,17 @@
1
+ class CreateSpreeCmCommissionerPricingModels < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :cm_pricing_models, if_not_exists: true do |t|
4
+ t.string :name, null: false
5
+ t.text :description
6
+ t.integer :status, default: 0, null: false
7
+ t.integer :position, null: false, default: 0
8
+
9
+ t.references :vendor, null: false, foreign_key: { to_table: :spree_vendors }
10
+
11
+ t.timestamps
12
+ end
13
+
14
+ add_index :cm_pricing_models, :position unless index_exists?(:cm_pricing_models, :position)
15
+ add_index :cm_pricing_models, :vendor_id unless index_exists?(:cm_pricing_models, :vendor_id)
16
+ end
17
+ end
@@ -0,0 +1,14 @@
1
+ class CreateSpreeCmCommissionerPricingModelVariants < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :cm_pricing_model_variants, if_not_exists: true do |t|
4
+ t.references :pricing_model, null: false, foreign_key: { to_table: :cm_pricing_models }
5
+ t.references :variant, null: false, foreign_key: { to_table: :spree_variants }
6
+ t.references :product, null: true, foreign_key: { to_table: :spree_products }
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :cm_pricing_model_variants, [:pricing_model_id, :variant_id], name: 'idx_pm_variants_on_model_variant'
12
+ add_index :cm_pricing_model_variants, [:pricing_model_id, :product_id], name: 'idx_pm_variants_on_model_product'
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ class CreateSpreeCmCommissionerPricingRuleGroups < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :cm_pricing_rule_groups, if_not_exists: true do |t|
4
+ t.references :pricing_model, null: false, foreign_key: { to_table: :cm_pricing_models }
5
+ t.string :name
6
+ t.integer :position, default: 0
7
+ t.integer :status, default: 0, null: false
8
+ t.jsonb :public_metadata
9
+ t.jsonb :private_metadata
10
+ t.timestamps
11
+ end
12
+
13
+ add_index :cm_pricing_rule_groups, :pricing_model_id, name: 'idx_rule_groups_on_model'
14
+ add_index :cm_pricing_rule_groups, [:pricing_model_id, :position], name: 'idx_rule_groups_on_model_position'
15
+ end
16
+ end
@@ -0,0 +1,19 @@
1
+ class CreateSpreeCmCommissionerPricingRule < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :cm_pricing_rules, if_not_exists: true do |t|
4
+ t.references :pricing_rule_group, null: false, foreign_key: { to_table: :cm_pricing_rule_groups }
5
+ t.references :product, null: true, foreign_key: { to_table: :spree_products }
6
+ t.references :variant, null: true, foreign_key: { to_table: :spree_variants }
7
+ t.string :type, null: false
8
+ t.jsonb :public_metadata
9
+ t.jsonb :private_metadata
10
+ t.integer :position, null: false, default: 0
11
+
12
+ t.timestamps
13
+ end
14
+
15
+ add_index :cm_pricing_rules, :position, name: 'idx_pricing_rules_on_position'
16
+ add_index :cm_pricing_rules, [:pricing_rule_group_id, :product_id], name: 'idx_pricing_rules_on_group_product'
17
+ add_index :cm_pricing_rules, [:pricing_rule_group_id, :variant_id], name: 'idx_pricing_rules_on_group_variant'
18
+ end
19
+ end
@@ -0,0 +1,14 @@
1
+ class CreateSpreeCmCommissionerPricingAction < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :cm_pricing_actions, if_not_exists: true do |t|
4
+ t.references :pricing_rule_group, null: false, foreign_key: { to_table: :cm_pricing_rule_groups }
5
+ t.references :product, null: true, foreign_key: { to_table: :spree_products }
6
+ t.references :variant, null: true, foreign_key: { to_table: :spree_variants }
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ add_index :cm_pricing_actions, [:pricing_rule_group_id, :product_id], name: 'idx_pricing_actions_on_group_product'
12
+ add_index :cm_pricing_actions, [:pricing_rule_group_id, :variant_id], name: 'idx_pricing_actions_on_group_variant'
13
+ end
14
+ end
@@ -0,0 +1,8 @@
1
+ class AddTenantIdToCmVendorPlaces < ActiveRecord::Migration[7.0]
2
+ def change
3
+ add_column :cm_vendor_places, :tenant_id, :integer, if_not_exists: true
4
+ # Why: VendorPlace#before_save sets tenant_id from vendor; tenant APIs (TripPlacesController) and TripQuery
5
+ # join on vendor_places scoped by tenant, so this speeds tenant-scoped lookups
6
+ add_index :cm_vendor_places, :tenant_id, if_not_exists: true
7
+ end
8
+ end
@@ -0,0 +1,38 @@
1
+ module SpreeCmCommissioner
2
+ module IntercityTaxi
3
+ class Distance
4
+ attr_accessor :distance_km, :ordered_points, :estimated_time_minutes, :base_km,
5
+ :detour_pickup_km, :detour_dropoff_km, :extra_pickup_km, :extra_dropoff_km
6
+
7
+ def initialize(options = {})
8
+ options = options.stringify_keys if options.is_a?(Hash)
9
+
10
+ @distance_km = options['distance_km']&.to_f
11
+ @ordered_points = options['ordered_points']
12
+ @estimated_time_minutes = options['estimated_time_minutes']&.to_i
13
+ @base_km = options['base_km']&.to_f
14
+ @detour_pickup_km = options['detour_pickup_km']&.to_f
15
+ @detour_dropoff_km = options['detour_dropoff_km']&.to_f
16
+ @extra_pickup_km = options['extra_pickup_km']&.to_f
17
+ @extra_dropoff_km = options['extra_dropoff_km']&.to_f
18
+ end
19
+
20
+ def self.from_hash(hash)
21
+ new(hash || {})
22
+ end
23
+
24
+ def to_h
25
+ {
26
+ 'distance_km' => @distance_km,
27
+ 'ordered_points' => @ordered_points,
28
+ 'estimated_time_minutes' => @estimated_time_minutes,
29
+ 'base_km' => @base_km,
30
+ 'detour_pickup_km' => @detour_pickup_km,
31
+ 'detour_dropoff_km' => @detour_dropoff_km,
32
+ 'extra_pickup_km' => @extra_pickup_km,
33
+ 'extra_dropoff_km' => @extra_dropoff_km
34
+ }.compact
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,31 @@
1
+ module SpreeCmCommissioner
2
+ module IntercityTaxi
3
+ class MapPlace
4
+ attr_accessor :place_name, :lat, :lng, :oob_confirmed
5
+
6
+ def initialize(options = {})
7
+ options = options.stringify_keys if options.is_a?(Hash)
8
+
9
+ @place_name = options['place_name']
10
+ @lat = options['lat']&.to_f
11
+ @lng = options['lng']&.to_f
12
+
13
+ # Normalize truthy/falsey values ("true", "1", 1, etc.) to a real boolean.
14
+ @oob_confirmed = ActiveModel::Type::Boolean.new.cast(options['oob_confirmed'])
15
+ end
16
+
17
+ def self.from_hash(hash)
18
+ new(hash || {})
19
+ end
20
+
21
+ def to_h
22
+ {
23
+ 'place_name' => @place_name,
24
+ 'lat' => @lat,
25
+ 'lng' => @lng,
26
+ 'oob_confirmed' => @oob_confirmed
27
+ }.compact
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,5 @@
1
+ FactoryBot.define do
2
+ factory :pricing_action, class: 'SpreeCmCommissioner::PricingAction' do
3
+ association :pricing_rule_group, factory: :pricing_rule_group
4
+ end
5
+ end
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :cm_pricing_model, class: "SpreeCmCommissioner::PricingModel" do
3
+ association :vendor, factory: :cm_vendor
4
+ sequence(:name) { |n| "Pricing Model #{n}" }
5
+ description { "Test pricing model description" }
6
+ status { 'active' }
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ FactoryBot.define do
2
+ factory :pricing_rule_nationality, class: 'SpreeCmCommissioner::PricingRules::Nationality' do
3
+ association :pricing_rule_group, factory: :pricing_rule_group
4
+ rule_type { 'must' }
5
+ nationalities { ["Cambodian"] }
6
+ end
7
+
8
+ factory :pricing_rule_extra_pick_up_distance, class: 'SpreeCmCommissioner::PricingRules::ExtraPickUpDistance' do
9
+ association :pricing_rule_group, factory: :pricing_rule_group
10
+ min_distance { 5 }
11
+ end
12
+
13
+ factory :pricing_rule_extra_drop_off_distance, class: 'SpreeCmCommissioner::PricingRules::ExtraDropOffDistance' do
14
+ association :pricing_rule_group, factory: :pricing_rule_group
15
+ min_distance { 5 }
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ FactoryBot.define do
2
+ factory :pricing_rule_group, class: 'SpreeCmCommissioner::PricingRuleGroup' do
3
+ association :pricing_model, factory: :cm_pricing_model
4
+ sequence(:name) { |n| "Rule Group #{n}" }
5
+ match_type { 'all' }
6
+ position { 0 }
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ FactoryBot.define do
2
+ factory :cm_product_completion_step_banner, class: SpreeCmCommissioner::ProductCompletionStepBanner do
3
+ viewable_type { 'SpreeCmCommissioner::ProductCompletionStep' }
4
+ viewable_id { nil }
5
+ attachment { Rack::Test::UploadedFile.new(Spree::Core::Engine.root.join('spec', 'fixtures', 'files', 'icon_256x256.png'), 'image/*') }
6
+ end
7
+ end
@@ -1,5 +1,5 @@
1
1
  module SpreeCmCommissioner
2
- VERSION = '2.3.1'.freeze
2
+ VERSION = '2.3.2.pre.pre4'.freeze
3
3
 
4
4
  module_function
5
5
 
@@ -23,6 +23,8 @@ require 'spree_cm_commissioner/trip_query_result'
23
23
  require 'spree_cm_commissioner/cached_inventory_item'
24
24
  require 'spree_cm_commissioner/transit/leg'
25
25
  require 'spree_cm_commissioner/transit/seat_selection'
26
+ require 'spree_cm_commissioner/intercity_taxi/map_place'
27
+ require 'spree_cm_commissioner/intercity_taxi/distance'
26
28
 
27
29
  require 'activerecord_multi_tenant'
28
30
  require 'google/cloud/recaptcha_enterprise'
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: 2.3.1
4
+ version: 2.3.2.pre.pre4
5
5
  platform: ruby
6
6
  authors:
7
7
  - You
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-11-14 00:00:00.000000000 Z
11
+ date: 2025-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree
@@ -969,11 +969,13 @@ files:
969
969
  - app/controllers/spree/api/v2/storefront/pin_code_generators_controller.rb
970
970
  - app/controllers/spree/api/v2/storefront/pin_code_otp_checkers_controller.rb
971
971
  - app/controllers/spree/api/v2/storefront/pin_code_otp_generators_controller.rb
972
+ - app/controllers/spree/api/v2/storefront/popular_route_places_controller.rb
972
973
  - app/controllers/spree/api/v2/storefront/profile_images_controller.rb
973
974
  - app/controllers/spree/api/v2/storefront/provinces_controller.rb
974
975
  - app/controllers/spree/api/v2/storefront/qr_urls_controller.rb
975
976
  - app/controllers/spree/api/v2/storefront/queue_cart/line_items_controller.rb
976
977
  - app/controllers/spree/api/v2/storefront/reset_passwords_controller.rb
978
+ - app/controllers/spree/api/v2/storefront/route_places_controller.rb
977
979
  - app/controllers/spree/api/v2/storefront/s3_signed_urls_controller.rb
978
980
  - app/controllers/spree/api/v2/storefront/seat_layouts_controller.rb
979
981
  - app/controllers/spree/api/v2/storefront/self_check_in_controller.rb
@@ -1013,6 +1015,7 @@ files:
1013
1015
  - app/controllers/spree/api/v2/tenant/guests_controller.rb
1014
1016
  - app/controllers/spree/api/v2/tenant/homepage_sections_controller.rb
1015
1017
  - app/controllers/spree/api/v2/tenant/id_cards_controller.rb
1018
+ - app/controllers/spree/api/v2/tenant/intercity_taxi/draft_orders_controller.rb
1016
1019
  - app/controllers/spree/api/v2/tenant/line_items_controller.rb
1017
1020
  - app/controllers/spree/api/v2/tenant/notifications_controller.rb
1018
1021
  - app/controllers/spree/api/v2/tenant/order_histories_controller.rb
@@ -1025,6 +1028,9 @@ files:
1025
1028
  - app/controllers/spree/api/v2/tenant/s3_signed_urls_controller.rb
1026
1029
  - app/controllers/spree/api/v2/tenant/taxons_controller.rb
1027
1030
  - app/controllers/spree/api/v2/tenant/tickets_controller.rb
1031
+ - app/controllers/spree/api/v2/tenant/trip_places_controller.rb
1032
+ - app/controllers/spree/api/v2/tenant/trip_search_controller.rb
1033
+ - app/controllers/spree/api/v2/tenant/trips_controller.rb
1028
1034
  - app/controllers/spree/api/v2/tenant/user_account_linkages_controller.rb
1029
1035
  - app/controllers/spree/api/v2/tenant/user_contacts_controller.rb
1030
1036
  - app/controllers/spree/api/v2/tenant/user_device_tokens_controller.rb
@@ -1124,7 +1130,9 @@ files:
1124
1130
  - app/finders/spree_cm_commissioner/orders/find.rb
1125
1131
  - app/finders/spree_cm_commissioner/orders/find_by_state.rb
1126
1132
  - app/finders/spree_cm_commissioner/payment_methods/group_by_bank.rb
1133
+ - app/finders/spree_cm_commissioner/places/find_with_route.rb
1127
1134
  - app/finders/spree_cm_commissioner/products/find_decorator.rb
1135
+ - app/finders/spree_cm_commissioner/routes/find_popular.rb
1128
1136
  - app/helpers/spree/admin/base_helper_decorator.rb
1129
1137
  - app/helpers/spree/admin/google_wallets_helper.rb
1130
1138
  - app/helpers/spree/base_helper_decorator.rb
@@ -1398,6 +1406,8 @@ files:
1398
1406
  - app/models/spree_cm_commissioner/base.rb
1399
1407
  - app/models/spree_cm_commissioner/blazer_queryable.rb
1400
1408
  - app/models/spree_cm_commissioner/block.rb
1409
+ - app/models/spree_cm_commissioner/calculators/extra_drop_off_distance.rb
1410
+ - app/models/spree_cm_commissioner/calculators/extra_pick_up_distance.rb
1401
1411
  - app/models/spree_cm_commissioner/check_in.rb
1402
1412
  - app/models/spree_cm_commissioner/check_in_ability.rb
1403
1413
  - app/models/spree_cm_commissioner/check_in_record.rb
@@ -1483,7 +1493,16 @@ files:
1483
1493
  - app/models/spree_cm_commissioner/pin_code_update_user_login.rb
1484
1494
  - app/models/spree_cm_commissioner/place.rb
1485
1495
  - app/models/spree_cm_commissioner/price_decorator.rb
1496
+ - app/models/spree_cm_commissioner/pricing_action.rb
1497
+ - app/models/spree_cm_commissioner/pricing_model.rb
1498
+ - app/models/spree_cm_commissioner/pricing_model_variant.rb
1499
+ - app/models/spree_cm_commissioner/pricing_rule.rb
1500
+ - app/models/spree_cm_commissioner/pricing_rule_group.rb
1501
+ - app/models/spree_cm_commissioner/pricing_rules/extra_drop_off_distance.rb
1502
+ - app/models/spree_cm_commissioner/pricing_rules/extra_pick_up_distance.rb
1503
+ - app/models/spree_cm_commissioner/pricing_rules/nationality.rb
1486
1504
  - app/models/spree_cm_commissioner/product_completion_step.rb
1505
+ - app/models/spree_cm_commissioner/product_completion_step_banner.rb
1487
1506
  - app/models/spree_cm_commissioner/product_completion_steps/chatrace_telegram.rb
1488
1507
  - app/models/spree_cm_commissioner/product_completion_steps/social_entry_url.rb
1489
1508
  - app/models/spree_cm_commissioner/product_decorator.rb
@@ -1748,8 +1767,11 @@ files:
1748
1767
  - app/queries/spree_cm_commissioner/users_by_event_fetcher_query.rb
1749
1768
  - app/request_schemas/spree_cm_commissioner/accommodation_request_schema.rb
1750
1769
  - app/request_schemas/spree_cm_commissioner/application_request_schema.rb
1770
+ - app/request_schemas/spree_cm_commissioner/intercity_taxi_draft_order_schema.rb
1771
+ - app/request_schemas/spree_cm_commissioner/intercity_taxi_draft_order_update_schema.rb
1751
1772
  - app/request_schemas/spree_cm_commissioner/inventory_item_schema.rb
1752
1773
  - app/request_schemas/spree_cm_commissioner/profile_image_request_schema.rb
1774
+ - app/request_schemas/spree_cm_commissioner/route_places_request_schema.rb
1753
1775
  - app/request_schemas/spree_cm_commissioner/seat_layout_schema.rb
1754
1776
  - app/request_schemas/spree_cm_commissioner/trip_search_request_schema.rb
1755
1777
  - app/request_schemas/spree_cm_commissioner/user_account_linkage_request_schema.rb
@@ -1818,6 +1840,7 @@ files:
1818
1840
  - app/serializers/spree/v2/tenant/homepage_section_serializer.rb
1819
1841
  - app/serializers/spree/v2/tenant/id_card_serializer.rb
1820
1842
  - app/serializers/spree/v2/tenant/image_serializer.rb
1843
+ - app/serializers/spree/v2/tenant/intercity_taxi_cart_serializer.rb
1821
1844
  - app/serializers/spree/v2/tenant/line_item_serializer.rb
1822
1845
  - app/serializers/spree/v2/tenant/notification_serializer.rb
1823
1846
  - app/serializers/spree/v2/tenant/option_type_serializer.rb
@@ -1835,6 +1858,9 @@ files:
1835
1858
  - app/serializers/spree/v2/tenant/taxon_serializer.rb
1836
1859
  - app/serializers/spree/v2/tenant/taxonomy_serializer.rb
1837
1860
  - app/serializers/spree/v2/tenant/ticket_serializer.rb
1861
+ - app/serializers/spree/v2/tenant/trip_place_serializer.rb
1862
+ - app/serializers/spree/v2/tenant/trip_query_result_serializer.rb
1863
+ - app/serializers/spree/v2/tenant/trip_serializer.rb
1838
1864
  - app/serializers/spree/v2/tenant/user_contact_serializer.rb
1839
1865
  - app/serializers/spree/v2/tenant/user_device_token_serializer.rb
1840
1866
  - app/serializers/spree/v2/tenant/user_identity_provider_serializer.rb
@@ -1899,6 +1925,7 @@ files:
1899
1925
  - app/serializers/spree_cm_commissioner/v2/storefront/qr_url_serializer.rb
1900
1926
  - app/serializers/spree_cm_commissioner/v2/storefront/reserved_block_serializer.rb
1901
1927
  - app/serializers/spree_cm_commissioner/v2/storefront/reset_password_serializer.rb
1928
+ - app/serializers/spree_cm_commissioner/v2/storefront/route_serializer.rb
1902
1929
  - app/serializers/spree_cm_commissioner/v2/storefront/saved_guest_serializer.rb
1903
1930
  - app/serializers/spree_cm_commissioner/v2/storefront/seat_layout_serializer.rb
1904
1931
  - app/serializers/spree_cm_commissioner/v2/storefront/seat_section_serializer.rb
@@ -1964,6 +1991,11 @@ files:
1964
1991
  - app/services/spree_cm_commissioner/organizer/export_invite_guest_csv_service.rb
1965
1992
  - app/services/spree_cm_commissioner/payment_method_type_mapper.rb
1966
1993
  - app/services/spree_cm_commissioner/penalty_calculator.rb
1994
+ - app/services/spree_cm_commissioner/pricing_models/apply.rb
1995
+ - app/services/spree_cm_commissioner/pricing_rules/build_params.rb
1996
+ - app/services/spree_cm_commissioner/pricing_rules/build_template.rb
1997
+ - app/services/spree_cm_commissioner/pricing_rules/create.rb
1998
+ - app/services/spree_cm_commissioner/pricing_rules/update.rb
1967
1999
  - app/services/spree_cm_commissioner/role_permissions_constructor.rb
1968
2000
  - app/services/spree_cm_commissioner/role_permissions_loader.rb
1969
2001
  - app/services/spree_cm_commissioner/routes/base_update_order_metrics.rb
@@ -1981,6 +2013,10 @@ files:
1981
2013
  - app/services/spree_cm_commissioner/user_authenticator.rb
1982
2014
  - app/services/spree_cm_commissioner/user_roles_assigner.rb
1983
2015
  - app/services/spree_cm_commissioner/users/incomplete_guest_checker_service.rb
2016
+ - app/services/spree_cm_commissioner/vendor_places/base.rb
2017
+ - app/services/spree_cm_commissioner/vendor_places/bulk_create.rb
2018
+ - app/services/spree_cm_commissioner/vendor_places/create_with_google_map_data.rb
2019
+ - app/services/spree_cm_commissioner/vendor_places/update.rb
1984
2020
  - app/services/spree_cm_commissioner/waiting_room_system_metadata_fetcher.rb
1985
2021
  - app/services/spree_cm_commissioner/waiting_room_system_metadata_setter.rb
1986
2022
  - app/services/spree_cm_commissioner/webhooks/subscribers/handle_request_decorator.rb
@@ -2101,6 +2137,7 @@ files:
2101
2137
  - app/views/spree/admin/orders/notifications.html.erb
2102
2138
  - app/views/spree/admin/product_commissions/index.html.erb
2103
2139
  - app/views/spree/admin/product_completion_steps/_form.html.erb
2140
+ - app/views/spree/admin/product_completion_steps/_supported_fields.html.erb
2104
2141
  - app/views/spree/admin/product_completion_steps/edit.html.erb
2105
2142
  - app/views/spree/admin/product_completion_steps/index.html.erb
2106
2143
  - app/views/spree/admin/product_completion_steps/new.html.erb
@@ -2843,13 +2880,19 @@ files:
2843
2880
  - db/migrate/20250911174607_add_metadata_columns_to_cm_vehicles.rb
2844
2881
  - db/migrate/20250911174653_add_metadata_columns_to_cm_trips.rb
2845
2882
  - db/migrate/20250912084944_add_send_type_to_sms_log.rb
2883
+ - db/migrate/20250915075830_create_spree_cm_commissioner_pricing_models.rb
2884
+ - db/migrate/20250915080733_create_spree_cm_commissioner_pricing_model_variants.rb
2846
2885
  - db/migrate/20250930094228_add_application_id_to_cm_pin_codes.rb
2847
2886
  - db/migrate/20250930100657_add_settings_to_spree_oauth_applications.rb
2887
+ - db/migrate/20251003082144_create_spree_cm_commissioner_pricing_rule_groups.rb
2888
+ - db/migrate/20251003093408_create_spree_cm_commissioner_pricing_rule.rb
2889
+ - db/migrate/20251003093643_create_spree_cm_commissioner_pricing_action.rb
2848
2890
  - db/migrate/20251008064344_add_route_id_to_cm_trips.rb
2849
2891
  - db/migrate/20251009033331_add_registered_by_to_spree_users.rb
2850
2892
  - db/migrate/20251009073040_add_lock_version_to_cm_routes.rb
2851
2893
  - db/migrate/20251009073929_add_lock_version_to_cm_vendor_routes.rb
2852
2894
  - db/migrate/20251113081853_add_index_to_spree_orders_updated_at.rb
2895
+ - db/migrate/20251119093000_add_tenant_id_to_cm_vendor_places.rb
2853
2896
  - docker-compose.yml
2854
2897
  - docs/api/scoped-access-token-endpoints.md
2855
2898
  - docs/option_types/attr_types.md
@@ -2874,6 +2917,8 @@ files:
2874
2917
  - lib/spree_cm_commissioner/calendar_event.rb
2875
2918
  - lib/spree_cm_commissioner/engine.rb
2876
2919
  - lib/spree_cm_commissioner/factories.rb
2920
+ - lib/spree_cm_commissioner/intercity_taxi/distance.rb
2921
+ - lib/spree_cm_commissioner/intercity_taxi/map_place.rb
2877
2922
  - lib/spree_cm_commissioner/jwt_token.rb
2878
2923
  - lib/spree_cm_commissioner/line_item_jwt_token.rb
2879
2924
  - lib/spree_cm_commissioner/order_jwt_token.rb
@@ -2922,6 +2967,11 @@ files:
2922
2967
  - lib/spree_cm_commissioner/test_helper/factories/permission.rb
2923
2968
  - lib/spree_cm_commissioner/test_helper/factories/pin_code_factory.rb
2924
2969
  - lib/spree_cm_commissioner/test_helper/factories/place_factory.rb
2970
+ - lib/spree_cm_commissioner/test_helper/factories/pricing_action_factory.rb
2971
+ - lib/spree_cm_commissioner/test_helper/factories/pricing_model_factory.rb
2972
+ - lib/spree_cm_commissioner/test_helper/factories/pricing_rule_factory.rb
2973
+ - lib/spree_cm_commissioner/test_helper/factories/pricing_rule_group_factory.rb
2974
+ - lib/spree_cm_commissioner/test_helper/factories/product_completion_step_banner_factory.rb
2925
2975
  - lib/spree_cm_commissioner/test_helper/factories/product_completion_step_factory.rb
2926
2976
  - lib/spree_cm_commissioner/test_helper/factories/product_factory.rb
2927
2977
  - lib/spree_cm_commissioner/test_helper/factories/products_taxons_factory.rb
@@ -3013,9 +3063,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
3013
3063
  version: '2.7'
3014
3064
  required_rubygems_version: !ruby/object:Gem::Requirement
3015
3065
  requirements:
3016
- - - ">="
3066
+ - - ">"
3017
3067
  - !ruby/object:Gem::Version
3018
- version: '0'
3068
+ version: 1.3.1
3019
3069
  requirements:
3020
3070
  - none
3021
3071
  rubygems_version: 3.4.1