spree_cm_commissioner 2.3.0.pre.pre16 → 2.3.0.pre.pre17

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 (56) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +33 -0
  4. data/app/controllers/blazer/base_controller_decorator.rb +20 -1
  5. data/app/controllers/spree/api/v2/storefront/intercity_taxi/draft_orders_controller.rb +40 -0
  6. data/app/controllers/spree/api/v2/storefront/trip_search_controller.rb +47 -9
  7. data/app/controllers/spree_cm_commissioner/admin/variants_controller_decorator.rb +1 -1
  8. data/app/factory/spree_cm_commissioner/vendor_telegram_message_factory.rb +65 -0
  9. data/app/helpers/spree/base_helper_decorator.rb +2 -19
  10. data/app/interactors/spree_cm_commissioner/vendor_creation_telegram_alert_sender.rb +28 -0
  11. data/app/jobs/spree_cm_commissioner/transit/route_fulfilled_order_count_incrementer_job.rb +1 -1
  12. data/app/jobs/spree_cm_commissioner/transit/route_order_count_incrementer_job.rb +1 -1
  13. data/app/jobs/spree_cm_commissioner/transit/route_previous_trip_count_decrementer_job.rb +1 -1
  14. data/app/jobs/spree_cm_commissioner/transit/route_trip_count_decrementer_job.rb +1 -1
  15. data/app/jobs/spree_cm_commissioner/transit/route_trip_count_incrementer_job.rb +1 -1
  16. data/app/jobs/spree_cm_commissioner/vendor_creation_telegram_alert_sender_job.rb +10 -0
  17. data/app/models/concerns/spree_cm_commissioner/line_item_transitable.rb +51 -0
  18. data/app/models/concerns/spree_cm_commissioner/option_type_attr_type.rb +7 -0
  19. data/app/models/concerns/spree_cm_commissioner/option_value_attr_type.rb +25 -0
  20. data/app/models/concerns/spree_cm_commissioner/route_order_countable.rb +3 -14
  21. data/app/models/concerns/spree_cm_commissioner/variant_options_concern.rb +18 -4
  22. data/app/models/spree_cm_commissioner/block.rb +19 -0
  23. data/app/models/spree_cm_commissioner/product_decorator.rb +1 -0
  24. data/app/models/spree_cm_commissioner/variant_decorator.rb +0 -5
  25. data/app/models/spree_cm_commissioner/variant_options.rb +8 -0
  26. data/app/models/spree_cm_commissioner/vendor_decorator.rb +6 -0
  27. data/app/overrides/spree/admin/variants/_form/add_permanent_stock.html.erb.deface +2 -1
  28. data/app/serializers/spree_cm_commissioner/v2/storefront/intercity_taxi_cart_serializer.rb +12 -0
  29. data/app/serializers/spree_cm_commissioner/v2/storefront/intercity_taxi_line_item_serializer.rb +31 -0
  30. data/app/serializers/spree_cm_commissioner/v2/storefront/trip_result_serializer.rb +11 -0
  31. data/app/services/spree_cm_commissioner/intercity_taxi_order/create.rb +67 -0
  32. data/app/services/spree_cm_commissioner/intercity_taxi_order/update.rb +79 -0
  33. data/app/services/spree_cm_commissioner/{transit/base_route_order_metrics_updater.rb → routes/base_update_order_metrics.rb} +2 -2
  34. data/app/services/spree_cm_commissioner/{transit/route_previous_trip_count_decrementer_service.rb → routes/decrement_previous_trip_count.rb} +3 -3
  35. data/app/services/spree_cm_commissioner/{transit/route_trip_count_decrementer_service.rb → routes/decrement_trip_count.rb} +2 -2
  36. data/app/services/spree_cm_commissioner/{transit/route_fulfilled_order_count_incrementer_service.rb → routes/increment_fulfilled_order_count.rb} +3 -3
  37. data/app/services/spree_cm_commissioner/{transit/route_order_count_incrementer_service.rb → routes/increment_order_count.rb} +3 -3
  38. data/app/services/spree_cm_commissioner/{transit/route_trip_count_incrementer_service.rb → routes/increment_trip_count.rb} +2 -2
  39. data/app/services/spree_cm_commissioner/trips/search.rb +65 -0
  40. data/app/views/blazer/queries/embed/_content.html.erb +51 -2
  41. data/app/views/spree/admin/option_types/_color_field.html.erb +21 -0
  42. data/app/views/spree/admin/option_types/_option_value_fields.html.erb +2 -0
  43. data/app/views/spree/admin/variants/_color_field.html.erb +28 -0
  44. data/app/views/spree/admin/variants/_date_field.html.erb +11 -1
  45. data/app/views/spree/admin/variants/_default_field.html.erb +7 -3
  46. data/app/views/spree/admin/variants/_option_values.html.erb +5 -1
  47. data/app/views/spree/admin/variants/_time_field.html.erb +7 -1
  48. data/app/views/spree/order_mailer/_adjustment.html.erb +7 -0
  49. data/app/views/spree_cm_commissioner/event_transactional_mailer/_event_banner.html.erb +9 -3
  50. data/config/locales/km.yml +64 -0
  51. data/config/routes.rb +4 -1
  52. data/lib/spree_cm_commissioner/test_helper/factories/option_type_factory.rb +18 -0
  53. data/lib/spree_cm_commissioner/test_helper/factories/trip_factory.rb +30 -0
  54. data/lib/spree_cm_commissioner/trip_result.rb +15 -0
  55. data/lib/spree_cm_commissioner/version.rb +1 -1
  56. metadata +20 -8
@@ -466,3 +466,67 @@ km:
466
466
  event_blazer_queries:
467
467
  success: "បានរក្សាទុកព្រឹត្តិការណ៍ដោយជោគជ័យ"
468
468
  fail: "បានរក្សាទុកព្រឹត្តិការណ៍រួចហើយs"
469
+
470
+ blazer:
471
+ columns:
472
+ 'No.': "លេខរៀង"
473
+ 'Reservation No.': "លេខកក់"
474
+ 'Direction': "ទិសដៅ"
475
+ 'Vehicle type': "ប្រភេទយានយន្ត"
476
+ 'Seller': "អ្នកលក់"
477
+ 'Paid to': "បង់ទៅ"
478
+ 'Branch': "សាខា"
479
+ 'Gateway': "ច្រកទ្វារ"
480
+ 'Departure': "ចេញដំណើរ"
481
+ 'Issued': "ចេញឲ្យ"
482
+ 'Paid': "បានបង់"
483
+ '# of seats': "ចំនួនកៅអី"
484
+ 'Source': "ប្រភព"
485
+ 'Status': "ស្ថានភាព"
486
+ 'Fare': "តម្លៃឈ្នួល"
487
+ 'Discount': "ការបញ្ចុះតម្លៃ"
488
+ 'Commission': "កម្រៃជើងសារ"
489
+ 'Amount': "ចំនួនទឹកប្រាក់"
490
+ 'Metric': "រង្វាស់"
491
+ 'Value': "តម្លៃ"
492
+ 'Group': "ក្រុម"
493
+ 'Orders': "ការបញ្ជាទិញ"
494
+ 'Passengers': "អ្នកដំណើរ"
495
+ 'Total fare': "តម្លៃឈ្នួលសរុប"
496
+ 'Total discount': "ការបញ្ចុះតម្លៃសរុប"
497
+ 'Total commission': "កម្រៃជើងសារសរុប"
498
+ 'Total amount': "ចំនួនទឹកប្រាក់សរុប"
499
+ 'Trip ID': "លេខសម្គាល់ជើងដំណើរ"
500
+ 'Route': "ផ្លូវ"
501
+ 'Origin': "ទីតាំងដើម"
502
+ 'Destination': "ទីតាំងគោលដៅ"
503
+ 'Departure Time': "ម៉ោងចេញដំណើរ"
504
+ 'Vehicle': "យានយន្ត"
505
+ 'Total Seats': "ចំនួនកៅអីសរុប"
506
+ 'Bookings': "ការកក់"
507
+ 'Seats Sold': "កៅអីលក់បាន"
508
+ 'Occupancy %': "ភាគរយនៃការកាន់កាប់"
509
+ 'Total Revenue': "ចំណូលសរុប"
510
+ 'Avg Ticket Price': "តម្លៃសំបុត្រជាមធ្យម"
511
+ 'Date': "កាលបរិច្ឆេទ"
512
+ 'Time': "ម៉ោង"
513
+ 'From': "ពី"
514
+ 'To': "ទៅ"
515
+ 'Capacity': "ចំណុះ"
516
+ 'Available': "ទំនេរ"
517
+ 'Filled %': "ភាគរយនៃការបំពេញ"
518
+ 'Vehicle Code': "លេខកូដយានយន្ត"
519
+ 'Plate': "ស្លាកលេខ"
520
+ 'Type': "ប្រភេទ"
521
+ 'Total Trips': "ចំនួនជើងដំណើរ​សរុប"
522
+ 'Trips with Bookings': "ជើងដំណើរ​មានការកក់"
523
+ 'Total Bookings': "ចំនួនការកក់​សរុប"
524
+ 'Total Passengers': "ចំនួនអ្នកដំណើរ​សរុប"
525
+ 'Avg Occupancy %': "ភាគរយនៃការកាន់កាប់​ជាមធ្យម"
526
+ 'Lead Time': "រយៈពេលនៃការរង់ចាំ"
527
+ 'Revenue': "ចំណូល"
528
+ 'Avg Days in Advance': "ចំនួនថ្ងៃជាមធ្យមមុន"
529
+ 'Current Period': "រយៈពេលបច្ចុប្បន្ន"
530
+ 'Previous Period': "រយៈពេលមុន"
531
+ 'Change': "បំលាស់ប្តូរ"
532
+ 'Change %': "ភាគរយនៃបំលាស់ប្តូរ"
data/config/routes.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  Spree::Core::Engine.add_routes do
2
2
  # Add your extension routes here
3
3
 
4
- authenticate :spree_user, -> (user) { user.admin? || user.organizer? } do
4
+ authenticate :spree_user, -> (user) { user.admin? || user.organizer? || user.vendors.exists? } do
5
5
  mount Blazer::Engine, at: 'admin/bi_reports'
6
6
  end
7
7
 
@@ -684,6 +684,9 @@ Spree::Core::Engine.add_routes do
684
684
  namespace :transit do
685
685
  resources :draft_orders, only: %i[create]
686
686
  end
687
+ namespace :intercity_taxi do
688
+ resources :draft_orders, only: %i[create update]
689
+ end
687
690
  end
688
691
 
689
692
  namespace :operator do
@@ -153,6 +153,24 @@ FactoryBot.define do
153
153
  presentation { 'seat-number-positions' }
154
154
  end
155
155
 
156
+ trait :color do
157
+ attr_type { :string }
158
+ name { 'color' }
159
+ presentation { 'color' }
160
+ end
161
+
162
+ trait :ticket_type do
163
+ attr_type { :string }
164
+ name { 'ticket-type' }
165
+ presentation { 'ticket-type' }
166
+ end
167
+
168
+ trait :seat_type do
169
+ attr_type { :string }
170
+ name { 'seat-type' }
171
+ presentation { 'seat-type' }
172
+ end
173
+
156
174
  initialize_with { Spree::OptionType.where(name: name).first_or_initialize }
157
175
  end
158
176
  end
@@ -12,4 +12,34 @@ FactoryBot.define do
12
12
  association :destination_place, factory: :cm_place
13
13
  association :route, factory: :cm_route
14
14
  end
15
+
16
+ factory :cm_trip_with_seat_counts, parent: :cm_trip do
17
+ after(:create) do |trip, evaluator|
18
+ seat_option_type = create(:cm_option_type, name: 'seat-type')
19
+ sleeping_seat = create(
20
+ :cm_option_value,
21
+ name: 'sleeping',
22
+ option_type: seat_option_type
23
+ )
24
+
25
+ tomorrow = Date.current + 1.day
26
+ trip.product.option_types << seat_option_type
27
+ trip.product.save!
28
+
29
+ trip.product.variants.create!(
30
+ option_values: [sleeping_seat],
31
+ price: 20.0
32
+ )
33
+
34
+ trip.variants.each do |variant|
35
+ create(
36
+ :cm_inventory_item,
37
+ variant: variant,
38
+ inventory_date: tomorrow,
39
+ quantity_available: 10,
40
+ max_capacity: 45
41
+ )
42
+ end
43
+ end
44
+ end
15
45
  end
@@ -36,5 +36,20 @@ module SpreeCmCommissioner
36
36
 
37
37
  departure_time + duration.seconds
38
38
  end
39
+
40
+ # Enable serializer-level caching (like ActiveRecord's cache_key_with_version)
41
+ # Create a version hash based on attributes that matter for caching
42
+ def cache_key_with_version
43
+ version_parts = [
44
+ id,
45
+ price,
46
+ quantity_available,
47
+ max_capacity,
48
+ departure_time&.to_i
49
+ ].compact.join('-')
50
+
51
+ version_hash = Digest::MD5.hexdigest(version_parts)
52
+ "trip_results/#{id}-#{version_hash}"
53
+ end
39
54
  end
40
55
  end
@@ -1,5 +1,5 @@
1
1
  module SpreeCmCommissioner
2
- VERSION = '2.3.0-pre16'.freeze
2
+ VERSION = '2.3.0-pre17'.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.3.0.pre.pre16
4
+ version: 2.3.0.pre.pre17
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-01 00:00:00.000000000 Z
11
+ date: 2025-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree
@@ -953,6 +953,7 @@ files:
953
953
  - app/controllers/spree/api/v2/storefront/homepage_data_controller.rb
954
954
  - app/controllers/spree/api/v2/storefront/homepage_sections_controller.rb
955
955
  - app/controllers/spree/api/v2/storefront/id_cards_controller.rb
956
+ - app/controllers/spree/api/v2/storefront/intercity_taxi/draft_orders_controller.rb
956
957
  - app/controllers/spree/api/v2/storefront/inventory_items_controller.rb
957
958
  - app/controllers/spree/api/v2/storefront/line_item_qrs_controller.rb
958
959
  - app/controllers/spree/api/v2/storefront/line_items_controller.rb
@@ -1117,6 +1118,7 @@ files:
1117
1118
  - app/factory/spree_cm_commissioner/invite_guest_claimed_telegram_message_factory.rb
1118
1119
  - app/factory/spree_cm_commissioner/order_telegram_message_factory.rb
1119
1120
  - app/factory/spree_cm_commissioner/telegram_message_factory.rb
1121
+ - app/factory/spree_cm_commissioner/vendor_telegram_message_factory.rb
1120
1122
  - app/finders/spree_cm_commissioner/accommodations/find.rb
1121
1123
  - app/finders/spree_cm_commissioner/accommodations/find_variant.rb
1122
1124
  - app/finders/spree_cm_commissioner/orders/find.rb
@@ -1273,6 +1275,7 @@ files:
1273
1275
  - app/interactors/spree_cm_commissioner/variant_block_updater.rb
1274
1276
  - app/interactors/spree_cm_commissioner/vattanac_bank_initiator.rb
1275
1277
  - app/interactors/spree_cm_commissioner/vehicle_updater.rb
1278
+ - app/interactors/spree_cm_commissioner/vendor_creation_telegram_alert_sender.rb
1276
1279
  - app/interactors/spree_cm_commissioner/vendor_nearby_place_builder.rb
1277
1280
  - app/interactors/spree_cm_commissioner/vendor_updater.rb
1278
1281
  - app/interactors/spree_cm_commissioner/video_on_demand_creator.rb
@@ -1329,6 +1332,7 @@ files:
1329
1332
  - app/jobs/spree_cm_commissioner/transit/route_trip_count_incrementer_job.rb
1330
1333
  - app/jobs/spree_cm_commissioner/unique_device_token_cron_job.rb
1331
1334
  - app/jobs/spree_cm_commissioner/variants_public_metadata_updater_job.rb
1335
+ - app/jobs/spree_cm_commissioner/vendor_creation_telegram_alert_sender_job.rb
1332
1336
  - app/jobs/spree_cm_commissioner/vendor_job.rb
1333
1337
  - app/jobs/spree_cm_commissioner/waiting_guests_caller_job.rb
1334
1338
  - app/jobs/spree_cm_commissioner/waiting_room_latest_system_metadata_puller_job.rb
@@ -1876,6 +1880,8 @@ files:
1876
1880
  - app/serializers/spree_cm_commissioner/v2/storefront/homepage_banner_serializer.rb
1877
1881
  - app/serializers/spree_cm_commissioner/v2/storefront/homepage_data_serializer.rb
1878
1882
  - app/serializers/spree_cm_commissioner/v2/storefront/icon_serializer_decorator.rb
1883
+ - app/serializers/spree_cm_commissioner/v2/storefront/intercity_taxi_cart_serializer.rb
1884
+ - app/serializers/spree_cm_commissioner/v2/storefront/intercity_taxi_line_item_serializer.rb
1879
1885
  - app/serializers/spree_cm_commissioner/v2/storefront/inventory_item_serializer.rb
1880
1886
  - app/serializers/spree_cm_commissioner/v2/storefront/menu_item_serializer_decorator.rb
1881
1887
  - app/serializers/spree_cm_commissioner/v2/storefront/payment_method_group_serializer.rb
@@ -1942,6 +1948,8 @@ files:
1942
1948
  - app/services/spree_cm_commissioner/imports/base_import_order_service.rb
1943
1949
  - app/services/spree_cm_commissioner/imports/create_order_service.rb
1944
1950
  - app/services/spree_cm_commissioner/imports/update_order_service.rb
1951
+ - app/services/spree_cm_commissioner/intercity_taxi_order/create.rb
1952
+ - app/services/spree_cm_commissioner/intercity_taxi_order/update.rb
1945
1953
  - app/services/spree_cm_commissioner/metafields/product_metadata_service.rb
1946
1954
  - app/services/spree_cm_commissioner/order_params_checker.rb
1947
1955
  - app/services/spree_cm_commissioner/orders/generate_commissions_decorator.rb
@@ -1951,17 +1959,18 @@ files:
1951
1959
  - app/services/spree_cm_commissioner/penalty_calculator.rb
1952
1960
  - app/services/spree_cm_commissioner/role_permissions_constructor.rb
1953
1961
  - app/services/spree_cm_commissioner/role_permissions_loader.rb
1962
+ - app/services/spree_cm_commissioner/routes/base_update_order_metrics.rb
1963
+ - app/services/spree_cm_commissioner/routes/decrement_previous_trip_count.rb
1964
+ - app/services/spree_cm_commissioner/routes/decrement_trip_count.rb
1965
+ - app/services/spree_cm_commissioner/routes/increment_fulfilled_order_count.rb
1966
+ - app/services/spree_cm_commissioner/routes/increment_order_count.rb
1967
+ - app/services/spree_cm_commissioner/routes/increment_trip_count.rb
1954
1968
  - app/services/spree_cm_commissioner/rsa_service.rb
1955
1969
  - app/services/spree_cm_commissioner/seats/bulk_release_on_hold_blocks.rb
1956
1970
  - app/services/spree_cm_commissioner/seats/release_expired_blocks.rb
1957
1971
  - app/services/spree_cm_commissioner/seeds/roles_decorator.rb
1958
- - app/services/spree_cm_commissioner/transit/base_route_order_metrics_updater.rb
1959
1972
  - app/services/spree_cm_commissioner/transit/legs_builder_service.rb
1960
- - app/services/spree_cm_commissioner/transit/route_fulfilled_order_count_incrementer_service.rb
1961
- - app/services/spree_cm_commissioner/transit/route_order_count_incrementer_service.rb
1962
- - app/services/spree_cm_commissioner/transit/route_previous_trip_count_decrementer_service.rb
1963
- - app/services/spree_cm_commissioner/transit/route_trip_count_decrementer_service.rb
1964
- - app/services/spree_cm_commissioner/transit/route_trip_count_incrementer_service.rb
1973
+ - app/services/spree_cm_commissioner/trips/search.rb
1965
1974
  - app/services/spree_cm_commissioner/user_authenticator.rb
1966
1975
  - app/services/spree_cm_commissioner/user_roles_assigner.rb
1967
1976
  - app/services/spree_cm_commissioner/users/incomplete_guest_checker_service.rb
@@ -2077,6 +2086,7 @@ files:
2077
2086
  - app/views/spree/admin/notifications/index.html.erb
2078
2087
  - app/views/spree/admin/option_types/_array_field.html.erb
2079
2088
  - app/views/spree/admin/option_types/_boolean_field.html.erb
2089
+ - app/views/spree/admin/option_types/_color_field.html.erb
2080
2090
  - app/views/spree/admin/option_types/_coordinate_field.html.erb
2081
2091
  - app/views/spree/admin/option_types/_date_field.html.erb
2082
2092
  - app/views/spree/admin/option_types/_option_value_fields.html.erb
@@ -2155,6 +2165,7 @@ files:
2155
2165
  - app/views/spree/admin/user_security/show.html.erb
2156
2166
  - app/views/spree/admin/variant_guest_card_classes/_variant_guest_card_class.html.erb
2157
2167
  - app/views/spree/admin/variant_guest_card_classes/index.html.erb
2168
+ - app/views/spree/admin/variants/_color_field.html.erb
2158
2169
  - app/views/spree/admin/variants/_date_field.html.erb
2159
2170
  - app/views/spree/admin/variants/_default_field.html.erb
2160
2171
  - app/views/spree/admin/variants/_option_values.html.erb
@@ -2301,6 +2312,7 @@ files:
2301
2312
  - app/views/spree/layouts/error_template.html.erb
2302
2313
  - app/views/spree/layouts/event.html.erb
2303
2314
  - app/views/spree/layouts/transit.html.erb
2315
+ - app/views/spree/order_mailer/_adjustment.html.erb
2304
2316
  - app/views/spree/order_mailer/confirm_email.html.erb
2305
2317
  - app/views/spree/order_mailer/ticket_email.html.erb
2306
2318
  - app/views/spree/order_mailer/ticket_email.text.erb