spree_cm_commissioner 2.0.3.pre.pre6 → 2.0.3.pre.pre.pre7

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 (210) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test_and_build_gem.yml +2 -16
  3. data/.gitignore +1 -2
  4. data/Gemfile.lock +4 -39
  5. data/Rakefile +4 -33
  6. data/app/assets/stylesheets/spree_cm_commissioner/backend/calendar.scss +11 -8
  7. data/app/controllers/concerns/spree_cm_commissioner/transit/taxon_bitwise.rb +44 -0
  8. data/app/controllers/spree/admin/stock_managements_controller.rb +1 -63
  9. data/app/controllers/spree/api/v2/storefront/accommodations_controller.rb +31 -14
  10. data/app/controllers/spree/api/v2/storefront/dynamic_fields_controller.rb +42 -0
  11. data/app/controllers/spree/api/v2/storefront/guests_controller.rb +2 -0
  12. data/app/controllers/spree/api/v2/storefront/queue_cart/line_items_controller.rb +2 -2
  13. data/app/finders/spree_cm_commissioner/line_items/find_by_variant_decorator.rb +20 -0
  14. data/app/interactors/spree_cm_commissioner/create_vendor.rb +11 -1
  15. data/app/jobs/spree_cm_commissioner/application_job.rb +0 -20
  16. data/app/jobs/spree_cm_commissioner/application_unique_job.rb +0 -20
  17. data/app/models/concerns/spree_cm_commissioner/line_item_durationable.rb +15 -18
  18. data/app/models/concerns/spree_cm_commissioner/line_item_guests_concern.rb +15 -29
  19. data/app/models/concerns/spree_cm_commissioner/option_type_attr_type.rb +12 -2
  20. data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +0 -39
  21. data/app/models/concerns/spree_cm_commissioner/product_delegation.rb +3 -1
  22. data/app/models/concerns/spree_cm_commissioner/product_type.rb +0 -10
  23. data/app/models/concerns/spree_cm_commissioner/route_type.rb +1 -1
  24. data/app/models/spree_cm_commissioner/address_decorator.rb +2 -36
  25. data/app/models/spree_cm_commissioner/branch.rb +12 -0
  26. data/app/models/spree_cm_commissioner/guest.rb +85 -71
  27. data/app/models/spree_cm_commissioner/guest_dynamic_field.rb +37 -27
  28. data/app/models/spree_cm_commissioner/line_item_decorator.rb +78 -47
  29. data/app/models/spree_cm_commissioner/line_item_seat.rb +10 -0
  30. data/app/models/spree_cm_commissioner/notification_taxon.rb +1 -1
  31. data/app/models/spree_cm_commissioner/option_type_decorator.rb +11 -1
  32. data/app/models/spree_cm_commissioner/option_value_vehicle_type.rb +8 -0
  33. data/app/models/spree_cm_commissioner/order/address_book_decorator.rb +12 -30
  34. data/app/models/spree_cm_commissioner/order_decorator.rb +1 -38
  35. data/app/models/spree_cm_commissioner/place.rb +4 -3
  36. data/app/models/spree_cm_commissioner/product_decorator.rb +6 -10
  37. data/app/models/spree_cm_commissioner/service_calendar.rb +2 -0
  38. data/app/models/spree_cm_commissioner/state_decorator.rb +1 -0
  39. data/app/models/spree_cm_commissioner/stock/availability_checker.rb +25 -26
  40. data/app/models/spree_cm_commissioner/stock/availability_validator_decorator.rb +1 -2
  41. data/app/models/spree_cm_commissioner/stock/line_item_availability_checker.rb +3 -3
  42. data/app/models/spree_cm_commissioner/stock_item_decorator.rb +0 -17
  43. data/app/models/spree_cm_commissioner/stop.rb +23 -0
  44. data/app/models/spree_cm_commissioner/taxon_decorator.rb +1 -0
  45. data/app/models/spree_cm_commissioner/taxonomy_decorator.rb +6 -0
  46. data/app/models/spree_cm_commissioner/trip.rb +10 -19
  47. data/app/models/spree_cm_commissioner/trip_connection.rb +5 -5
  48. data/app/models/spree_cm_commissioner/trip_stop.rb +21 -10
  49. data/app/models/spree_cm_commissioner/user_decorator.rb +1 -1
  50. data/app/models/spree_cm_commissioner/variant_decorator.rb +47 -37
  51. data/app/models/spree_cm_commissioner/variant_options.rb +23 -0
  52. data/app/models/spree_cm_commissioner/vehicle.rb +16 -11
  53. data/app/models/spree_cm_commissioner/vehicle_seat.rb +11 -0
  54. data/app/models/spree_cm_commissioner/vehicle_type.rb +76 -0
  55. data/app/models/spree_cm_commissioner/vendor_decorator.rb +14 -14
  56. data/app/models/spree_cm_commissioner/vendor_place.rb +3 -13
  57. data/app/models/spree_cm_commissioner/vendor_stop.rb +10 -0
  58. data/app/queries/spree_cm_commissioner/trip_query.rb +131 -110
  59. data/app/queries/spree_cm_commissioner/trip_search_query.rb +76 -0
  60. data/app/queries/spree_cm_commissioner/variant_availability/non_permanent_stock_query.rb +45 -0
  61. data/app/queries/spree_cm_commissioner/variant_availability/permanent_stock_query.rb +55 -0
  62. data/app/queries/spree_cm_commissioner/vendor_stop_place_query.rb +54 -0
  63. data/app/request_schemas/spree_cm_commissioner/accommodation_request_schema.rb +0 -3
  64. data/app/request_schemas/spree_cm_commissioner/application_request_schema.rb +1 -1
  65. data/app/serializers/spree/v2/storefront/accommodation_serializer.rb +0 -2
  66. data/app/serializers/spree/v2/storefront/line_item_serializer_decorator.rb +0 -1
  67. data/app/serializers/spree_cm_commissioner/v2/storefront/guest_serializer.rb +1 -3
  68. data/app/services/spree_cm_commissioner/vehicle_option_value_creator.rb +11 -0
  69. data/app/views/spree/admin/stock_managements/_variant_stock_items.html.erb +2 -7
  70. data/app/views/spree/admin/stock_managements/index.html.erb +6 -55
  71. data/config/initializers/spree_permitted_attributes.rb +0 -5
  72. data/config/routes.rb +3 -24
  73. data/db/migrate/20240202080634_update_counter_cache_of_vehicle_type.rb +1 -3
  74. data/db/migrate/20250812121745_add_data_fill_stage_phase_to_cm_guests.rb +5 -0
  75. data/docker-compose.yml +1 -1
  76. data/lib/cm_app_logger.rb +4 -11
  77. data/lib/generators/spree_cm_commissioner/install/install_generator.rb +11 -14
  78. data/lib/generators/spree_cm_commissioner/install/templates/app/javascript/{spree_dashboard/spree_cm_commissioner → spree_cm_commissioner}/utilities.js +0 -4
  79. data/lib/spree_cm_commissioner/calendar_event.rb +1 -11
  80. data/lib/spree_cm_commissioner/test_helper/factories/branch_factory.rb +12 -0
  81. data/lib/spree_cm_commissioner/test_helper/factories/departure_time_option_type_factory.rb +8 -0
  82. data/lib/spree_cm_commissioner/test_helper/factories/duration_option_type_factory.rb +8 -0
  83. data/lib/spree_cm_commissioner/test_helper/factories/guest_factory.rb +0 -10
  84. data/lib/spree_cm_commissioner/test_helper/factories/homepage_section_relatable_factory.rb +1 -1
  85. data/lib/spree_cm_commissioner/test_helper/factories/line_item_factory.rb +1 -1
  86. data/lib/spree_cm_commissioner/test_helper/factories/line_item_seat_factory.rb +7 -0
  87. data/lib/spree_cm_commissioner/test_helper/factories/option_type_factory.rb +30 -6
  88. data/lib/spree_cm_commissioner/test_helper/factories/order_factory.rb +36 -0
  89. data/lib/spree_cm_commissioner/test_helper/factories/product_factory.rb +34 -18
  90. data/lib/spree_cm_commissioner/test_helper/factories/stock_location_factory.rb +2 -2
  91. data/lib/spree_cm_commissioner/test_helper/factories/stop_factory.rb +14 -0
  92. data/lib/spree_cm_commissioner/test_helper/factories/transit_place_factory.rb +8 -0
  93. data/lib/spree_cm_commissioner/test_helper/factories/trip_factory.rb +3 -11
  94. data/lib/spree_cm_commissioner/test_helper/factories/variant_factory.rb +19 -41
  95. data/lib/spree_cm_commissioner/test_helper/factories/vehicle_factory.rb +1 -1
  96. data/lib/spree_cm_commissioner/test_helper/factories/vehicle_option_type_factory.rb +8 -0
  97. data/lib/spree_cm_commissioner/test_helper/factories/vehicle_type_factory.rb +96 -0
  98. data/lib/spree_cm_commissioner/test_helper/factories/vendor_factory.rb +1 -6
  99. data/lib/spree_cm_commissioner/test_helper/factories/vendor_place_factory.rb +1 -13
  100. data/lib/spree_cm_commissioner/trip_query_result.rb +0 -50
  101. data/lib/spree_cm_commissioner/trip_result.rb +10 -19
  102. data/lib/spree_cm_commissioner/trip_seat_layout_result.rb +11 -0
  103. data/lib/spree_cm_commissioner/version.rb +1 -1
  104. data/lib/spree_cm_commissioner.rb +1 -37
  105. data/spree_cm_commissioner.gemspec +0 -7
  106. metadata +28 -163
  107. data/app/controllers/spree/admin/inventory_items_controller.rb +0 -83
  108. data/app/controllers/spree/api/v2/storefront/accommodations/variants_controller.rb +0 -42
  109. data/app/controllers/spree/api/v2/storefront/trip_places_controller.rb +0 -29
  110. data/app/controllers/spree/api/v2/storefront/trip_search_controller.rb +0 -62
  111. data/app/finders/spree_cm_commissioner/accommodations/find.rb +0 -37
  112. data/app/finders/spree_cm_commissioner/accommodations/find_variant.rb +0 -32
  113. data/app/interactors/spree_cm_commissioner/ensure_correct_product_type.rb +0 -40
  114. data/app/interactors/spree_cm_commissioner/inventory_item_syncer.rb +0 -25
  115. data/app/interactors/spree_cm_commissioner/stock/inventory_item_resetter.rb +0 -44
  116. data/app/interactors/spree_cm_commissioner/stock/inventory_items_adjuster.rb +0 -13
  117. data/app/interactors/spree_cm_commissioner/stock/inventory_items_generator.rb +0 -15
  118. data/app/interactors/spree_cm_commissioner/stock/permanent_inventory_items_generator.rb +0 -75
  119. data/app/interactors/spree_cm_commissioner/stock/stock_movement_creator.rb +0 -32
  120. data/app/interactors/spree_cm_commissioner/taxi_trip_creator.rb +0 -66
  121. data/app/interactors/spree_cm_commissioner/transit/draft_order_creator.rb +0 -132
  122. data/app/interactors/spree_cm_commissioner/variant_block_updater.rb +0 -62
  123. data/app/interactors/spree_cm_commissioner/vehicle_updater.rb +0 -41
  124. data/app/jobs/spree_cm_commissioner/ensure_correct_product_type_job.rb +0 -7
  125. data/app/jobs/spree_cm_commissioner/inventory_item_syncer_job.rb +0 -7
  126. data/app/jobs/spree_cm_commissioner/stock/inventory_items_adjuster_job.rb +0 -11
  127. data/app/jobs/spree_cm_commissioner/stock/inventory_items_generator_job.rb +0 -11
  128. data/app/jobs/spree_cm_commissioner/stock/permanent_inventory_items_generator_job.rb +0 -9
  129. data/app/models/concerns/spree_cm_commissioner/line_item_transitable.rb +0 -89
  130. data/app/models/concerns/spree_cm_commissioner/order_seatable.rb +0 -44
  131. data/app/models/concerns/spree_cm_commissioner/vehicle_type.rb +0 -11
  132. data/app/models/spree_cm_commissioner/block.rb +0 -43
  133. data/app/models/spree_cm_commissioner/inventory.rb +0 -11
  134. data/app/models/spree_cm_commissioner/inventory_item.rb +0 -69
  135. data/app/models/spree_cm_commissioner/price_decorator.rb +0 -9
  136. data/app/models/spree_cm_commissioner/redis_stock/cached_inventory_items_builder.rb +0 -41
  137. data/app/models/spree_cm_commissioner/redis_stock/inventory_updater.rb +0 -126
  138. data/app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb +0 -36
  139. data/app/models/spree_cm_commissioner/redis_stock/variant_cached_inventory_items_builder.rb +0 -25
  140. data/app/models/spree_cm_commissioner/reserved_block.rb +0 -30
  141. data/app/models/spree_cm_commissioner/saved_guest.rb +0 -15
  142. data/app/models/spree_cm_commissioner/seat_layout.rb +0 -20
  143. data/app/models/spree_cm_commissioner/seat_section.rb +0 -16
  144. data/app/models/spree_cm_commissioner/seats/blocks_canceler.rb +0 -30
  145. data/app/models/spree_cm_commissioner/seats/blocks_holder.rb +0 -53
  146. data/app/models/spree_cm_commissioner/seats/blocks_reserver.rb +0 -49
  147. data/app/models/spree_cm_commissioner/seats/errors/blocks_are_on_hold_by_other_guest.rb +0 -4
  148. data/app/models/spree_cm_commissioner/seats/errors/blocks_are_reserved_by_other_guest.rb +0 -4
  149. data/app/models/spree_cm_commissioner/seats/errors/blocks_are_reserved_by_same_guest.rb +0 -4
  150. data/app/models/spree_cm_commissioner/seats/errors/unable_to_save_reserved_block_record.rb +0 -4
  151. data/app/models/spree_cm_commissioner/stock/order_availability_checker.rb +0 -44
  152. data/app/models/spree_cm_commissioner/variant_block.rb +0 -17
  153. data/app/request_schemas/spree_cm_commissioner/trip_search_request_schema.rb +0 -20
  154. data/app/request_schemas/spree_cm_commissioner/variant_request_schema.rb +0 -19
  155. data/app/serializers/spree/v2/storefront/amenity_serializer.rb +0 -15
  156. data/app/serializers/spree/v2/storefront/trip_place_serializer.rb +0 -10
  157. data/app/serializers/spree/v2/storefront/trip_query_result_serializer.rb +0 -14
  158. data/app/serializers/spree/v2/storefront/trip_result_serializer.rb +0 -17
  159. data/app/serializers/spree/v2/storefront/trip_vehicle_serializer.rb +0 -11
  160. data/app/serializers/spree/v2/storefront/trip_vendor_serializer.rb +0 -13
  161. data/app/views/spree/admin/inventory_items/show.html.erb +0 -72
  162. data/app/views/spree/admin/stock_managements/calendar.html.erb +0 -56
  163. data/config/initializers/paper_trail.rb +0 -1
  164. data/db/migrate/20250122000000_move_route_type_from_vehicles_to_trips.rb +0 -7
  165. data/db/migrate/20250304293518_create_cm_inventory_items.rb +0 -21
  166. data/db/migrate/20250429094228_add_lock_version_to_cm_inventory_items.rb +0 -5
  167. data/db/migrate/20250502025848_add_index_to_spree_products.rb +0 -5
  168. data/db/migrate/20250502030001_add_product_type_to_spree_variants.rb +0 -5
  169. data/db/migrate/20250502030002_add_product_type_to_spree_line_items.rb +0 -5
  170. data/db/migrate/20250603035256_add_inventory_item_to_spree_prices.rb +0 -7
  171. data/db/migrate/20250619073724_drop_table_cm_line_item_seats.rb +0 -5
  172. data/db/migrate/20250619073812_drop_table_cm_vehicle_seats.rb +0 -5
  173. data/db/migrate/20250619073844_drop_table_cm_vehicle_types.rb +0 -9
  174. data/db/migrate/20250619073957_drop_table_cm_option_value_vehicle_types.rb +0 -5
  175. data/db/migrate/20250619082354_remove_unnecessary_fields_from_cm_places.rb +0 -9
  176. data/db/migrate/20250619082736_remove_route_type_from_spree_products.rb +0 -5
  177. data/db/migrate/20250619083055_remove_unnecessary_fields_from_spree_taxons.rb +0 -5
  178. data/db/migrate/20250620083055_remove_variant_id_from_cm_trips.rb +0 -5
  179. data/db/migrate/20250620090000_update_cm_trip_connections_to_use_cm_trips.rb +0 -6
  180. data/db/migrate/20250620090001_create_cm_seat_layouts.rb +0 -17
  181. data/db/migrate/20250620090002_create_cm_seat_sections.rb +0 -18
  182. data/db/migrate/20250620090003_create_cm_blocks.rb +0 -18
  183. data/db/migrate/20250624091005_create_cm_reserved_blocks.rb +0 -29
  184. data/db/migrate/20250626083642_create_cm_variant_blocks.rb +0 -24
  185. data/db/migrate/20250627023314_add_block_id_to_cm_guests.rb +0 -13
  186. data/db/migrate/20250716022821_add_location_reference_to_cm_vendor_places.rb +0 -5
  187. data/db/migrate/20250716031743_drop_table_cm_vendor_stops.rb +0 -5
  188. data/db/migrate/20250717023824_add_vendor_reference_to_cm_trips.rb +0 -5
  189. data/db/migrate/20250717041414_add_location_place_reference_to_cm_trip_stops.rb +0 -5
  190. data/db/migrate/20250717042539_rename_cm_trip_stops_stop_id_column_to_stop_place_id.rb +0 -7
  191. data/db/migrate/20250717042707_rename_cm_trips_origin_and_destination_to_origin_place_and_destination_place.rb +0 -11
  192. data/db/migrate/20250721080738_add_vehicle_type_to_cm_vehicles.rb +0 -7
  193. data/db/migrate/20250725092713_add_block_type_to_cm_blocks.rb +0 -5
  194. data/db/migrate/20250731062816_add_departure_time_and_arrival_time_to_trip_stop.rb +0 -6
  195. data/db/migrate/20250807033035_create_spree_cm_commissioner_saved_guests.rb +0 -23
  196. data/db/migrate/20250808054835_add_saved_guest_reference_to_cm_blocks.rb +0 -5
  197. data/lib/spree_cm_commissioner/cached_inventory_item.rb +0 -23
  198. data/lib/spree_cm_commissioner/test_helper/factories/block_factory.rb +0 -16
  199. data/lib/spree_cm_commissioner/test_helper/factories/inventory_item_factory.rb +0 -9
  200. data/lib/spree_cm_commissioner/test_helper/factories/reserved_block_factory.rb +0 -27
  201. data/lib/spree_cm_commissioner/test_helper/factories/seat_layout_factory.rb +0 -11
  202. data/lib/spree_cm_commissioner/test_helper/factories/seat_section_factory.rb +0 -16
  203. data/lib/spree_cm_commissioner/test_helper/factories/trip_connection_factory.rb +0 -6
  204. data/lib/spree_cm_commissioner/test_helper/factories/trip_stop_factory.rb +0 -13
  205. data/lib/spree_cm_commissioner/test_helper/factories/variant_block_factory.rb +0 -7
  206. data/lib/spree_cm_commissioner/transit/leg.rb +0 -37
  207. data/lib/spree_cm_commissioner/transit/seat_selection.rb +0 -27
  208. data/lib/tasks/create_default_non_permanent_inventory_items.rake +0 -16
  209. data/lib/tasks/ensure_correct_product_type.rake +0 -7
  210. data/lib/tasks/generate_inventory_items.rake +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3386c245e402dd11660e1215a50dac52acfd59950f95afb03117bff6c56053a5
4
- data.tar.gz: 551927bdc54caee21d0ca26601c2d42b5ee0cd14b5c4264da1a5ae3968270d4d
3
+ metadata.gz: 40333398b1c99d171c10d9a492997548b47564457bebb9acd63e6ccc772d452e
4
+ data.tar.gz: f63faf26e0692314727b1b7ec1c7b136cc6c524103841b662dca80b2ecf3b1c4
5
5
  SHA512:
6
- metadata.gz: f8c9f527ea17e43fabfcf7ecba55e70887a51a31a85849e918cf508cc8bc8d6a3b6f6165f534139fad9704902a7aea8875b58798514caf63882b2914534cc693
7
- data.tar.gz: ca8d78212f84afd5091ac23617a88d49b096cc526e84a3aedc2c9b432fe02aaf55546a5a54bfe8c0704be30a72050d01c7be88a505b37abea3f4d634a1829ea5
6
+ metadata.gz: 7795b3fb7ceea60d329929f2f2675a9e3732733e2c61405cd269d663f345bffc2d7362e7943e89d2e2051a82d07bfc56beb9f7d8717d8205e96b7db0cc61c4f9
7
+ data.tar.gz: 657f01f615ed198403d66bb6dfb2f507d0f7c1e4cb5081cf6cc2ba16b968b73214476a09fb4bc930039592150e8d4bb6c64ade0824cae0565a4f6416e4f8ee4d
@@ -10,7 +10,6 @@ on:
10
10
  - reopened
11
11
  branches:
12
12
  - develop
13
- - milestone-77-scalable-design
14
13
  push:
15
14
  tags:
16
15
  - "*"
@@ -38,8 +37,7 @@ jobs:
38
37
  console.log("PR title format is correct.");
39
38
  }
40
39
  - name: Check commit messages format
41
- # skip validation if the PR is from the milestone-77-scalable-design branch for temporary
42
- if: github.event_name == 'pull_request' && github.head_ref != 'milestone-77-scalable-design'
40
+ if: github.event_name == 'pull_request'
43
41
  uses: actions/github-script@v7
44
42
  with:
45
43
  script: |
@@ -138,17 +136,6 @@ jobs:
138
136
  --health-timeout 5s
139
137
  --health-retries 5
140
138
 
141
- redis:
142
- image: redis
143
- # Set health checks to wait until redis has started
144
- options: >-
145
- --health-cmd "redis-cli ping"
146
- --health-interval 10s
147
- --health-timeout 5s
148
- --health-retries 5
149
- ports:
150
- - 6379:6379 # Maps port 6379 on service container to the host
151
-
152
139
  steps:
153
140
  - uses: actions/checkout@v3
154
141
 
@@ -184,9 +171,8 @@ jobs:
184
171
  - name: Run test
185
172
  env:
186
173
  DATABASE_URL: postgres://myuser:mypassword@localhost:5432/test_db
187
- REDIS_URL: redis://localhost:6379/0
188
174
 
189
- if: github.event_name == 'pull_request'
175
+ if: github.event_name == 'pull_request' && github.event.pull_request.base.ref == 'develop'
190
176
  run: |
191
177
  bundle exec rake
192
178
 
data/.gitignore CHANGED
@@ -28,5 +28,4 @@ node_modules
28
28
  # VScode
29
29
  .vscode
30
30
  !.vscode/.settings.json
31
- .env
32
- vendor/bundle/
31
+ .env
data/Gemfile.lock CHANGED
@@ -34,7 +34,7 @@ GIT
34
34
  PATH
35
35
  remote: .
36
36
  specs:
37
- spree_cm_commissioner (2.0.3.pre.pre6)
37
+ spree_cm_commissioner (2.0.3.pre.pre.pre7)
38
38
  activerecord-multi-tenant
39
39
  activerecord_json_validator (~> 2.1, >= 2.1.3)
40
40
  aws-sdk-cloudfront
@@ -42,7 +42,6 @@ PATH
42
42
  aws-sdk-s3
43
43
  blazer (~> 3.0.4)
44
44
  byebug
45
- connection_pool
46
45
  counter_culture (~> 3.2)
47
46
  dry-validation (~> 1.10)
48
47
  elasticsearch (~> 8.5)
@@ -55,12 +54,9 @@ PATH
55
54
  interactor (~> 3.1)
56
55
  jwt (>= 2.5.0)
57
56
  noticed (~> 1.6)
58
- paper_trail (~> 16.0)
59
57
  phonelib
60
58
  premailer-rails
61
59
  rails (~> 7.0.4)
62
- redis
63
- redis-rails
64
60
  rqrcode (~> 2.0)
65
61
  searchkick (~> 5.1)
66
62
  simple_calendar (~> 2.4)
@@ -450,7 +446,6 @@ GEM
450
446
  google-cloud-recaptcha_enterprise-v1beta1 (0.10.0)
451
447
  gapic-common (>= 0.20.0, < 2.a)
452
448
  google-cloud-errors (~> 1.0)
453
- google-protobuf (3.25.8)
454
449
  google-protobuf (3.25.8-x86_64-darwin)
455
450
  google-protobuf (3.25.8-x86_64-linux)
456
451
  googleapis-common-protos (1.4.0)
@@ -465,9 +460,6 @@ GEM
465
460
  multi_json (~> 1.11)
466
461
  os (>= 0.9, < 2.0)
467
462
  signet (>= 0.16, < 2.a)
468
- grpc (1.72.0)
469
- google-protobuf (>= 3.25, < 5.0)
470
- googleapis-common-protos-types (~> 1.0)
471
463
  grpc (1.72.0-x86_64-darwin)
472
464
  google-protobuf (>= 3.25, < 5.0)
473
465
  googleapis-common-protos-types (~> 1.0)
@@ -555,7 +547,6 @@ GEM
555
547
  method_source (1.0.0)
556
548
  mini_magick (4.12.0)
557
549
  mini_mime (1.1.5)
558
- mini_portile2 (2.8.4)
559
550
  minitest (5.20.0)
560
551
  monetize (1.12.0)
561
552
  money (~> 6.12)
@@ -573,12 +564,9 @@ GEM
573
564
  net-smtp (0.4.0)
574
565
  net-protocol
575
566
  nio4r (2.5.9)
576
- nokogiri (1.15.4)
577
- mini_portile2 (~> 2.8.2)
578
- racc (~> 1.4)
579
- nokogiri (1.15.4-x86_64-darwin)
567
+ nokogiri (1.18.9-x86_64-darwin)
580
568
  racc (~> 1.4)
581
- nokogiri (1.15.4-x86_64-linux)
569
+ nokogiri (1.18.9-x86_64-linux-gnu)
582
570
  racc (~> 1.4)
583
571
  noticed (1.6.3)
584
572
  http (>= 4.0.0)
@@ -588,9 +576,6 @@ GEM
588
576
  sawyer (~> 0.9)
589
577
  orm_adapter (0.5.0)
590
578
  os (1.1.4)
591
- paper_trail (16.0.0)
592
- activerecord (>= 6.1)
593
- request_store (~> 1.4)
594
579
  parallel (1.23.0)
595
580
  paranoia (2.6.3)
596
581
  activerecord (>= 5.1, < 7.2)
@@ -626,8 +611,6 @@ GEM
626
611
  activesupport (>= 2.3.14)
627
612
  racc (1.7.1)
628
613
  rack (2.2.8)
629
- rack-session (1.0.2)
630
- rack (< 3)
631
614
  rack-test (2.1.0)
632
615
  rack (>= 1.3)
633
616
  rails (7.0.8)
@@ -671,31 +654,13 @@ GEM
671
654
  rbtree (0.4.6)
672
655
  redis (5.0.7)
673
656
  redis-client (>= 0.9.0)
674
- redis-actionpack (5.5.0)
675
- actionpack (>= 5)
676
- redis-rack (>= 2.1.0, < 4)
677
- redis-store (>= 1.1.0, < 2)
678
- redis-activesupport (5.3.0)
679
- activesupport (>= 3, < 8)
680
- redis-store (>= 1.3, < 2)
681
657
  redis-client (0.17.0)
682
658
  connection_pool
683
- redis-rack (3.0.0)
684
- rack-session (>= 0.2.0)
685
- redis-store (>= 1.2, < 2)
686
- redis-rails (5.0.2)
687
- redis-actionpack (>= 5.0, < 6)
688
- redis-activesupport (>= 5.0, < 6)
689
- redis-store (>= 1.2, < 2)
690
- redis-store (1.11.0)
691
- redis (>= 4, < 6)
692
659
  regexp_parser (2.8.2)
693
660
  representable (3.2.0)
694
661
  declarative (< 0.1.0)
695
662
  trailblazer-option (>= 0.1.1, < 0.2.0)
696
663
  uber (< 0.2.0)
697
- request_store (1.7.0)
698
- rack (>= 1.4)
699
664
  responders (3.1.1)
700
665
  actionpack (>= 5.2)
701
666
  railties (>= 5.2)
@@ -957,11 +922,11 @@ GEM
957
922
  zeitwerk (2.6.12)
958
923
 
959
924
  PLATFORMS
960
- ruby
961
925
  x86_64-darwin-19
962
926
  x86_64-darwin-20
963
927
  x86_64-darwin-21
964
928
  x86_64-darwin-22
929
+ x86_64-darwin-23
965
930
  x86_64-linux
966
931
 
967
932
  DEPENDENCIES
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'bundler'
2
2
  Bundler::GemHelper.install_tasks
3
3
 
4
4
  require 'rspec/core/rake_task'
5
- require 'spree/testing_support/common_rake'
5
+ require 'spree/testing_support/extension_rake'
6
6
 
7
7
  RSpec::Core::RakeTask.new
8
8
 
@@ -14,37 +14,8 @@ task :default do
14
14
  Rake::Task[:spec].invoke
15
15
  end
16
16
 
17
- # Copied from:
18
- # spree_core:lib/spree/testing_support/common_rake.rb
19
- # But refactored to skip frontend & backend setup.
20
17
  desc 'Generates a dummy app for testing'
21
- task :test_app do |_t, args|
22
- require 'spree_cm_commissioner'
23
- require "generators/spree_cm_commissioner/install/install_generator"
24
-
25
- Rails.env = ENV['RAILS_ENV'] = 'test'
26
-
27
- Spree::DummyGeneratorHelper.inject_extension_requirements = true
28
- Spree::DummyGenerator.start ["--lib_name=spree_cm_commissioner", '--quiet']
29
- Spree::InstallGenerator.start [
30
- "--lib_name=spree_cm_commissioner",
31
- '--auto-accept',
32
- '--migrate=false',
33
- '--seed=false',
34
- '--sample=false',
35
- '--quiet',
36
- '--copy_storefront=false',
37
- "--install_storefront=false",
38
- "--install_admin=false",
39
- "--user_class=Spree::User"
40
- ]
41
-
42
- puts 'Setting up dummy database...'
43
- system('bin/rails db:environment:set RAILS_ENV=test')
44
- system('bundle exec rake db:drop db:create')
45
- Spree::DummyModelGenerator.start
46
- system('bundle exec rake db:migrate')
47
-
48
- puts 'Running extension installation generator...'
49
- SpreeCmCommissioner::Generators::InstallGenerator.start(['--auto-run-migrations'])
18
+ task :test_app do
19
+ ENV['LIB_NAME'] = 'spree_cm_commissioner'
20
+ Rake::Task['extension:test_app'].invoke
50
21
  end
@@ -55,9 +55,8 @@ $day-background: theme-color("light");
55
55
  }
56
56
  }
57
57
 
58
- .wday-0 {
59
- background-color: darken($day-background, 5%);
60
- }
58
+ // .wday-0 {
59
+ // }
61
60
 
62
61
  // .wday-1 {
63
62
  // }
@@ -74,9 +73,8 @@ $day-background: theme-color("light");
74
73
  // .wday-5 {
75
74
  // }
76
75
 
77
- .wday-6 {
78
- background-color: darken($day-background, 5%);
79
- }
76
+ // .wday-6 {
77
+ // }
80
78
 
81
79
  // .today {
82
80
  // }
@@ -88,7 +86,9 @@ $day-background: theme-color("light");
88
86
  // }
89
87
 
90
88
  // known as active-date
91
- // .start-date {}
89
+ .start-date {
90
+ background-color: darken($day-background, 5%);
91
+ }
92
92
 
93
93
  // .prev-month {
94
94
  // }
@@ -159,8 +159,11 @@ $day-background: theme-color("light");
159
159
 
160
160
  // .current-month {}
161
161
  .has-events {
162
+ background-color: lighten(theme-color("warning"), 30%);
163
+ color: darken(theme-color("warning"), 50%);
164
+
162
165
  @include hover {
163
- background-color: rgba($dark, 0.1);
166
+ background-color: theme-color("warning");
164
167
  }
165
168
  }
166
169
 
@@ -0,0 +1,44 @@
1
+ module SpreeCmCommissioner
2
+ module Transit
3
+ module TaxonBitwise
4
+ extend ActiveSupport::Concern
5
+
6
+ BIT_STOP = 0b001
7
+ BIT_STATION = 0b010
8
+ BIT_BRANCH = 0b100
9
+ BIT_LOCATION = 0b1000
10
+
11
+ included do
12
+ attr_accessor :stop, :station, :branch, :location
13
+
14
+ before_validation :at_least_one_checkbox_selected
15
+ end
16
+
17
+ def stop?
18
+ data_type & BIT_STOP != 0
19
+ end
20
+
21
+ def station?
22
+ data_type & BIT_STATION != 0
23
+ end
24
+
25
+ def branch?
26
+ data_type & BIT_BRANCH != 0
27
+ end
28
+
29
+ def location?
30
+ data_type & BIT_LOCATION != 0
31
+ end
32
+
33
+ private
34
+
35
+ def at_least_one_checkbox_selected
36
+ if stop.nil? && station.nil? && branch.nil? && location.nil?
37
+ nil
38
+ elsif stop.to_i.zero? && station.to_i.zero? && branch.to_i.zero? && location.to_i.zero?
39
+ errors.add(:base, 'At least one checkbox (stop, branch, or location) must be selected')
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -5,8 +5,6 @@ module Spree
5
5
 
6
6
  before_action :load_parent
7
7
 
8
- helper_method :inventory_item_message
9
-
10
8
  def load_parent
11
9
  @product = Spree::Product.find_by(slug: params[:product_id])
12
10
  end
@@ -14,59 +12,9 @@ module Spree
14
12
  def index
15
13
  @variants = @product.variants.includes(:images, stock_items: :stock_location, option_values: :option_type)
16
14
  @variants = [@product.master] if @variants.empty?
17
- @stock_locations = (@variants.flat_map(&:stock_locations) + @product.vendor.stock_locations).uniq
18
-
19
- load_inventories unless @product.permanent_stock?
20
- end
21
-
22
- def create
23
- result = SpreeCmCommissioner::Stock::StockMovementCreator.call(
24
- variant_id: params[:variant_id],
25
- stock_location_id: params[:stock_location_id],
26
- current_store: current_store,
27
- stock_movement_params: stock_movement_params
28
- )
29
-
30
- if result.success?
31
- flash[:success] = flash_message_for(result.stock_movement, :successfully_created)
32
- else
33
- flash[:error] = result.message
34
- end
35
-
36
- redirect_back fallback_location: admin_product_stock_managements_path(@product)
37
- end
38
-
39
- # GET /products/:slug/stock_managements/calendar?year=
40
- def calendar
41
- @year = params[:year].present? ? params[:year].to_i : Time.zone.today.year
42
15
 
43
- from_date = Date.new(@year, 1, 1).beginning_of_year
44
- to_date = Date.new(@year, 1, 1).end_of_year
45
-
46
- @inventory_items = @product.inventory_items.includes(:variant, :prices).where(inventory_date: from_date..to_date).to_a
47
- @cached_inventory_items = ::SpreeCmCommissioner::RedisStock::CachedInventoryItemsBuilder.new(@inventory_items)
48
- .call
49
- .index_by(&:inventory_item_id)
50
- @events = SpreeCmCommissioner::CalendarEvent.from_inventory_items(@inventory_items)
51
- end
52
-
53
- def inventory_item_message(inventory_item, cached_inventory_item)
54
- synced = inventory_item.quantity_available == cached_inventory_item.quantity_available
55
-
56
- if synced
57
- "Synced: Quantity available matches in both DB and Redis (#{cached_inventory_item.quantity_available})."
58
- else
59
- "Out of sync: Redis shows #{cached_inventory_item.quantity_available} available, which doesn't match the database."
60
- end
61
- end
62
-
63
- private
16
+ @stock_locations = (@variants.flat_map(&:stock_locations) + @product.vendor.stock_locations).uniq
64
17
 
65
- def load_inventories
66
- @inventory_items = @product.inventory_items.group_by { |item| item.variant.id }
67
- @cached_inventory_items = ::SpreeCmCommissioner::RedisStock::CachedInventoryItemsBuilder.new(@product.inventory_items)
68
- .call
69
- .index_by(&:inventory_item_id)
70
18
  @reserved_stocks = Spree::LineItem
71
19
  .complete
72
20
  .where(variant_id: @variants.pluck(:id))
@@ -77,16 +25,6 @@ module Spree
77
25
  def model_class
78
26
  Spree::StockItem
79
27
  end
80
-
81
- # This method processes the parameters for stock movement creation.
82
- # Expected attributes for `stock_movement` include:
83
- # - :quantity (Integer): The quantity of stock to move.
84
- # - :action (String): The type of stock movement (e.g., "add" or "remove").
85
- # - :originator_id, :originator_ty (String, optional): The ID and type of the entity creating the stock movement.
86
- # Ensure that `permitted_stock_movement_attributes` is updated to reflect any changes.
87
- def stock_movement_params
88
- params.require(:stock_movement).permit(permitted_stock_movement_attributes)
89
- end
90
28
  end
91
29
  end
92
30
  end
@@ -5,38 +5,55 @@ module Spree
5
5
  class AccommodationsController < ::Spree::Api::V2::ResourceController
6
6
  private
7
7
 
8
- # override
9
8
  def collection
10
- @collection ||= SpreeCmCommissioner::Accommodations::Find.new(
11
- from_date: params[:from_date]&.to_date,
12
- to_date: params[:to_date]&.to_date,
13
- state_id: params[:province_id],
14
- number_of_adults: params[:adult].to_i,
15
- number_of_kids: params[:children].to_i
16
- ).execute
9
+ @collection ||= collection_finder.call(params: params).value
10
+ end
11
+
12
+ def paginated_collection
13
+ return @paginated_collection if defined?(@paginated_collection)
14
+
15
+ @paginated_collection = super
16
+ @paginated_collection = apply_service_availability(@paginated_collection)
17
17
  end
18
18
 
19
- # override
20
19
  def resource
21
- @resource ||= collection.find_by!(slug: params[:id])
20
+ resource = resource_finder.call(params: params).value
21
+ raise ActiveRecord::RecordNotFound if resource.nil?
22
+
23
+ apply_service_availability(resource)
24
+ end
25
+
26
+ def apply_service_availability(resource)
27
+ SpreeCmCommissioner::ApplyServiceAvailability.call(calendarable: resource,
28
+ from_date: params[:from_date].to_date,
29
+ to_date: params[:to_date].to_date
30
+ ).value
22
31
  end
23
32
 
24
- # override
25
33
  def allowed_sort_attributes
26
34
  super << :min_price << :max_price
27
35
  end
28
36
 
29
- # override
37
+ def model_class
38
+ Spree::Vendor
39
+ end
40
+
30
41
  def resource_serializer
31
42
  Spree::V2::Storefront::AccommodationSerializer
32
43
  end
33
44
 
34
- # override
35
45
  def collection_serializer
36
46
  Spree::V2::Storefront::AccommodationSerializer
37
47
  end
38
48
 
39
- # override
49
+ def collection_finder
50
+ SpreeCmCommissioner::AccommodationSearchDetail
51
+ end
52
+
53
+ def resource_finder
54
+ SpreeCmCommissioner::AccommodationSearchDetail
55
+ end
56
+
40
57
  def required_schema
41
58
  SpreeCmCommissioner::AccommodationRequestSchema
42
59
  end
@@ -0,0 +1,42 @@
1
+ module Spree
2
+ module Api
3
+ module V2
4
+ module Storefront
5
+ class DynamicFieldsController < ::Spree::Api::V2::ResourceController
6
+ before_action :load_product
7
+
8
+ # override
9
+ def collection
10
+ return @collection if defined?(@collection)
11
+
12
+ dynamic_fields = @product.dynamic_fields
13
+ if params[:phase].present?
14
+ requested_phase = params[:phase].to_s
15
+ if SpreeCmCommissioner::DynamicField.data_fill_stages.key?(requested_phase)
16
+ dynamic_fields = dynamic_fields.where(data_fill_stage: requested_phase)
17
+ end
18
+ end
19
+
20
+ @collection = dynamic_fields.order(:position)
21
+ end
22
+
23
+ private
24
+
25
+ def load_product
26
+ return render_error_payload({ error: 'product_id is required' }, 400) if params[:product_id].blank?
27
+
28
+ @product ||= Spree::Product.find(params[:product_id])
29
+ end
30
+
31
+ def collection_serializer
32
+ SpreeCmCommissioner::V2::Storefront::DynamicFieldSerializer
33
+ end
34
+
35
+ def model_class
36
+ SpreeCmCommissioner::DynamicField
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -29,6 +29,7 @@ module Spree
29
29
  resource = scope.new(guest_params)
30
30
 
31
31
  if resource.save
32
+ resource.save_and_move_to_next_stage
32
33
  render_serialized_payload(201) { serialize_resource(resource) }
33
34
  else
34
35
  render_error_payload(resource.errors, 400)
@@ -54,6 +55,7 @@ module Spree
54
55
  resource.save!
55
56
  end
56
57
 
58
+ resource.save_and_move_to_next_stage
57
59
  render_serialized_payload { serialize_resource(resource) }
58
60
  rescue ActiveRecord::RecordInvalid => e
59
61
  render_error_payload(e.record.errors, 400)
@@ -12,9 +12,9 @@ module Spree
12
12
  spree_authorize! :update, spree_current_order, order_token
13
13
  spree_authorize! :show, @variant
14
14
 
15
- availability_checker = SpreeCmCommissioner::Stock::AvailabilityChecker.new(@variant, add_item_params[:options])
15
+ availability_checker = SpreeCmCommissioner::Stock::AvailabilityChecker.new(@variant)
16
16
 
17
- unless availability_checker.can_supply?(add_item_params[:quantity].to_i)
17
+ unless availability_checker.can_supply?(add_item_params[:quantity].to_i, add_item_params[:options])
18
18
  return render_error_payload(availability_checker.error_message || I18n.t('variant_availability.items_out_of_stock'))
19
19
  end
20
20
 
@@ -0,0 +1,20 @@
1
+ module SpreeCmCommissioner
2
+ module LineItems
3
+ module FindByVariantDecorator
4
+ # ovveride
5
+ def execute(order:, variant:, options: {})
6
+ return super unless variant.product.product_type == 'transit'
7
+
8
+ order.line_items.detect do |line_item|
9
+ next if options[:date].present? && !(line_item.variant_id == variant.id && line_item.date == options[:date])
10
+
11
+ Spree::Dependencies.cart_compare_line_items_service.constantize.call(order: order, line_item: line_item, options: options).value
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+
18
+ unless Spree::LineItems::FindByVariant.included_modules.include?(SpreeCmCommissioner::LineItems::FindByVariantDecorator)
19
+ Spree::LineItems::FindByVariant.prepend(SpreeCmCommissioner::LineItems::FindByVariantDecorator)
20
+ end
@@ -8,6 +8,7 @@ module SpreeCmCommissioner
8
8
  ActiveRecord::Base.transaction do
9
9
  create_vendor
10
10
  assign_vendor_to_user
11
+ create_logo
11
12
  create_role
12
13
  end
13
14
  end
@@ -30,9 +31,18 @@ module SpreeCmCommissioner
30
31
  context.user.vendors << @vendor
31
32
  end
32
33
 
34
+ def create_logo
35
+ return if context.logo.blank?
36
+
37
+ vendor_logo = SpreeCmCommissioner::VendorLogo.create(viewable: @vendor, attachment: context.logo)
38
+ return if vendor_logo.persisted?
39
+
40
+ context.fail!(message: vendor_logo.errors.full_messages.join(', '))
41
+ end
42
+
33
43
  def create_role
34
44
  role = context.user.spree_roles.create(
35
- name: "#{@vendor.name.downcase.parameterize(separator: '-')}-organizer",
45
+ name: "#{@vendor.id}-organizer",
36
46
  vendor_id: @vendor.id,
37
47
  presentation: 'Organizer'
38
48
  )
@@ -1,25 +1,5 @@
1
1
  module SpreeCmCommissioner
2
2
  class ApplicationJob < ::ApplicationJob
3
3
  queue_as :default
4
-
5
- around_perform :log_exceptions
6
-
7
- private
8
-
9
- def log_exceptions
10
- yield
11
- rescue StandardError => e
12
- CmAppLogger.log(
13
- label: "#{self.class.name} failed",
14
- data: {
15
- error_class: e.class.name,
16
- error_message: e.message,
17
- arguments: arguments.inspect,
18
- backtrace: e.backtrace&.first(5)&.join("\n")
19
- }
20
- )
21
-
22
- raise # Re-raise the exception to let Sidekiq handle retries or failure
23
- end
24
4
  end
25
5
  end
@@ -2,25 +2,5 @@
2
2
  module SpreeCmCommissioner
3
3
  class ApplicationUniqueJob < ::ApplicationUniqueJob
4
4
  queue_as :default
5
-
6
- around_perform :log_exceptions
7
-
8
- private
9
-
10
- def log_exceptions
11
- yield
12
- rescue StandardError => e
13
- CmAppLogger.log(
14
- label: "#{self.class.name} failed",
15
- data: {
16
- error_class: e.class.name,
17
- error_message: e.message,
18
- arguments: arguments.inspect,
19
- backtrace: e.backtrace&.first(5)&.join("\n")
20
- }
21
- )
22
-
23
- raise # Re-raise the exception to let Sidekiq handle retries or failure
24
- end
25
5
  end
26
6
  end