spree_cm_commissioner 2.15.0 → 2.15.2

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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/app/controllers/spree/api/v2/storefront/transit/draft_orders_controller.rb +2 -1
  4. data/app/controllers/spree/api/v2/tenant/transit/draft_orders_controller.rb +2 -1
  5. data/app/jobs/spree_cm_commissioner/seats/auto_assign_job.rb +16 -0
  6. data/app/models/concerns/spree_cm_commissioner/line_item_seat_selection.rb +25 -3
  7. data/app/models/concerns/spree_cm_commissioner/order_seat_auto_assignable.rb +73 -0
  8. data/app/models/concerns/spree_cm_commissioner/product_seat_auto_assignable.rb +29 -0
  9. data/app/models/concerns/spree_cm_commissioner/promotion/rules/oauth_application_scoped.rb +44 -0
  10. data/app/models/spree_cm_commissioner/block.rb +17 -0
  11. data/app/models/spree_cm_commissioner/line_item_decorator.rb +4 -0
  12. data/app/models/spree_cm_commissioner/oauth_application_promotion_rule.rb +8 -0
  13. data/app/models/spree_cm_commissioner/order_decorator.rb +17 -1
  14. data/app/models/spree_cm_commissioner/product_decorator.rb +1 -0
  15. data/app/models/spree_cm_commissioner/promotion/rules/customer_order_count.rb +87 -0
  16. data/app/models/spree_cm_commissioner/promotion/rules/oauth_applications.rb +34 -0
  17. data/app/models/spree_cm_commissioner/seats/auto_assign_validator.rb +63 -0
  18. data/app/overrides/spree/admin/products/_form/auto_assign_seats.html.erb.deface +14 -0
  19. data/app/queries/spree_cm_commissioner/seats/free_runs_query.rb +73 -0
  20. data/app/serializers/spree/v2/storefront/line_item_serializer_decorator.rb +1 -1
  21. data/app/serializers/spree/v2/storefront/product_serializer_decorator.rb +1 -1
  22. data/app/serializers/spree/v2/tenant/line_item_serializer.rb +1 -1
  23. data/app/services/spree_cm_commissioner/doorkeeper_refresh_token_request_decorator.rb +23 -0
  24. data/app/services/spree_cm_commissioner/doorkeeper_server_decorator.rb +28 -0
  25. data/app/services/spree_cm_commissioner/mini_app_login_application.rb +32 -0
  26. data/app/services/spree_cm_commissioner/order_holds/release.rb +3 -1
  27. data/app/services/spree_cm_commissioner/seat_layouts/save_seat_order.rb +111 -0
  28. data/app/services/spree_cm_commissioner/seats/auto_assign.rb +135 -0
  29. data/app/services/spree_cm_commissioner/seats/block_date_iteration.rb +5 -2
  30. data/app/services/spree_cm_commissioner/seats/pick_seats.rb +79 -0
  31. data/app/services/spree_cm_commissioner/transit_order/create.rb +9 -4
  32. data/app/views/spree/admin/promotions/rules/_customer_order_count.html.erb +20 -0
  33. data/app/views/spree/admin/promotions/rules/_oauth_application_select.html.erb +15 -0
  34. data/app/views/spree/admin/promotions/rules/_oauth_applications.html.erb +6 -0
  35. data/config/locales/en.yml +24 -0
  36. data/config/locales/km.yml +24 -0
  37. data/db/migrate/20261106000001_add_seat_index_to_cm_blocks.rb +16 -0
  38. data/db/migrate/20261110000001_add_seat_assignment_status_to_spree_line_items.rb +11 -0
  39. data/db/migrate/20261110000001_create_cm_oauth_application_promotion_rules.rb +16 -0
  40. data/lib/spree_cm_commissioner/engine.rb +3 -1
  41. data/lib/spree_cm_commissioner/version.rb +1 -1
  42. metadata +24 -2
@@ -0,0 +1,11 @@
1
+ class AddSeatAssignmentStatusToSpreeLineItems < ActiveRecord::Migration[7.0]
2
+ def change
3
+ add_column :spree_line_items, :seat_assignment_status, :integer, if_not_exists: true
4
+
5
+ # Only auto-assign line items ever get a value, so a partial index stays tiny while serving the
6
+ # lookups that need it: pending parties for a bulk run or sweeper, split parties for the organizer.
7
+ add_index :spree_line_items, :seat_assignment_status,
8
+ where: 'seat_assignment_status IS NOT NULL',
9
+ if_not_exists: true
10
+ end
11
+ end
@@ -0,0 +1,16 @@
1
+ class CreateCmOauthApplicationPromotionRules < ActiveRecord::Migration[7.0]
2
+ def change
3
+ create_table :cm_oauth_application_promotion_rules, if_not_exists: true do |t|
4
+ t.references :promotion_rule, null: false, foreign_key: { to_table: :spree_promotion_rules, on_delete: :cascade }, index: false
5
+ t.references :oauth_application, null: false, foreign_key: { to_table: :spree_oauth_applications, on_delete: :cascade },
6
+ index: { name: 'idx_cm_oauth_app_promotion_rules_on_app' }
7
+
8
+ t.timestamps
9
+ end
10
+
11
+ # One row per rule and app; also serves "which apps does this rule use". The index on
12
+ # oauth_application_id above serves the report direction, "which promotions use this app".
13
+ add_index :cm_oauth_application_promotion_rules, %i[promotion_rule_id oauth_application_id],
14
+ unique: true, name: 'idx_cm_oauth_app_promotion_rules_on_rule_and_app', if_not_exists: true
15
+ end
16
+ end
@@ -31,7 +31,9 @@ module SpreeCmCommissioner
31
31
  SpreeCmCommissioner::Promotion::Rules::Weekend,
32
32
  SpreeCmCommissioner::Promotion::Rules::CustomDates,
33
33
  SpreeCmCommissioner::Promotion::Rules::GuestOccupations,
34
- SpreeCmCommissioner::Promotion::Rules::GuestAgeGroup
34
+ SpreeCmCommissioner::Promotion::Rules::GuestAgeGroup,
35
+ SpreeCmCommissioner::Promotion::Rules::OauthApplications,
36
+ SpreeCmCommissioner::Promotion::Rules::CustomerOrderCount
35
37
  ]
36
38
 
37
39
  Rails.application.config.spree.promotions.actions.concat [
@@ -1,5 +1,5 @@
1
1
  module SpreeCmCommissioner
2
- VERSION = '2.15.0'.freeze
2
+ VERSION = '2.15.2'.freeze
3
3
 
4
4
  module_function
5
5
 
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.15.0
4
+ version: 2.15.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - You
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-11-10 00:00:00.000000000 Z
11
+ date: 2026-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree
@@ -1435,6 +1435,7 @@ files:
1435
1435
  - app/jobs/spree_cm_commissioner/route_metrics/increase_order_count_job.rb
1436
1436
  - app/jobs/spree_cm_commissioner/route_metrics/increase_trip_count_job.rb
1437
1437
  - app/jobs/spree_cm_commissioner/route_prices/update_price_range_job.rb
1438
+ - app/jobs/spree_cm_commissioner/seats/auto_assign_job.rb
1438
1439
  - app/jobs/spree_cm_commissioner/seats/bulk_release_on_hold_blocks_job.rb
1439
1440
  - app/jobs/spree_cm_commissioner/seats/release_expired_blocks_job.rb
1440
1441
  - app/jobs/spree_cm_commissioner/show_contestants/import_job.rb
@@ -1506,6 +1507,7 @@ files:
1506
1507
  - app/models/concerns/spree_cm_commissioner/order_prepaid_payment.rb
1507
1508
  - app/models/concerns/spree_cm_commissioner/order_qr_codeable.rb
1508
1509
  - app/models/concerns/spree_cm_commissioner/order_scopes.rb
1510
+ - app/models/concerns/spree_cm_commissioner/order_seat_auto_assignable.rb
1509
1511
  - app/models/concerns/spree_cm_commissioner/order_state_machine.rb
1510
1512
  - app/models/concerns/spree_cm_commissioner/parameterize_name.rb
1511
1513
  - app/models/concerns/spree_cm_commissioner/participation_type_bitwise.rb
@@ -1513,7 +1515,9 @@ files:
1513
1515
  - app/models/concerns/spree_cm_commissioner/phone_number_sanitizer.rb
1514
1516
  - app/models/concerns/spree_cm_commissioner/product_delegation.rb
1515
1517
  - app/models/concerns/spree_cm_commissioner/product_relation_type.rb
1518
+ - app/models/concerns/spree_cm_commissioner/product_seat_auto_assignable.rb
1516
1519
  - app/models/concerns/spree_cm_commissioner/product_type.rb
1520
+ - app/models/concerns/spree_cm_commissioner/promotion/rules/oauth_application_scoped.rb
1517
1521
  - app/models/concerns/spree_cm_commissioner/purchase_limitable.rb
1518
1522
  - app/models/concerns/spree_cm_commissioner/rate_plan_options_concern.rb
1519
1523
  - app/models/concerns/spree_cm_commissioner/reschedule_request_state_machine.rb
@@ -1665,6 +1669,7 @@ files:
1665
1669
  - app/models/spree_cm_commissioner/notification_taxon.rb
1666
1670
  - app/models/spree_cm_commissioner/oauth_access_token_decorator.rb
1667
1671
  - app/models/spree_cm_commissioner/oauth_application_decorator.rb
1672
+ - app/models/spree_cm_commissioner/oauth_application_promotion_rule.rb
1668
1673
  - app/models/spree_cm_commissioner/option_type_decorator.rb
1669
1674
  - app/models/spree_cm_commissioner/option_value_decorator.rb
1670
1675
  - app/models/spree_cm_commissioner/option_value_rate_plan.rb
@@ -1724,12 +1729,14 @@ files:
1724
1729
  - app/models/spree_cm_commissioner/promotion/actions/create_date_specific_item_adjustments.rb
1725
1730
  - app/models/spree_cm_commissioner/promotion/actions/create_guest_item_adjustments.rb
1726
1731
  - app/models/spree_cm_commissioner/promotion/rules/custom_dates.rb
1732
+ - app/models/spree_cm_commissioner/promotion/rules/customer_order_count.rb
1727
1733
  - app/models/spree_cm_commissioner/promotion/rules/customers.rb
1728
1734
  - app/models/spree_cm_commissioner/promotion/rules/date.rb
1729
1735
  - app/models/spree_cm_commissioner/promotion/rules/fixed_date.rb
1730
1736
  - app/models/spree_cm_commissioner/promotion/rules/guest.rb
1731
1737
  - app/models/spree_cm_commissioner/promotion/rules/guest_age_group.rb
1732
1738
  - app/models/spree_cm_commissioner/promotion/rules/guest_occupations.rb
1739
+ - app/models/spree_cm_commissioner/promotion/rules/oauth_applications.rb
1733
1740
  - app/models/spree_cm_commissioner/promotion/rules/vendors.rb
1734
1741
  - app/models/spree_cm_commissioner/promotion/rules/weekend.rb
1735
1742
  - app/models/spree_cm_commissioner/promotion_category_decorator.rb
@@ -1762,6 +1769,7 @@ files:
1762
1769
  - app/models/spree_cm_commissioner/saved_guest.rb
1763
1770
  - app/models/spree_cm_commissioner/seat_layout.rb
1764
1771
  - app/models/spree_cm_commissioner/seat_section.rb
1772
+ - app/models/spree_cm_commissioner/seats/auto_assign_validator.rb
1765
1773
  - app/models/spree_cm_commissioner/service_calendar.rb
1766
1774
  - app/models/spree_cm_commissioner/service_fee_rule.rb
1767
1775
  - app/models/spree_cm_commissioner/show.rb
@@ -1916,6 +1924,7 @@ files:
1916
1924
  - app/overrides/spree/admin/products/_form/allow_gift_transfer.html.erb.deface
1917
1925
  - app/overrides/spree/admin/products/_form/allow_self_check_in.html.erb.deface
1918
1926
  - app/overrides/spree/admin/products/_form/allow_transfer.html.erb.deface
1927
+ - app/overrides/spree/admin/products/_form/auto_assign_seats.html.erb.deface
1919
1928
  - app/overrides/spree/admin/products/_form/available_on.html.erb.deface
1920
1929
  - app/overrides/spree/admin/products/_form/discontinue_on.html.erb.deface
1921
1930
  - app/overrides/spree/admin/products/_form/enable_confirmation_email.html.erb.deface
@@ -2074,6 +2083,7 @@ files:
2074
2083
  - app/queries/spree_cm_commissioner/pie_chart_event_aggregator_queries.rb
2075
2084
  - app/queries/spree_cm_commissioner/recipient_searcher_query.rb
2076
2085
  - app/queries/spree_cm_commissioner/reservation_query.rb
2086
+ - app/queries/spree_cm_commissioner/seats/free_runs_query.rb
2077
2087
  - app/queries/spree_cm_commissioner/session_product_monitor_query.rb
2078
2088
  - app/queries/spree_cm_commissioner/single_leg_trips_query.rb
2079
2089
  - app/queries/spree_cm_commissioner/store_credit_overview_query.rb
@@ -2363,6 +2373,8 @@ files:
2363
2373
  - app/services/spree_cm_commissioner/customer_notifications/clone.rb
2364
2374
  - app/services/spree_cm_commissioner/distribution_agreements/create.rb
2365
2375
  - app/services/spree_cm_commissioner/distribution_agreements/update.rb
2376
+ - app/services/spree_cm_commissioner/doorkeeper_refresh_token_request_decorator.rb
2377
+ - app/services/spree_cm_commissioner/doorkeeper_server_decorator.rb
2366
2378
  - app/services/spree_cm_commissioner/draft_orders/create.rb
2367
2379
  - app/services/spree_cm_commissioner/events/clone.rb
2368
2380
  - app/services/spree_cm_commissioner/events/publish_stock_statuses_to_firestore.rb
@@ -2553,6 +2565,7 @@ files:
2553
2565
  - app/services/spree_cm_commissioner/load_test/generate_booking_ticket_data.rb
2554
2566
  - app/services/spree_cm_commissioner/load_test/generate_voting_fixture_data.rb
2555
2567
  - app/services/spree_cm_commissioner/load_test/login_token.rb
2568
+ - app/services/spree_cm_commissioner/mini_app_login_application.rb
2556
2569
  - app/services/spree_cm_commissioner/mini_app_provider/api_key_history.rb
2557
2570
  - app/services/spree_cm_commissioner/mini_app_provider/ip_rules.rb
2558
2571
  - app/services/spree_cm_commissioner/mini_app_provider/session_gate.rb
@@ -2661,12 +2674,15 @@ files:
2661
2674
  - app/services/spree_cm_commissioner/rsa_service.rb
2662
2675
  - app/services/spree_cm_commissioner/seat_layouts/grid.rb
2663
2676
  - app/services/spree_cm_commissioner/seat_layouts/sanitize_svg.rb
2677
+ - app/services/spree_cm_commissioner/seat_layouts/save_seat_order.rb
2664
2678
  - app/services/spree_cm_commissioner/seat_layouts/update.rb
2665
2679
  - app/services/spree_cm_commissioner/seats/apply_locks.rb
2680
+ - app/services/spree_cm_commissioner/seats/auto_assign.rb
2666
2681
  - app/services/spree_cm_commissioner/seats/block_date_iteration.rb
2667
2682
  - app/services/spree_cm_commissioner/seats/bulk_release_on_hold_blocks.rb
2668
2683
  - app/services/spree_cm_commissioner/seats/lock_blocks.rb
2669
2684
  - app/services/spree_cm_commissioner/seats/lock_state.rb
2685
+ - app/services/spree_cm_commissioner/seats/pick_seats.rb
2670
2686
  - app/services/spree_cm_commissioner/seats/release_expired_blocks.rb
2671
2687
  - app/services/spree_cm_commissioner/seats/unlock_blocks.rb
2672
2688
  - app/services/spree_cm_commissioner/seeds/roles_decorator.rb
@@ -2959,10 +2975,13 @@ files:
2959
2975
  - app/views/spree/admin/promotions/actions/_create_date_specific_item_adjustments.html.erb
2960
2976
  - app/views/spree/admin/promotions/actions/_create_guest_item_adjustments.html.erb
2961
2977
  - app/views/spree/admin/promotions/rules/_custom_dates.html.erb
2978
+ - app/views/spree/admin/promotions/rules/_customer_order_count.html.erb
2962
2979
  - app/views/spree/admin/promotions/rules/_customers.html.erb
2963
2980
  - app/views/spree/admin/promotions/rules/_fixed_date.html.erb
2964
2981
  - app/views/spree/admin/promotions/rules/_guest_age_group.html.erb
2965
2982
  - app/views/spree/admin/promotions/rules/_guest_occupations.html.erb
2983
+ - app/views/spree/admin/promotions/rules/_oauth_application_select.html.erb
2984
+ - app/views/spree/admin/promotions/rules/_oauth_applications.html.erb
2966
2985
  - app/views/spree/admin/promotions/rules/_product.html.erb
2967
2986
  - app/views/spree/admin/promotions/rules/_user.html.erb
2968
2987
  - app/views/spree/admin/promotions/rules/_vendors.html.erb
@@ -3789,6 +3808,9 @@ files:
3789
3808
  - db/migrate/20261105000002_add_index_to_spree_orders_waiting_room_session_id.rb
3790
3809
  - db/migrate/20261105000003_add_queue_fields_to_cm_waiting_room_sessions.rb
3791
3810
  - db/migrate/20261105000004_add_oauth_application_id_to_spree_orders.rb
3811
+ - db/migrate/20261106000001_add_seat_index_to_cm_blocks.rb
3812
+ - db/migrate/20261110000001_add_seat_assignment_status_to_spree_line_items.rb
3813
+ - db/migrate/20261110000001_create_cm_oauth_application_promotion_rules.rb
3792
3814
  - docker-compose.yml
3793
3815
  - docs/api/scoped-access-token-endpoints.md
3794
3816
  - docs/option_types/attr_types.md