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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/app/controllers/spree/admin/guests_controller.rb +1 -1
- data/app/controllers/spree/admin/stock_managements_controller.rb +1 -1
- data/app/controllers/spree/api/v2/tenant/trips_controller.rb +0 -11
- data/app/controllers/spree_cm_commissioner/admin/orders_controller_decorator.rb +3 -7
- data/app/finders/spree_cm_commissioner/accommodations/find_variant.rb +2 -2
- data/app/helpers/spree_cm_commissioner/admin/guest_helper.rb +0 -10
- data/app/models/concerns/spree_cm_commissioner/line_items_filter_scope.rb +0 -5
- data/app/models/concerns/spree_cm_commissioner/vehicle_kind.rb +1 -1
- data/app/models/spree_cm_commissioner/guest.rb +0 -20
- data/app/models/spree_cm_commissioner/integration.rb +0 -31
- data/app/models/spree_cm_commissioner/integrations/stadium_x_v1.rb +10 -4
- data/app/models/spree_cm_commissioner/inventory_item.rb +0 -6
- data/app/models/spree_cm_commissioner/line_item_decorator.rb +0 -7
- data/app/models/spree_cm_commissioner/notification.rb +1 -10
- data/app/models/spree_cm_commissioner/order_decorator.rb +3 -14
- data/app/models/spree_cm_commissioner/payment_decorator.rb +0 -19
- data/app/models/spree_cm_commissioner/payment_method_decorator.rb +0 -8
- data/app/models/spree_cm_commissioner/place.rb +0 -2
- data/app/models/spree_cm_commissioner/reserved_block.rb +0 -2
- data/app/models/spree_cm_commissioner/route.rb +0 -1
- data/app/models/spree_cm_commissioner/seat_layout.rb +0 -2
- data/app/models/spree_cm_commissioner/stock/availability_validator_decorator.rb +0 -4
- data/app/models/spree_cm_commissioner/stock/order_availability_checker.rb +0 -3
- data/app/models/spree_cm_commissioner/stock_item_decorator.rb +0 -4
- data/app/models/spree_cm_commissioner/trip.rb +1 -33
- data/app/models/spree_cm_commissioner/trip_stop.rb +0 -2
- data/app/models/spree_cm_commissioner/user_decorator.rb +0 -1
- data/app/models/spree_cm_commissioner/variant_decorator.rb +0 -1
- data/app/models/spree_cm_commissioner/vehicle.rb +0 -3
- data/app/models/spree_cm_commissioner/vehicle_type.rb +0 -1
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +0 -17
- data/app/models/spree_cm_commissioner/vendor_place.rb +0 -2
- data/app/queries/spree_cm_commissioner/multi_leg_trips_query.rb +8 -31
- data/app/queries/spree_cm_commissioner/single_leg_trips_query.rb +2 -33
- data/app/serializers/spree/v2/storefront/line_item_serializer_decorator.rb +2 -4
- data/app/serializers/spree/v2/storefront/product_serializer_decorator.rb +1 -2
- data/app/serializers/spree/v2/tenant/dynamic_field_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/dynamic_field_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/guest_serializer.rb +1 -3
- data/app/serializers/spree_cm_commissioner/v2/storefront/reserved_block_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_query_result_serializer.rb +1 -2
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_stop_serializer.rb +0 -1
- data/app/services/spree_cm_commissioner/check_ins/create_bulk.rb +5 -11
- data/app/services/spree_cm_commissioner/integrations/base/sync_manager.rb +2 -1
- data/app/services/spree_cm_commissioner/integrations/base/sync_result.rb +0 -11
- data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/external_client/client.rb +15 -14
- data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/polling/sync_matches.rb +4 -7
- data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/polling/sync_zones.rb +3 -6
- data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_manager.rb +3 -0
- data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/full_sync_strategy.rb +3 -1
- data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/incremental_sync_strategy.rb +3 -1
- data/app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/webhook_sync_strategy.rb +2 -1
- data/app/services/spree_cm_commissioner/inventory_items/reset.rb +1 -1
- data/app/services/spree_cm_commissioner/order_holds/hold.rb +0 -17
- data/app/services/spree_cm_commissioner/order_holds/release.rb +0 -17
- data/app/services/spree_cm_commissioner/reserved_blocks/reserve.rb +1 -2
- data/app/views/spree/admin/guests/_table.html.erb +87 -82
- data/app/views/spree/admin/integrations/_form.html.erb +0 -12
- data/app/views/spree/admin/integrations/index.html.erb +1 -1
- data/config/locales/en.yml +0 -64
- data/config/locales/km.yml +0 -61
- data/config/routes.rb +0 -21
- data/lib/spree_cm_commissioner/test_helper/factories/integration_factory.rb +0 -11
- data/lib/spree_cm_commissioner/trip_query_result.rb +0 -9
- data/lib/spree_cm_commissioner/trip_result.rb +2 -5
- data/lib/spree_cm_commissioner/version.rb +1 -1
- metadata +4 -188
- data/app/controllers/spree/admin/order_ticket_transfers_controller.rb +0 -25
- data/app/controllers/spree/admin/ticket_transfer_rules_controller.rb +0 -47
- data/app/controllers/spree/admin/ticket_transfers_controller.rb +0 -61
- data/app/controllers/spree/api/v2/storefront/account/recipients_controller.rb +0 -32
- data/app/controllers/spree/api/v2/storefront/ticket_transfer_acceptances_controller.rb +0 -32
- data/app/controllers/spree/api/v2/storefront/ticket_transfers_controller.rb +0 -117
- data/app/controllers/spree/api/v2/storefront/transit/item_availabilities_controller.rb +0 -66
- data/app/helpers/spree_cm_commissioner/admin/ticket_transfers_helper.rb +0 -32
- data/app/jobs/spree_cm_commissioner/audit_event_job.rb +0 -29
- data/app/jobs/spree_cm_commissioner/expire_ticket_transfer_job.rb +0 -10
- data/app/jobs/spree_cm_commissioner/vendor_route_metrics/decrease_trip_count_job.rb +0 -17
- data/app/jobs/spree_cm_commissioner/vendor_route_metrics/increase_trip_count_job.rb +0 -14
- data/app/models/concerns/spree_cm_commissioner/audit_wrapper.rb +0 -139
- data/app/models/concerns/spree_cm_commissioner/integrations/inventory_sync_cachable.rb +0 -9
- data/app/models/concerns/spree_cm_commissioner/ticket_transferable.rb +0 -15
- data/app/models/concerns/spree_cm_commissioner/variant_metadata.rb +0 -24
- data/app/models/spree_cm_commissioner/audit_event.rb +0 -11
- data/app/models/spree_cm_commissioner/currency_rate.rb +0 -15
- data/app/models/spree_cm_commissioner/integrations/book_me_bus_v1.rb +0 -56
- data/app/models/spree_cm_commissioner/integrations/larryta.rb +0 -81
- data/app/models/spree_cm_commissioner/integrations/vireak_buntham.rb +0 -82
- data/app/models/spree_cm_commissioner/ticket_transfer.rb +0 -191
- data/app/models/spree_cm_commissioner/ticket_transfer_rule.rb +0 -88
- data/app/models/spree_cm_commissioner/vendor_route_metric.rb +0 -25
- data/app/notifications/spree_cm_commissioner/ticket_transfer_accepted_notification.rb +0 -48
- data/app/notifications/spree_cm_commissioner/ticket_transfer_completed_notification.rb +0 -48
- data/app/notifications/spree_cm_commissioner/ticket_transfer_expired_notification.rb +0 -46
- data/app/notifications/spree_cm_commissioner/ticket_transfer_received_notification.rb +0 -48
- data/app/notifications/spree_cm_commissioner/ticket_transfer_rejected_notification.rb +0 -48
- data/app/overrides/spree/admin/products/_form/allow_gift_transfer.html.erb.deface +0 -9
- data/app/overrides/spree/admin/products/_form/allow_transfer.html.erb.deface +0 -9
- data/app/overrides/spree/admin/shared/_order_tabs/ticket_transfers.html.erb.deface +0 -10
- data/app/overrides/spree/admin/shared/sub_menu/_product/ticket_transfers_tab.html.erb.deface +0 -3
- data/app/queries/spree_cm_commissioner/recipient_searcher_query.rb +0 -14
- data/app/serializables/spree_cm_commissioner/item_availability_sync.rb +0 -10
- data/app/serializers/spree_cm_commissioner/v2/storefront/guest_minimal_serializer.rb +0 -30
- data/app/serializers/spree_cm_commissioner/v2/storefront/item_availability_sync_serializer.rb +0 -10
- data/app/serializers/spree_cm_commissioner/v2/storefront/line_item_minimal_serializer.rb +0 -57
- data/app/serializers/spree_cm_commissioner/v2/storefront/recipient_serializer.rb +0 -13
- data/app/serializers/spree_cm_commissioner/v2/storefront/ticket_transfer_minimal_serializer.rb +0 -17
- data/app/serializers/spree_cm_commissioner/v2/storefront/ticket_transfer_serializer.rb +0 -20
- data/app/services/spree_cm_commissioner/audit_logger.rb +0 -59
- data/app/services/spree_cm_commissioner/checkout/complete_decorator.rb +0 -22
- data/app/services/spree_cm_commissioner/currency_converter/create.rb +0 -27
- data/app/services/spree_cm_commissioner/currency_rates/manage.rb +0 -99
- data/app/services/spree_cm_commissioner/google_maps_geocoder.rb +0 -41
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/external_client/client.rb +0 -261
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/external_client/connection.rb +0 -147
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/inventory/external_inventory_item_status.rb +0 -52
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/inventory/external_inventory_items.rb +0 -91
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/inventory/unstock_inventory.rb +0 -140
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_inventory.rb +0 -52
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_item_availability.rb +0 -249
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_locations.rb +0 -103
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_product.rb +0 -66
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_route_stops.rb +0 -113
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_routes.rb +0 -128
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_seat_layout.rb +0 -345
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_service_calendars.rb +0 -59
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_trip_stop.rb +0 -179
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_trips.rb +0 -597
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_variant.rb +0 -58
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/sync_vehicle_types.rb +0 -87
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/polling/time_parser.rb +0 -19
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/base.rb +0 -40
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/branch.rb +0 -65
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/direction.rb +0 -51
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/inventory_item_status.rb +0 -148
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/location.rb +0 -55
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/operator.rb +0 -17
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/reservation_cart.rb +0 -85
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/seat.rb +0 -128
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/seat_layout.rb +0 -363
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/stop.rb +0 -84
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/trip.rb +0 -199
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/resources/wallet_payment.rb +0 -40
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/sync_manager.rb +0 -22
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/sync_strategies/full_sync_strategy.rb +0 -117
- data/app/services/spree_cm_commissioner/integrations/book_me_bus_v1/sync_strategies/incremental_sync_strategy.rb +0 -64
- data/app/services/spree_cm_commissioner/integrations/larryta/external_client/client.rb +0 -344
- data/app/services/spree_cm_commissioner/integrations/larryta/external_client/connection.rb +0 -74
- data/app/services/spree_cm_commissioner/integrations/larryta/inventory/external_inventory_item_status.rb +0 -53
- data/app/services/spree_cm_commissioner/integrations/larryta/inventory/external_inventory_items.rb +0 -106
- data/app/services/spree_cm_commissioner/integrations/larryta/inventory/hold_seats.rb +0 -143
- data/app/services/spree_cm_commissioner/integrations/larryta/inventory/release_seats.rb +0 -90
- data/app/services/spree_cm_commissioner/integrations/larryta/inventory/unstock_inventory.rb +0 -113
- data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_item_availability.rb +0 -261
- data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_product.rb +0 -72
- data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_routes.rb +0 -142
- data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_seat_layout.rb +0 -255
- data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_stock_item.rb +0 -55
- data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_trip_stop.rb +0 -167
- data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_trips.rb +0 -319
- data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_variant.rb +0 -63
- data/app/services/spree_cm_commissioner/integrations/larryta/polling/sync_vehicle_type.rb +0 -79
- data/app/services/spree_cm_commissioner/integrations/larryta/resources/base.rb +0 -39
- data/app/services/spree_cm_commissioner/integrations/larryta/resources/booking.rb +0 -113
- data/app/services/spree_cm_commissioner/integrations/larryta/resources/booking_session.rb +0 -43
- data/app/services/spree_cm_commissioner/integrations/larryta/resources/booking_transaction.rb +0 -238
- data/app/services/spree_cm_commissioner/integrations/larryta/resources/direction.rb +0 -71
- data/app/services/spree_cm_commissioner/integrations/larryta/resources/passenger.rb +0 -48
- data/app/services/spree_cm_commissioner/integrations/larryta/resources/schedule.rb +0 -150
- data/app/services/spree_cm_commissioner/integrations/larryta/resources/seat.rb +0 -31
- data/app/services/spree_cm_commissioner/integrations/larryta/resources/seat_availability.rb +0 -49
- data/app/services/spree_cm_commissioner/integrations/larryta/resources/seat_layout.rb +0 -211
- data/app/services/spree_cm_commissioner/integrations/larryta/sync_manager.rb +0 -17
- data/app/services/spree_cm_commissioner/integrations/larryta/sync_strategies/full_sync_strategy.rb +0 -79
- data/app/services/spree_cm_commissioner/integrations/larryta/sync_strategies/incremental_sync_strategy.rb +0 -58
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/external_client/client.rb +0 -206
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/external_client/connection.rb +0 -59
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/inventory/external_inventory_item_status.rb +0 -48
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/inventory/external_inventory_items.rb +0 -97
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/inventory/unstock_inventory.rb +0 -208
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_item_availability.rb +0 -270
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_locations.rb +0 -96
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_nationality_pricing.rb +0 -76
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_product.rb +0 -69
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_routes.rb +0 -110
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_seat_layout.rb +0 -207
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_stock_item.rb +0 -43
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_trip_stop.rb +0 -187
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_trips.rb +0 -300
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_variant.rb +0 -56
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/polling/sync_vehicle_type.rb +0 -51
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/base.rb +0 -32
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/booking.rb +0 -48
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/booking_transaction.rb +0 -46
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/cell.rb +0 -53
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/confirm_booking_request.rb +0 -43
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/location.rb +0 -37
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/schedule.rb +0 -138
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/seat.rb +0 -48
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/resources/seat_layout.rb +0 -79
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/sync_manager.rb +0 -17
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/sync_strategies/full_sync_strategy.rb +0 -87
- data/app/services/spree_cm_commissioner/integrations/vireak_buntham/sync_strategies/incremental_sync_strategy.rb +0 -53
- data/app/services/spree_cm_commissioner/inventory_items/generate_permanent_item.rb +0 -48
- data/app/services/spree_cm_commissioner/place_resolver.rb +0 -95
- data/app/services/spree_cm_commissioner/ticket_transfers/accept.rb +0 -132
- data/app/services/spree_cm_commissioner/ticket_transfers/cancel.rb +0 -54
- data/app/services/spree_cm_commissioner/ticket_transfers/complete.rb +0 -68
- data/app/services/spree_cm_commissioner/ticket_transfers/eligibility_checker.rb +0 -99
- data/app/services/spree_cm_commissioner/ticket_transfers/expire.rb +0 -47
- data/app/services/spree_cm_commissioner/ticket_transfers/fee_calculator.rb +0 -57
- data/app/services/spree_cm_commissioner/ticket_transfers/initiate.rb +0 -98
- data/app/services/spree_cm_commissioner/ticket_transfers/preview_rule.rb +0 -38
- data/app/services/spree_cm_commissioner/ticket_transfers/reject.rb +0 -55
- data/app/services/spree_cm_commissioner/ticket_transfers/transfer_guest.rb +0 -29
- data/app/services/spree_cm_commissioner/vendor_route_metrics/decrease_trip_count.rb +0 -19
- data/app/services/spree_cm_commissioner/vendor_route_metrics/increase_trip_count.rb +0 -24
- data/app/views/spree/admin/integrations/_book_me_bus_v1_fields.html.erb +0 -47
- data/app/views/spree/admin/integrations/_larryta_fields.html.erb +0 -58
- data/app/views/spree/admin/integrations/_vireak_buntham_fields.html.erb +0 -75
- data/app/views/spree/admin/order_ticket_transfers/show.html.erb +0 -7
- data/app/views/spree/admin/shared/_ticket_transfer_details.html.erb +0 -226
- data/app/views/spree/admin/shared/_ticket_transfer_tabs.html.erb +0 -14
- data/app/views/spree/admin/ticket_transfer_rules/_form.html.erb +0 -193
- data/app/views/spree/admin/ticket_transfer_rules/edit.html.erb +0 -11
- data/app/views/spree/admin/ticket_transfer_rules/index.html.erb +0 -79
- data/app/views/spree/admin/ticket_transfer_rules/new.html.erb +0 -11
- data/app/views/spree/admin/ticket_transfers/_search_form.html.erb +0 -70
- data/app/views/spree/admin/ticket_transfers/_tabs.html.erb +0 -14
- data/app/views/spree/admin/ticket_transfers/index.html.erb +0 -74
- data/app/views/spree/admin/ticket_transfers/show.html.erb +0 -13
- data/app/views/spree/admin/ticket_transfers/state_changes.html.erb +0 -47
- data/db/migrate/20260303101440_add_allow_transfer_to_spree_products.rb +0 -5
- data/db/migrate/20260303101907_create_cm_ticket_transfers.rb +0 -32
- data/db/migrate/20260303102316_add_state_to_cm_guests.rb +0 -7
- data/db/migrate/20260327143200_create_cm_audit_events.rb +0 -21
- data/db/migrate/20260408100000_create_cm_ticket_transfer_rules.rb +0 -28
- data/db/migrate/20260410045815_create_cm_currency_rates.rb +0 -23
- data/db/migrate/20260410120000_add_transfer_type_to_cm_ticket_transfers.rb +0 -5
- data/db/migrate/20260411102139_add_metadata_to_cm_inventory_items.rb +0 -6
- data/db/migrate/20260422120000_add_settlement_status_to_cm_ticket_transfers.rb +0 -6
- data/db/migrate/20260507000000_add_index_to_cm_ticket_transfers_completed_at.rb +0 -5
- data/db/migrate/20260520000000_add_number_to_cm_ticket_transfers.rb +0 -6
- data/db/migrate/20260605120908_add_description_to_cm_dynamic_fields.rb +0 -5
- data/db/migrate/20260608000000_add_allow_gift_transfer_to_spree_products.rb +0 -5
- data/db/migrate/20260608000000_create_cm_vendor_route_metrics.rb +0 -25
- data/db/migrate/20260608152251_add_gender_to_cm_reserved_blocks.rb +0 -5
- data/lib/spree_cm_commissioner/test_helper/factories/ticket_transfer_factory.rb +0 -18
- data/lib/spree_cm_commissioner/test_helper/factories/vendor_route_metric_factory.rb +0 -10
- data/lib/tasks/backfill_route_metrics.rake +0 -21
- 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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0774f6d0c4fad7ae396f14326fd6d0965164b74d89f355c3966bc8d1fd9563f9
|
|
4
|
+
data.tar.gz: 002d84c9f1273b54f01d5a25bdecc5f3b475a12e07b32d8e1846c19107fe776f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 260d54db1f9dd63dbfef02edf2944d02e2c582972b8903815462e438be9cbfb6f5561a7b4a4b64c2cda4af18908c8c7a91958213c06764d1f7ee4d8e2c16dec3
|
|
7
|
+
data.tar.gz: 003d6ecd547b0215851266f06e823f2f7c5e7a8da35f5b4a8051784855a4d095d088b79f700dcadca8820d561d7a9989a3ee0d9eb7940943c3c5777cc7a4742c
|
data/Gemfile.lock
CHANGED
|
@@ -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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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(
|
|
19
|
-
CAST(
|
|
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
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
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: #{
|
|
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 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:
|
|
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
|
|
|
@@ -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
|
|