spree_cm_commissioner 2.8.3.pre6 → 2.8.3

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 (253) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/app/controllers/spree/admin/guests_controller.rb +1 -1
  4. data/app/controllers/spree/admin/stock_managements_controller.rb +1 -1
  5. data/app/controllers/spree/api/v2/tenant/trips_controller.rb +0 -11
  6. data/app/controllers/spree_cm_commissioner/admin/orders_controller_decorator.rb +3 -7
  7. data/app/finders/spree_cm_commissioner/accommodations/find_variant.rb +2 -2
  8. data/app/helpers/spree_cm_commissioner/admin/guest_helper.rb +0 -10
  9. data/app/models/concerns/spree_cm_commissioner/line_items_filter_scope.rb +0 -5
  10. data/app/models/concerns/spree_cm_commissioner/vehicle_kind.rb +1 -1
  11. data/app/models/spree_cm_commissioner/guest.rb +0 -20
  12. data/app/models/spree_cm_commissioner/integration.rb +0 -31
  13. data/app/models/spree_cm_commissioner/integrations/stadium_x_v1.rb +10 -4
  14. data/app/models/spree_cm_commissioner/inventory_item.rb +0 -6
  15. data/app/models/spree_cm_commissioner/line_item_decorator.rb +0 -7
  16. data/app/models/spree_cm_commissioner/notification.rb +1 -10
  17. data/app/models/spree_cm_commissioner/order_decorator.rb +3 -14
  18. data/app/models/spree_cm_commissioner/payment_decorator.rb +0 -19
  19. data/app/models/spree_cm_commissioner/payment_method_decorator.rb +0 -8
  20. data/app/models/spree_cm_commissioner/place.rb +0 -2
  21. data/app/models/spree_cm_commissioner/reserved_block.rb +0 -2
  22. data/app/models/spree_cm_commissioner/route.rb +0 -1
  23. data/app/models/spree_cm_commissioner/seat_layout.rb +0 -2
  24. data/app/models/spree_cm_commissioner/stock/availability_validator_decorator.rb +0 -4
  25. data/app/models/spree_cm_commissioner/stock/order_availability_checker.rb +0 -3
  26. data/app/models/spree_cm_commissioner/stock_item_decorator.rb +0 -4
  27. data/app/models/spree_cm_commissioner/trip.rb +1 -33
  28. data/app/models/spree_cm_commissioner/trip_stop.rb +0 -2
  29. data/app/models/spree_cm_commissioner/user_decorator.rb +0 -1
  30. data/app/models/spree_cm_commissioner/variant_decorator.rb +0 -1
  31. data/app/models/spree_cm_commissioner/vehicle.rb +0 -3
  32. data/app/models/spree_cm_commissioner/vehicle_type.rb +0 -1
  33. data/app/models/spree_cm_commissioner/vendor_decorator.rb +0 -17
  34. data/app/models/spree_cm_commissioner/vendor_place.rb +0 -2
  35. data/app/queries/spree_cm_commissioner/multi_leg_trips_query.rb +8 -31
  36. data/app/queries/spree_cm_commissioner/single_leg_trips_query.rb +2 -33
  37. data/app/serializers/spree/v2/storefront/line_item_serializer_decorator.rb +2 -4
  38. data/app/serializers/spree/v2/storefront/product_serializer_decorator.rb +1 -2
  39. data/app/serializers/spree/v2/tenant/dynamic_field_serializer.rb +1 -1
  40. data/app/serializers/spree_cm_commissioner/v2/storefront/dynamic_field_serializer.rb +1 -1
  41. data/app/serializers/spree_cm_commissioner/v2/storefront/guest_serializer.rb +1 -3
  42. data/app/serializers/spree_cm_commissioner/v2/storefront/reserved_block_serializer.rb +1 -1
  43. data/app/serializers/spree_cm_commissioner/v2/storefront/trip_query_result_serializer.rb +1 -2
  44. data/app/serializers/spree_cm_commissioner/v2/storefront/trip_stop_serializer.rb +0 -1
  45. data/app/services/spree_cm_commissioner/check_ins/create_bulk.rb +5 -11
  46. data/app/services/spree_cm_commissioner/integrations/base/sync_manager.rb +2 -1
  47. data/app/services/spree_cm_commissioner/integrations/base/sync_result.rb +0 -11
  48. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/external_client/client.rb +15 -14
  49. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/polling/sync_matches.rb +4 -7
  50. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/polling/sync_zones.rb +3 -6
  51. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_manager.rb +3 -0
  52. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/full_sync_strategy.rb +3 -1
  53. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/incremental_sync_strategy.rb +3 -1
  54. data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/webhook_sync_strategy.rb +2 -1
  55. data/app/services/spree_cm_commissioner/inventory_items/reset.rb +1 -1
  56. data/app/services/spree_cm_commissioner/order_holds/hold.rb +0 -17
  57. data/app/services/spree_cm_commissioner/order_holds/release.rb +0 -17
  58. data/app/services/spree_cm_commissioner/reserved_blocks/reserve.rb +1 -2
  59. data/app/views/spree/admin/guests/_table.html.erb +87 -82
  60. data/app/views/spree/admin/integrations/_form.html.erb +0 -12
  61. data/app/views/spree/admin/integrations/index.html.erb +1 -1
  62. data/config/locales/en.yml +0 -64
  63. data/config/locales/km.yml +0 -61
  64. data/config/routes.rb +0 -21
  65. data/lib/spree_cm_commissioner/test_helper/factories/integration_factory.rb +0 -11
  66. data/lib/spree_cm_commissioner/trip_query_result.rb +0 -9
  67. data/lib/spree_cm_commissioner/trip_result.rb +2 -5
  68. data/lib/spree_cm_commissioner/version.rb +1 -1
  69. metadata +4 -188
  70. data/app/controllers/spree/admin/order_ticket_transfers_controller.rb +0 -25
  71. data/app/controllers/spree/admin/ticket_transfer_rules_controller.rb +0 -47
  72. data/app/controllers/spree/admin/ticket_transfers_controller.rb +0 -61
  73. data/app/controllers/spree/api/v2/storefront/account/recipients_controller.rb +0 -32
  74. data/app/controllers/spree/api/v2/storefront/ticket_transfer_acceptances_controller.rb +0 -32
  75. data/app/controllers/spree/api/v2/storefront/ticket_transfers_controller.rb +0 -117
  76. data/app/controllers/spree/api/v2/storefront/transit/item_availabilities_controller.rb +0 -66
  77. data/app/helpers/spree_cm_commissioner/admin/ticket_transfers_helper.rb +0 -32
  78. data/app/jobs/spree_cm_commissioner/audit_event_job.rb +0 -29
  79. data/app/jobs/spree_cm_commissioner/expire_ticket_transfer_job.rb +0 -10
  80. data/app/jobs/spree_cm_commissioner/vendor_route_metrics/decrease_trip_count_job.rb +0 -17
  81. data/app/jobs/spree_cm_commissioner/vendor_route_metrics/increase_trip_count_job.rb +0 -14
  82. data/app/models/concerns/spree_cm_commissioner/audit_wrapper.rb +0 -139
  83. data/app/models/concerns/spree_cm_commissioner/integrations/inventory_sync_cachable.rb +0 -9
  84. data/app/models/concerns/spree_cm_commissioner/ticket_transferable.rb +0 -15
  85. data/app/models/concerns/spree_cm_commissioner/variant_metadata.rb +0 -24
  86. data/app/models/spree_cm_commissioner/audit_event.rb +0 -11
  87. data/app/models/spree_cm_commissioner/currency_rate.rb +0 -15
  88. data/app/models/spree_cm_commissioner/integrations/book_me_bus_v1.rb +0 -56
  89. data/app/models/spree_cm_commissioner/integrations/larryta.rb +0 -81
  90. data/app/models/spree_cm_commissioner/integrations/vireak_buntham.rb +0 -82
  91. data/app/models/spree_cm_commissioner/ticket_transfer.rb +0 -191
  92. data/app/models/spree_cm_commissioner/ticket_transfer_rule.rb +0 -88
  93. data/app/models/spree_cm_commissioner/vendor_route_metric.rb +0 -25
  94. data/app/notifications/spree_cm_commissioner/ticket_transfer_accepted_notification.rb +0 -48
  95. data/app/notifications/spree_cm_commissioner/ticket_transfer_completed_notification.rb +0 -48
  96. data/app/notifications/spree_cm_commissioner/ticket_transfer_expired_notification.rb +0 -46
  97. data/app/notifications/spree_cm_commissioner/ticket_transfer_received_notification.rb +0 -48
  98. data/app/notifications/spree_cm_commissioner/ticket_transfer_rejected_notification.rb +0 -48
  99. data/app/overrides/spree/admin/products/_form/allow_gift_transfer.html.erb.deface +0 -9
  100. data/app/overrides/spree/admin/products/_form/allow_transfer.html.erb.deface +0 -9
  101. data/app/overrides/spree/admin/shared/_order_tabs/ticket_transfers.html.erb.deface +0 -10
  102. data/app/overrides/spree/admin/shared/sub_menu/_product/ticket_transfers_tab.html.erb.deface +0 -3
  103. data/app/queries/spree_cm_commissioner/recipient_searcher_query.rb +0 -14
  104. data/app/serializables/spree_cm_commissioner/item_availability_sync.rb +0 -10
  105. data/app/serializers/spree_cm_commissioner/v2/storefront/guest_minimal_serializer.rb +0 -30
  106. data/app/serializers/spree_cm_commissioner/v2/storefront/item_availability_sync_serializer.rb +0 -10
  107. data/app/serializers/spree_cm_commissioner/v2/storefront/line_item_minimal_serializer.rb +0 -57
  108. data/app/serializers/spree_cm_commissioner/v2/storefront/recipient_serializer.rb +0 -13
  109. data/app/serializers/spree_cm_commissioner/v2/storefront/ticket_transfer_minimal_serializer.rb +0 -17
  110. data/app/serializers/spree_cm_commissioner/v2/storefront/ticket_transfer_serializer.rb +0 -20
  111. data/app/services/spree_cm_commissioner/audit_logger.rb +0 -59
  112. data/app/services/spree_cm_commissioner/checkout/complete_decorator.rb +0 -22
  113. data/app/services/spree_cm_commissioner/currency_converter/create.rb +0 -27
  114. data/app/services/spree_cm_commissioner/currency_rates/manage.rb +0 -99
  115. data/app/services/spree_cm_commissioner/google_maps_geocoder.rb +0 -41
  116. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/external_client/client.rb +0 -261
  117. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/external_client/connection.rb +0 -147
  118. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/inventory/external_inventory_item_status.rb +0 -52
  119. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/inventory/external_inventory_items.rb +0 -91
  120. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/inventory/unstock_inventory.rb +0 -140
  121. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_inventory.rb +0 -52
  122. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_item_availability.rb +0 -249
  123. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_locations.rb +0 -103
  124. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_product.rb +0 -66
  125. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_route_stops.rb +0 -113
  126. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_routes.rb +0 -128
  127. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_seat_layout.rb +0 -345
  128. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_service_calendars.rb +0 -59
  129. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_trip_stop.rb +0 -179
  130. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_trips.rb +0 -597
  131. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_variant.rb +0 -58
  132. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_vehicle_types.rb +0 -87
  133. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/time_parser.rb +0 -19
  134. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/base.rb +0 -40
  135. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/branch.rb +0 -65
  136. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/direction.rb +0 -51
  137. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/inventory_item_status.rb +0 -148
  138. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/location.rb +0 -55
  139. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/operator.rb +0 -17
  140. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/reservation_cart.rb +0 -85
  141. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/seat.rb +0 -128
  142. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/seat_layout.rb +0 -363
  143. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/stop.rb +0 -84
  144. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/trip.rb +0 -199
  145. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/wallet_payment.rb +0 -40
  146. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/sync_manager.rb +0 -22
  147. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/sync_strategies/full_sync_strategy.rb +0 -117
  148. data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/sync_strategies/incremental_sync_strategy.rb +0 -64
  149. data/app/services/spree_cm_commissioner/integrations/larryta/external_client/client.rb +0 -344
  150. data/app/services/spree_cm_commissioner/integrations/larryta/external_client/connection.rb +0 -74
  151. data/app/services/spree_cm_commissioner/integrations/larryta/inventory/external_inventory_item_status.rb +0 -53
  152. data/app/services/spree_cm_commissioner/integrations/larryta/inventory/external_inventory_items.rb +0 -106
  153. data/app/services/spree_cm_commissioner/integrations/larryta/inventory/hold_seats.rb +0 -143
  154. data/app/services/spree_cm_commissioner/integrations/larryta/inventory/release_seats.rb +0 -90
  155. data/app/services/spree_cm_commissioner/integrations/larryta/inventory/unstock_inventory.rb +0 -113
  156. data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_item_availability.rb +0 -261
  157. data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_product.rb +0 -72
  158. data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_routes.rb +0 -142
  159. data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_seat_layout.rb +0 -255
  160. data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_stock_item.rb +0 -55
  161. data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_trip_stop.rb +0 -167
  162. data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_trips.rb +0 -319
  163. data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_variant.rb +0 -63
  164. data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_vehicle_type.rb +0 -79
  165. data/app/services/spree_cm_commissioner/integrations/larryta/resources/base.rb +0 -39
  166. data/app/services/spree_cm_commissioner/integrations/larryta/resources/booking.rb +0 -113
  167. data/app/services/spree_cm_commissioner/integrations/larryta/resources/booking_session.rb +0 -43
  168. data/app/services/spree_cm_commissioner/integrations/larryta/resources/booking_transaction.rb +0 -238
  169. data/app/services/spree_cm_commissioner/integrations/larryta/resources/direction.rb +0 -71
  170. data/app/services/spree_cm_commissioner/integrations/larryta/resources/passenger.rb +0 -48
  171. data/app/services/spree_cm_commissioner/integrations/larryta/resources/schedule.rb +0 -150
  172. data/app/services/spree_cm_commissioner/integrations/larryta/resources/seat.rb +0 -31
  173. data/app/services/spree_cm_commissioner/integrations/larryta/resources/seat_availability.rb +0 -49
  174. data/app/services/spree_cm_commissioner/integrations/larryta/resources/seat_layout.rb +0 -211
  175. data/app/services/spree_cm_commissioner/integrations/larryta/sync_manager.rb +0 -17
  176. data/app/services/spree_cm_commissioner/integrations/larryta/sync_strategies/full_sync_strategy.rb +0 -79
  177. data/app/services/spree_cm_commissioner/integrations/larryta/sync_strategies/incremental_sync_strategy.rb +0 -58
  178. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/external_client/client.rb +0 -206
  179. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/external_client/connection.rb +0 -59
  180. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/inventory/external_inventory_item_status.rb +0 -48
  181. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/inventory/external_inventory_items.rb +0 -97
  182. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/inventory/unstock_inventory.rb +0 -208
  183. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_item_availability.rb +0 -270
  184. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_locations.rb +0 -96
  185. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_nationality_pricing.rb +0 -76
  186. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_product.rb +0 -69
  187. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_routes.rb +0 -110
  188. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_seat_layout.rb +0 -207
  189. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_stock_item.rb +0 -43
  190. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_trip_stop.rb +0 -187
  191. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_trips.rb +0 -300
  192. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_variant.rb +0 -56
  193. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_vehicle_type.rb +0 -51
  194. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/base.rb +0 -32
  195. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/booking.rb +0 -48
  196. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/booking_transaction.rb +0 -46
  197. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/cell.rb +0 -53
  198. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/confirm_booking_request.rb +0 -43
  199. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/location.rb +0 -37
  200. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/schedule.rb +0 -138
  201. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/seat.rb +0 -48
  202. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/seat_layout.rb +0 -79
  203. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/sync_manager.rb +0 -17
  204. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/sync_strategies/full_sync_strategy.rb +0 -87
  205. data/app/services/spree_cm_commissioner/integrations/vireak_buntham/sync_strategies/incremental_sync_strategy.rb +0 -53
  206. data/app/services/spree_cm_commissioner/inventory_items/generate_permanent_item.rb +0 -48
  207. data/app/services/spree_cm_commissioner/place_resolver.rb +0 -95
  208. data/app/services/spree_cm_commissioner/ticket_transfers/accept.rb +0 -132
  209. data/app/services/spree_cm_commissioner/ticket_transfers/cancel.rb +0 -54
  210. data/app/services/spree_cm_commissioner/ticket_transfers/complete.rb +0 -68
  211. data/app/services/spree_cm_commissioner/ticket_transfers/eligibility_checker.rb +0 -99
  212. data/app/services/spree_cm_commissioner/ticket_transfers/expire.rb +0 -47
  213. data/app/services/spree_cm_commissioner/ticket_transfers/fee_calculator.rb +0 -57
  214. data/app/services/spree_cm_commissioner/ticket_transfers/initiate.rb +0 -98
  215. data/app/services/spree_cm_commissioner/ticket_transfers/preview_rule.rb +0 -38
  216. data/app/services/spree_cm_commissioner/ticket_transfers/reject.rb +0 -55
  217. data/app/services/spree_cm_commissioner/ticket_transfers/transfer_guest.rb +0 -29
  218. data/app/services/spree_cm_commissioner/vendor_route_metrics/decrease_trip_count.rb +0 -19
  219. data/app/services/spree_cm_commissioner/vendor_route_metrics/increase_trip_count.rb +0 -24
  220. data/app/views/spree/admin/integrations/_book_me_bus_v1_fields.html.erb +0 -47
  221. data/app/views/spree/admin/integrations/_larryta_fields.html.erb +0 -58
  222. data/app/views/spree/admin/integrations/_vireak_buntham_fields.html.erb +0 -75
  223. data/app/views/spree/admin/order_ticket_transfers/show.html.erb +0 -7
  224. data/app/views/spree/admin/shared/_ticket_transfer_details.html.erb +0 -226
  225. data/app/views/spree/admin/shared/_ticket_transfer_tabs.html.erb +0 -14
  226. data/app/views/spree/admin/ticket_transfer_rules/_form.html.erb +0 -193
  227. data/app/views/spree/admin/ticket_transfer_rules/edit.html.erb +0 -11
  228. data/app/views/spree/admin/ticket_transfer_rules/index.html.erb +0 -79
  229. data/app/views/spree/admin/ticket_transfer_rules/new.html.erb +0 -11
  230. data/app/views/spree/admin/ticket_transfers/_search_form.html.erb +0 -70
  231. data/app/views/spree/admin/ticket_transfers/_tabs.html.erb +0 -14
  232. data/app/views/spree/admin/ticket_transfers/index.html.erb +0 -74
  233. data/app/views/spree/admin/ticket_transfers/show.html.erb +0 -13
  234. data/app/views/spree/admin/ticket_transfers/state_changes.html.erb +0 -47
  235. data/db/migrate/20260303101440_add_allow_transfer_to_spree_products.rb +0 -5
  236. data/db/migrate/20260303101907_create_cm_ticket_transfers.rb +0 -32
  237. data/db/migrate/20260303102316_add_state_to_cm_guests.rb +0 -7
  238. data/db/migrate/20260327143200_create_cm_audit_events.rb +0 -21
  239. data/db/migrate/20260408100000_create_cm_ticket_transfer_rules.rb +0 -28
  240. data/db/migrate/20260410045815_create_cm_currency_rates.rb +0 -23
  241. data/db/migrate/20260410120000_add_transfer_type_to_cm_ticket_transfers.rb +0 -5
  242. data/db/migrate/20260411102139_add_metadata_to_cm_inventory_items.rb +0 -6
  243. data/db/migrate/20260422120000_add_settlement_status_to_cm_ticket_transfers.rb +0 -6
  244. data/db/migrate/20260507000000_add_index_to_cm_ticket_transfers_completed_at.rb +0 -5
  245. data/db/migrate/20260520000000_add_number_to_cm_ticket_transfers.rb +0 -6
  246. data/db/migrate/20260605120908_add_description_to_cm_dynamic_fields.rb +0 -5
  247. data/db/migrate/20260608000000_add_allow_gift_transfer_to_spree_products.rb +0 -5
  248. data/db/migrate/20260608000000_create_cm_vendor_route_metrics.rb +0 -25
  249. data/db/migrate/20260608152251_add_gender_to_cm_reserved_blocks.rb +0 -5
  250. data/lib/spree_cm_commissioner/test_helper/factories/ticket_transfer_factory.rb +0 -18
  251. data/lib/spree_cm_commissioner/test_helper/factories/vendor_route_metric_factory.rb +0 -10
  252. data/lib/tasks/backfill_route_metrics.rake +0 -21
  253. data/lib/tasks/backfill_vendor_route_metrics.rake +0 -23
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03105af0ab1e480deee42cf481634c850da1a67603e5b443353d4aad31017181
4
- data.tar.gz: 1add556af176fac0f8ac9be335406537e857c438dacd38a3a0769fa841a60e99
3
+ metadata.gz: 0774f6d0c4fad7ae396f14326fd6d0965164b74d89f355c3966bc8d1fd9563f9
4
+ data.tar.gz: 002d84c9f1273b54f01d5a25bdecc5f3b475a12e07b32d8e1846c19107fe776f
5
5
  SHA512:
6
- metadata.gz: d6e85ae08be39fc2a66791c42a049ae3be212fa16af34bc0edaa7366c1b4b22305a381029f0d76a0f03807e7bc1e53ed82c35d8dd5b88f05cb806dc39f520492
7
- data.tar.gz: fc23fd4348e6b70720c5e803b278f07e9c6303e37c3ea1080b254a511da02fd75c30426bbfe9107b925efa8280f6b10b5d4d84edc42d5e38b9643cc4f3190375
6
+ metadata.gz: 260d54db1f9dd63dbfef02edf2944d02e2c582972b8903815462e438be9cbfb6f5561a7b4a4b64c2cda4af18908c8c7a91958213c06764d1f7ee4d8e2c16dec3
7
+ data.tar.gz: 003d6ecd547b0215851266f06e823f2f7c5e7a8da35f5b4a8051784855a4d095d088b79f700dcadca8820d561d7a9989a3ee0d9eb7940943c3c5777cc7a4742c
data/Gemfile.lock CHANGED
@@ -34,7 +34,7 @@ GIT
34
34
  PATH
35
35
  remote: .
36
36
  specs:
37
- spree_cm_commissioner (2.8.3.pre6)
37
+ spree_cm_commissioner (2.8.3)
38
38
  activerecord-multi-tenant
39
39
  activerecord_json_validator (~> 2.1, >= 2.1.3)
40
40
  aws-sdk-cloudfront
@@ -55,7 +55,7 @@ module Spree
55
55
  if result.success?
56
56
  flash[:success] = "Guest #{@guest.full_name} has been checked in."
57
57
  else
58
- flash[:error] = result.error.value.to_s.titleize
58
+ flash[:error] = result.message.to_s.titleize
59
59
  end
60
60
 
61
61
  redirect_to collection_url
@@ -92,7 +92,7 @@ module Spree
92
92
  .call
93
93
  .index_by(&:inventory_item_id)
94
94
  @reserved_stocks = Spree::LineItem
95
- .affecting_inventory
95
+ .complete
96
96
  .where(variant_id: @variants.pluck(:id))
97
97
  .group('spree_line_items.variant_id')
98
98
  .sum(:quantity)
@@ -25,17 +25,6 @@ module Spree
25
25
  def resource_serializer
26
26
  Spree::V2::Tenant::TripSerializer
27
27
  end
28
-
29
- # override
30
- def serializer_params
31
- super.merge(
32
- include_details: include_details?
33
- )
34
- end
35
-
36
- def include_details?
37
- params.fetch(:include_details, 'true') == 'true'
38
- end
39
28
  end
40
29
  end
41
30
  end
@@ -40,13 +40,9 @@ module SpreeCmCommissioner
40
40
 
41
41
  # override
42
42
  def cancel
43
- if @order.guests_in_transfer?
44
- flash[:error] = Spree.t('admin.orders.cannot_cancel_guest_transfer')
45
- else
46
- internal_note = params.dig(:order, :internal_note)
47
- @order.canceled_by(try_spree_current_user, cancellation_reason: internal_note)
48
- flash[:success] = Spree.t(:order_canceled)
49
- end
43
+ internal_note = params.dig(:order, :internal_note)
44
+ @order.canceled_by(try_spree_current_user, cancellation_reason: internal_note)
45
+ flash[:success] = Spree.t(:order_canceled)
50
46
  redirect_back fallback_location: spree.edit_admin_order_url(@order)
51
47
  end
52
48
 
@@ -15,8 +15,8 @@ module SpreeCmCommissioner
15
15
  .joins(:inventory_items)
16
16
  .where(vendor_id: vendor_id)
17
17
  .where(inventory_items: { inventory_date: stay_dates })
18
- .where('CAST(spree_variants.public_metadata->\'cm_options\'->>\'number-of-adults\' AS INTEGER) +
19
- CAST(spree_variants.public_metadata->\'cm_options\'->>\'number-of-kids\' AS INTEGER) >= ?', number_of_guests
18
+ .where('CAST(public_metadata->\'cm_options\'->>\'number-of-adults\' AS INTEGER) +
19
+ CAST(public_metadata->\'cm_options\'->>\'number-of-kids\' AS INTEGER) >= ?', number_of_guests
20
20
  )
21
21
  .where('inventory_items.quantity_available > 0')
22
22
  .distinct
@@ -61,16 +61,6 @@ module SpreeCmCommissioner
61
61
  'badge-info'
62
62
  end
63
63
  end
64
-
65
- def guest_state_badge(guest)
66
- badge_class = case guest.state
67
- when 'active' then 'badge-success'
68
- when 'locked' then 'badge-warning'
69
- when 'transferred' then 'badge-secondary'
70
- else 'badge-info'
71
- end
72
- content_tag(:span, guest.state.humanize, class: "badge #{badge_class}")
73
- end
74
64
  end
75
65
  end
76
66
  end
@@ -10,11 +10,6 @@ module SpreeCmCommissioner
10
10
  scope :accepted, -> { joins(:order).merge(Spree::Order.accepted) }
11
11
  scope :paid, -> { joins(:order).merge(Spree::Order.paid) }
12
12
  scope :with_bib_prefix, -> { joins(:option_types).where(option_types: { name: 'bib-prefix' }) }
13
- scope :exclude_ticket_transfer_orders, -> { joins(:order).merge(Spree::Order.not_ticket_transfer) }
14
-
15
- # Centralizes the rule so that adjustments (e.g. excluding new order kinds in the
16
- # future) only need to be made here. Use this anywhere inventory is computed.
17
- scope :affecting_inventory, -> { complete.exclude_ticket_transfer_orders }
18
13
 
19
14
  scope :filter_by_event, lambda { |event|
20
15
  case event
@@ -2,7 +2,7 @@ module SpreeCmCommissioner
2
2
  module VehicleKind
3
3
  extend ActiveSupport::Concern
4
4
 
5
- VEHICLE_KINDS = %i[suv sedan minivan van sleeping_bus luxury_van air_bus bus ferry boat].freeze
5
+ VEHICLE_KINDS = %i[suv sedan minivan van sleeping_bus luxury_van air_bus bus ferry].freeze
6
6
 
7
7
  included do
8
8
  enum kind: VEHICLE_KINDS if table_exists? && column_names.include?('kind')
@@ -12,7 +12,6 @@ module SpreeCmCommissioner
12
12
  enum gender: { :other => 0, :male => 1, :female => 2 }
13
13
  enum age_group: { :adult => 0, :child => 1 }
14
14
  enum nationality_group: { :local => 0, :foreigner => 1 }
15
- enum state: { active: 0, locked: 1, transferred: 2 }
16
15
  enum social_contact_platform: {
17
16
  :other => 0,
18
17
  :telegram => 1,
@@ -47,7 +46,6 @@ module SpreeCmCommissioner
47
46
  has_many :state_changes, as: :stateful, class_name: 'Spree::StateChange'
48
47
  has_many :guest_dynamic_fields, dependent: :destroy, class_name: 'SpreeCmCommissioner::GuestDynamicField'
49
48
  has_many :check_ins, class_name: 'SpreeCmCommissioner::CheckIn'
50
- has_many :ticket_transfers, foreign_key: 'from_guest_id', class_name: 'SpreeCmCommissioner::TicketTransfer'
51
49
 
52
50
  accepts_nested_attributes_for :guest_dynamic_fields, allow_destroy: true, reject_if: :reject_guest_dynamic_field?
53
51
 
@@ -192,10 +190,6 @@ module SpreeCmCommissioner
192
190
  [first_name, last_name].compact_blank.join(' ')
193
191
  end
194
192
 
195
- def display_name_with_bib
196
- [full_name, formatted_bib_number, seat_number].compact.join(' | ')
197
- end
198
-
199
193
  def generate_svg_qr
200
194
  qrcode = RQRCode::QRCode.new(qr_data)
201
195
  qrcode.as_svg(
@@ -515,20 +509,6 @@ module SpreeCmCommissioner
515
509
  saved_change_to_data_fill_stage_phase? ||
516
510
  (guest_dynamic_fields.any? && (guest_dynamic_fields.any?(&:saved_changes?) || guest_dynamic_fields.any?(&:destroyed?)))
517
511
  end
518
-
519
- # Ticket Transfer validations
520
- def allows_transfer?
521
- line_item&.product&.allow_transfer?
522
- end
523
-
524
- def allows_gift_transfer?
525
- line_item&.product&.allow_gift_transfer?
526
- end
527
-
528
- def event_started?
529
- event_from_date = event&.from_date
530
- event_from_date.present? && event_from_date <= Time.current
531
- end
532
512
  end
533
513
  end
534
514
  # rubocop:enable Metrics/ClassLength
@@ -25,36 +25,5 @@ module SpreeCmCommissioner
25
25
  def unstock_external_inventory!(_order, _line_items)
26
26
  raise NotImplementedError, 'Subclasses must implement the unstock_external_inventory! method'
27
27
  end
28
-
29
- def sync_item_availability!(_options = {})
30
- raise NotImplementedError, 'Subclasses must implement the sync_item_availability! method'
31
- end
32
-
33
- def hold_inventory!(_order, _line_items)
34
- raise NotImplementedError, 'Subclasses must implement the hold_inventory! method'
35
- end
36
-
37
- # Integrations that manage external inventory reservations should override this to return true
38
- def supports_external_inventory_holding?
39
- false
40
- end
41
-
42
- # Integrations that support automatically releasing external inventory
43
- # after reservation expiration or order cancellation should override this to return true
44
- def supports_auto_release_inventory?
45
- false
46
- end
47
-
48
- def release_inventory!(_order, _line_items)
49
- raise NotImplementedError, 'Subclasses must implement the release_inventory! method'
50
- end
51
-
52
- def external_inventory_items(_order)
53
- raise NotImplementedError, 'Subclasses must implement the external_inventory_items method'
54
- end
55
-
56
- def external_inventory_item_status(_order, _options)
57
- raise NotImplementedError, 'Subclasses must implement the external_inventory_item_status method'
58
- end
59
28
  end
60
29
  end
@@ -5,7 +5,10 @@ class SpreeCmCommissioner::Integrations::StadiumXV1 < SpreeCmCommissioner::Integ
5
5
 
6
6
  # override
7
7
  def sync_manager
8
- SpreeCmCommissioner::Integrations::StadiumXV1::SyncManager.new(integration: self)
8
+ SpreeCmCommissioner::Integrations::StadiumXV1::SyncManager.new(
9
+ integration: self,
10
+ client: client
11
+ )
9
12
  end
10
13
 
11
14
  # override
@@ -15,6 +18,7 @@ class SpreeCmCommissioner::Integrations::StadiumXV1 < SpreeCmCommissioner::Integ
15
18
  order: order,
16
19
  line_items: line_items
17
20
  )
21
+
18
22
  raise SpreeCmCommissioner::Integrations::SyncError, result.error unless result.success?
19
23
  end
20
24
 
@@ -23,9 +27,11 @@ class SpreeCmCommissioner::Integrations::StadiumXV1 < SpreeCmCommissioner::Integ
23
27
  raise SpreeCmCommissioner::Integrations::SyncError, 'Ticket cannot be cancelled'
24
28
  end
25
29
 
26
- def sync_item_availability!(_options = {}); end
27
-
28
30
  def client
29
- @client ||= SpreeCmCommissioner::Integrations::StadiumXV1::ExternalClient::Client.new(integration: self)
31
+ SpreeCmCommissioner::Integrations::StadiumXV1::ExternalClient::Client.new(
32
+ public_key: public_key,
33
+ private_key: private_key,
34
+ base_url: base_url
35
+ )
30
36
  end
31
37
  end
@@ -1,15 +1,9 @@
1
1
  module SpreeCmCommissioner
2
2
  class InventoryItem < Base
3
3
  include SpreeCmCommissioner::ProductType
4
- include SpreeCmCommissioner::StoreMetadata
5
- include SpreeCmCommissioner::Integrations::IntegrationMappable
6
4
 
7
5
  MAX_DISPLAY_STOCK = 20
8
6
 
9
- store_public_metadata :last_synced_at, :datetime
10
- store_public_metadata :original_price, :integer
11
- store_public_metadata :currency, :string
12
-
13
7
  # Association
14
8
  belongs_to :variant, class_name: 'Spree::Variant', optional: false
15
9
 
@@ -119,9 +119,6 @@ module SpreeCmCommissioner
119
119
 
120
120
  # override to calculate price per date for permanent stock
121
121
  def update_price
122
- # Skip price updates for ticket transfer orders to preserve custom transfer pricing
123
- return if order&.ticket_transfer?
124
-
125
122
  base_price = variant.price_in(order.currency)
126
123
  self.price = if permanent_stock?
127
124
  date_range.map do |date|
@@ -259,11 +256,7 @@ module SpreeCmCommissioner
259
256
  end
260
257
 
261
258
  # override
262
- # Ticket transfer line items reuse the seller's already-committed inventory,
263
- # so stock checks must not block the receiver's checkout when the event is sold out.
264
259
  def sufficient_stock?
265
- return true if order&.ticket_transfer?
266
-
267
260
  SpreeCmCommissioner::Stock::LineItemAvailabilityChecker.new(self).can_supply?(quantity)
268
261
  end
269
262
 
@@ -10,16 +10,7 @@ module SpreeCmCommissioner
10
10
 
11
11
  scope :user_notifications, lambda {
12
12
  where(
13
- type: %w[
14
- order_complete_notification
15
- customer_notification
16
- guest_dynamic_field_notification
17
- ticket_transfer_received_notification
18
- ticket_transfer_accepted_notification
19
- ticket_transfer_completed_notification
20
- ticket_transfer_rejected_notification
21
- ticket_transfer_expired_notification
22
- ]
13
+ type: %w[order_complete_notification customer_notification guest_dynamic_field_notification]
23
14
  )
24
15
  }
25
16
 
@@ -1,11 +1,5 @@
1
1
  module SpreeCmCommissioner
2
2
  module OrderDecorator
3
- SPREE_CHANNEL = 'spree'.freeze
4
- GOOGLE_FORM_CHANNEL = 'google_form'.freeze
5
- TELEGRAM_CHANNEL = 'telegram'.freeze
6
- TICKET_TRANSFER_CHANNEL = 'ticket_transfer'.freeze
7
- ALLOWED_CHANNEL_PREFIXES = [SPREE_CHANNEL, GOOGLE_FORM_CHANNEL, TELEGRAM_CHANNEL, TICKET_TRANSFER_CHANNEL].freeze
8
-
9
3
  def self.prepended(base) # rubocop:disable Metrics/MethodLength
10
4
  base.include SpreeCmCommissioner::StoreMetadata
11
5
  base.include SpreeCmCommissioner::PhoneNumberSanitizer
@@ -14,7 +8,6 @@ module SpreeCmCommissioner
14
8
  base.include SpreeCmCommissioner::OrderStateMachine
15
9
  base.include SpreeCmCommissioner::RouteOrderCountable
16
10
  base.include SpreeCmCommissioner::OrderScopes
17
- base.include SpreeCmCommissioner::TicketTransferable
18
11
 
19
12
  base.before_create :link_by_phone_number
20
13
  base.before_create :associate_customer
@@ -50,7 +43,6 @@ module SpreeCmCommissioner
50
43
  base.has_many :reserved_blocks, through: :guests, class_name: 'SpreeCmCommissioner::ReservedBlock'
51
44
  base.has_many :guest_card_classes, class_name: 'SpreeCmCommissioner::GuestCardClass', through: :variants
52
45
  base.has_many :product_completion_steps, class_name: 'SpreeCmCommissioner::ProductCompletionStep', through: :line_items
53
- base.has_many :audit_events, class_name: 'SpreeCmCommissioner::AuditEvent', as: :auditable
54
46
 
55
47
  base.delegate :customer, to: :user, allow_nil: true
56
48
 
@@ -242,10 +234,6 @@ module SpreeCmCommissioner
242
234
  complete? && need_confirmation? == false
243
235
  end
244
236
 
245
- def guests_in_transfer?
246
- guests.exists?(state: %i[locked transferred])
247
- end
248
-
249
237
  def generate_svg_qr
250
238
  qrcode = RQRCode::QRCode.new(qr_data)
251
239
  qrcode.as_svg(
@@ -356,9 +344,10 @@ module SpreeCmCommissioner
356
344
  end
357
345
 
358
346
  def validate_channel_prefix
359
- return if ALLOWED_CHANNEL_PREFIXES.any? { |prefix| channel&.start_with?(prefix) }
347
+ allowed_prefixes = %w[spree google_form telegram]
348
+ return if allowed_prefixes.any? { |prefix| channel&.start_with?(prefix) }
360
349
 
361
- errors.add(:channel, "must start with one of the following: #{ALLOWED_CHANNEL_PREFIXES.join(', ')}")
350
+ errors.add(:channel, "must start with one of the following: #{allowed_prefixes.join(', ')}")
362
351
  end
363
352
 
364
353
  def set_tenant_id
@@ -32,14 +32,6 @@ module SpreeCmCommissioner
32
32
  payment_method.is_a?(Spree::PaymentMethod::Check)
33
33
  end
34
34
 
35
- # @override Spree::Payment#after_completed
36
- # Called inside the state machine transition to :completed (within the transaction),
37
- # ensuring Complete is atomic with the payment completion.
38
- def after_completed
39
- super
40
- complete_ticket_transfer if ticket_transfer_completable?
41
- end
42
-
43
35
  def can_void?
44
36
  state.in? %i[pending processing completed checkout]
45
37
  end
@@ -55,17 +47,6 @@ module SpreeCmCommissioner
55
47
  def lock_holds_for_payment
56
48
  order.lock_order_holds_for_payment
57
49
  end
58
-
59
- def ticket_transfer_completable?
60
- completed? && order.ticket_transfer? && order.complete? && order.payment_fulfilled?
61
- end
62
-
63
- def complete_ticket_transfer
64
- ticket_transfer = order.ticket_transfer
65
- return if ticket_transfer.blank? || !ticket_transfer.accepted?
66
-
67
- SpreeCmCommissioner::TicketTransfers::Complete.call(ticket_transfer: ticket_transfer)
68
- end
69
50
  end
70
51
  end
71
52
 
@@ -5,14 +5,6 @@ module SpreeCmCommissioner
5
5
  def self.prepended(base)
6
6
  base.const_set(:DISPLAY, DISPLAY)
7
7
 
8
- # Expose a dedicated class helper so services can call Spree::PaymentMethod.ticket_transfer
9
- # instead of duplicating lookup/creation logic.
10
- base.define_singleton_method(:ticket_transfer) do
11
- Spree::PaymentMethod::Check.available_on_back_end.find_or_create_by!(name: 'Ticket Transfer') do |method|
12
- method.stores = [Spree::Store.default]
13
- end
14
- end
15
-
16
8
  base.scope :available_on_frontend_for_early_adopter, -> { active.where(display_on: %i[both front_end frontend_for_early_adopter]) }
17
9
 
18
10
  # override
@@ -1,7 +1,5 @@
1
1
  module SpreeCmCommissioner
2
2
  class Place < Base
3
- include SpreeCmCommissioner::Integrations::IntegrationMappable
4
-
5
3
  acts_as_nested_set
6
4
 
7
5
  validates :reference, presence: true, if: :validate_reference?
@@ -13,8 +13,6 @@ module SpreeCmCommissioner
13
13
  canceled: 2
14
14
  }
15
15
 
16
- enum gender: { :other => 0, :male => 1, :female => 2 }
17
-
18
16
  validates :status, presence: true
19
17
  validates :expired_at, presence: true, if: -> { on_hold? }
20
18
 
@@ -1,7 +1,6 @@
1
1
  module SpreeCmCommissioner
2
2
  class Route < Base
3
3
  include SpreeCmCommissioner::RouteType
4
- include SpreeCmCommissioner::Integrations::IntegrationMappable
5
4
  include SpreeCmCommissioner::StoreMetadata
6
5
  include SpreeCmCommissioner::ServiceOrigin
7
6
 
@@ -1,7 +1,5 @@
1
1
  module SpreeCmCommissioner
2
2
  class SeatLayout < Base
3
- include SpreeCmCommissioner::Integrations::IntegrationMappable
4
-
5
3
  has_many :seat_sections, class_name: 'SpreeCmCommissioner::SeatSection', dependent: :destroy
6
4
 
7
5
  has_many :blocks, class_name: 'SpreeCmCommissioner::Block'
@@ -3,10 +3,6 @@ module SpreeCmCommissioner
3
3
  module AvailabilityValidatorDecorator
4
4
  # override
5
5
  def item_available?(line_item, quantity)
6
- # Ticket-transfer orders move existing inventory between guests rather than
7
- # purchasing new stock, so they must not be gated by the live stock check.
8
- return true if line_item.order&.ticket_transfer?
9
-
10
6
  SpreeCmCommissioner::Stock::LineItemAvailabilityChecker.new(line_item)
11
7
  .can_supply?(quantity)
12
8
  end
@@ -32,9 +32,6 @@ module SpreeCmCommissioner
32
32
  end
33
33
 
34
34
  def sufficient_stock_for?(line_item, cached_inventory_items)
35
- # Ticket transfer orders move an already-owned stock between users,
36
- # so they must skip stock checks even when the event is sold out.
37
- return true if order.ticket_transfer?
38
35
  return false unless line_item.variant.available?
39
36
  return true unless line_item.variant.should_track_inventory?
40
37
  return true if line_item.variant.backorderable?
@@ -15,10 +15,6 @@ module SpreeCmCommissioner
15
15
  private
16
16
 
17
17
  def create_inventory_items
18
- # Skip automatic inventory generation when variant has manual_generate_inventory_items set to true
19
- # Use case: For variants where inventory items need to be manually created/managed (e.g., external integrations)
20
- return if variant.manual_generate_inventory_items?
21
-
22
18
  SpreeCmCommissioner::InventoryItems::GenerateInventoryItemsJob.perform_later(variant_id: variant.id)
23
19
  end
24
20
 
@@ -2,7 +2,6 @@ module SpreeCmCommissioner
2
2
  class Trip < Base
3
3
  include SpreeCmCommissioner::StoreMetadata
4
4
  include SpreeCmCommissioner::RouteType
5
- include SpreeCmCommissioner::Integrations::IntegrationMappable
6
5
  include SpreeCmCommissioner::ServiceOrigin
7
6
 
8
7
  attr_accessor :hours, :minutes, :seconds
@@ -22,17 +21,12 @@ module SpreeCmCommissioner
22
21
 
23
22
  # before create, duplicate seat layout from vehicle_type if present
24
23
  before_validation :duplicate_seat_layout_from_vehicle, if: -> { seat_layout.nil? && vehicle_type&.seat_layout.present? }
25
-
26
24
  after_create :increment_route_metric_trip_count
27
- after_create :increment_vendor_route_metric_trip_count
28
-
29
25
  before_destroy :decrement_route_metric_trip_count
30
- before_destroy :decrement_vendor_route_metric_trip_count
31
-
32
26
  after_commit :update_route_price_range, on: %i[create update]
33
27
 
34
28
  belongs_to :vendor, class_name: 'Spree::Vendor', inverse_of: :trips, optional: false
35
- belongs_to :product, class_name: 'Spree::Product', inverse_of: :trip, optional: true
29
+ belongs_to :product, class_name: 'Spree::Product', inverse_of: :trip, optional: false
36
30
 
37
31
  belongs_to :service_origin, class_name: 'Spree::Taxon', optional: true
38
32
 
@@ -168,8 +162,6 @@ module SpreeCmCommissioner
168
162
  end
169
163
 
170
164
  def increment_route_metric_trip_count
171
- return if route_type.nil?
172
-
173
165
  SpreeCmCommissioner::RouteMetrics::IncreaseTripCountJob.perform_later(
174
166
  origin_place_id: origin_place_id,
175
167
  destination_place_id: destination_place_id,
@@ -178,8 +170,6 @@ module SpreeCmCommissioner
178
170
  end
179
171
 
180
172
  def decrement_route_metric_trip_count
181
- return if route_type.nil?
182
-
183
173
  SpreeCmCommissioner::RouteMetrics::DecreaseTripCountJob.perform_later(
184
174
  origin_place_id: origin_place_id,
185
175
  destination_place_id: destination_place_id,
@@ -187,28 +177,6 @@ module SpreeCmCommissioner
187
177
  )
188
178
  end
189
179
 
190
- def increment_vendor_route_metric_trip_count
191
- return if vendor_id.nil? || route_type.nil?
192
-
193
- SpreeCmCommissioner::VendorRouteMetrics::IncreaseTripCountJob.perform_later(
194
- vendor_id: vendor_id,
195
- origin_place_id: origin_place_id,
196
- destination_place_id: destination_place_id,
197
- route_type: route_type
198
- )
199
- end
200
-
201
- def decrement_vendor_route_metric_trip_count
202
- return if vendor_id.nil? || route_type.nil?
203
-
204
- SpreeCmCommissioner::VendorRouteMetrics::DecreaseTripCountJob.perform_later(
205
- vendor_id: vendor_id,
206
- origin_place_id: origin_place_id,
207
- destination_place_id: destination_place_id,
208
- route_type: route_type
209
- )
210
- end
211
-
212
180
  def update_route_price_range
213
181
  return unless route_id.present? && product_id.present?
214
182
 
@@ -1,7 +1,5 @@
1
1
  module SpreeCmCommissioner
2
2
  class TripStop < Base
3
- include SpreeCmCommissioner::Integrations::IntegrationMappable
4
-
5
3
  acts_as_list column: :sequence, scope: :trip_id
6
4
 
7
5
  belongs_to :trip, class_name: 'SpreeCmCommissioner::Trip', optional: false
@@ -159,7 +159,6 @@ module SpreeCmCommissioner
159
159
  return first_name if first_name.present?
160
160
  return last_name if last_name.present?
161
161
  return email if email.present?
162
- return login if login.present?
163
162
 
164
163
  phone_number
165
164
  end
@@ -6,7 +6,6 @@ module SpreeCmCommissioner
6
6
  base.include SpreeCmCommissioner::VariantOptionsConcern
7
7
  base.include SpreeCmCommissioner::KycBitwise
8
8
  base.include SpreeCmCommissioner::Integrations::IntegrationMappable
9
- base.include SpreeCmCommissioner::VariantMetadata
10
9
 
11
10
  base.after_commit :update_vendor_price
12
11
  base.validate :validate_option_types
@@ -1,7 +1,6 @@
1
1
  module SpreeCmCommissioner
2
2
  class Vehicle < Base
3
3
  include SpreeCmCommissioner::VehicleKind
4
- include SpreeCmCommissioner::Integrations::IntegrationMappable
5
4
 
6
5
  belongs_to :vendor, class_name: 'Spree::Vendor'
7
6
  belongs_to :vehicle_type, class_name: 'SpreeCmCommissioner::VehicleType'
@@ -14,8 +13,6 @@ module SpreeCmCommissioner
14
13
  validates :name, presence: true
15
14
  validates :license_plate, uniqueness: true, allow_blank: true
16
15
 
17
- has_one :seat_layout, through: :vehicle_type
18
-
19
16
  self.whitelisted_ransackable_attributes = %w[name license_plate kind]
20
17
 
21
18
  def display_name
@@ -2,7 +2,6 @@ module SpreeCmCommissioner
2
2
  class VehicleType < Base
3
3
  include SpreeCmCommissioner::StoreMetadata
4
4
  include SpreeCmCommissioner::VehicleKind
5
- include SpreeCmCommissioner::Integrations::IntegrationMappable
6
5
 
7
6
  # This model has no seat_layout column (polymorphic association), so we store the preload_seat_layout_id ID in public_metadata.
8
7
  # This lets us check if a seat layout exists without triggering a database query.
@@ -30,7 +30,6 @@ module SpreeCmCommissioner
30
30
  base.has_many :nearby_places, -> { order(position: :asc) }, class_name: 'SpreeCmCommissioner::VendorPlace', dependent: :destroy
31
31
 
32
32
  base.has_many :stock_items, through: :variants, class_name: 'Spree::StockItem'
33
- base.has_many :currency_rates, class_name: 'SpreeCmCommissioner::CurrencyRate', dependent: :destroy
34
33
 
35
34
  base.has_many :taxon_vendors, class_name: 'SpreeCmCommissioner::TaxonVendor'
36
35
  base.has_many :taxons, through: :taxon_vendors
@@ -98,7 +97,6 @@ module SpreeCmCommissioner
98
97
  base.has_many :boarding_trip_stops, through: :trips, class_name: 'SpreeCmCommissioner::TripStop', source: :boarding_trip_stops
99
98
  base.has_many :drop_off_trip_stops, through: :trips, class_name: 'SpreeCmCommissioner::TripStop', source: :drop_off_trip_stops
100
99
  base.has_many :pricing_models, class_name: 'SpreeCmCommissioner::PricingModel', foreign_key: :vendor_id, dependent: :destroy
101
- base.has_many :orders, -> { distinct }, through: :variants, source: :orders
102
100
 
103
101
  base.has_many :agency_categories, -> { where(kind: :agency_category) }, class_name: 'Spree::Taxon', foreign_key: :vendor_id
104
102
 
@@ -241,21 +239,6 @@ module SpreeCmCommissioner
241
239
  end
242
240
 
243
241
  delegate :present?, to: :tenant, prefix: true
244
-
245
- # Returns the exchange rate between two currencies
246
- # If no direct rate exists, calculates the inverse rate from the reverse pair
247
- # Returns 1.0 for identical currencies, nil if no rate is found
248
- def exchange_rate(from_currency, to_currency)
249
- return 1.0 if from_currency == to_currency
250
-
251
- pair = currency_rates.by_pair(from_currency, to_currency).first
252
- return pair.rate if pair.present?
253
-
254
- reverse_pair = currency_rates.by_pair(to_currency, from_currency).first
255
- return (1.0 / reverse_pair.rate).round(6) if reverse_pair.present?
256
-
257
- nil
258
- end
259
242
  end
260
243
  end
261
244