spree_cm_commissioner 2.5.0.pre.pre13 → 2.5.0.pre.pre14
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/.env.example +4 -0
- data/Gemfile.lock +1 -1
- data/app/controllers/spree/admin/base_controller_decorator.rb +7 -33
- data/app/controllers/spree/api/v2/storefront/guests_controller.rb +7 -51
- data/app/controllers/spree/api/v2/storefront/intercity_taxi/distance_calculator_controller.rb +47 -0
- data/app/controllers/spree/api/v2/storefront/intercity_taxi/draft_orders_controller.rb +7 -5
- data/app/controllers/spree/api/v2/storefront/trip_search_controller.rb +2 -2
- data/app/controllers/spree/api/v2/tenant/intercity_taxi/distance_calculator_controller.rb +47 -0
- data/app/controllers/spree/api/v2/tenant/intercity_taxi/draft_orders_controller.rb +7 -5
- data/app/controllers/spree/api/v2/tenant/trip_search_controller.rb +2 -2
- data/app/interactors/spree_cm_commissioner/google_routes_distance_calculator.rb +0 -13
- data/app/interactors/spree_cm_commissioner/invalidate_cache_request.rb +3 -3
- data/app/interactors/spree_cm_commissioner/vehicle_type_updater.rb +41 -0
- data/app/jobs/spree_cm_commissioner/invalidate_cache_request_job.rb +1 -1
- data/app/mailers/spree/order_mailer_decorator.rb +22 -1
- data/app/models/concerns/spree_cm_commissioner/line_item_seat_selection.rb +40 -0
- data/app/models/concerns/spree_cm_commissioner/line_item_transitable.rb +1 -1
- data/app/models/concerns/spree_cm_commissioner/vehicle_kind.rb +21 -0
- data/app/models/spree_cm_commissioner/adjustable/adjuster/pricing_action.rb +25 -0
- data/app/models/spree_cm_commissioner/guest.rb +1 -1
- data/app/models/spree_cm_commissioner/guest_dynamic_field.rb +3 -0
- data/app/models/spree_cm_commissioner/homepage_background_app_image.rb +1 -1
- data/app/models/spree_cm_commissioner/invite_guest.rb +2 -5
- data/app/models/spree_cm_commissioner/line_item_decorator.rb +2 -2
- data/app/models/spree_cm_commissioner/option_type_decorator.rb +4 -1
- data/app/models/spree_cm_commissioner/option_value_decorator.rb +4 -1
- data/app/models/spree_cm_commissioner/{option_value_vehicle.rb → option_value_vehicle_type.rb} +2 -2
- data/app/models/spree_cm_commissioner/trip.rb +7 -6
- data/app/models/spree_cm_commissioner/vehicle.rb +8 -20
- data/app/models/spree_cm_commissioner/vehicle_type.rb +28 -0
- data/app/models/spree_cm_commissioner/vehicle_type_option_type.rb +6 -0
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +1 -0
- data/app/overrides/spree/admin/products/edit/clear_cache_button.html.erb.deface +1 -1
- data/app/overrides/spree/admin/taxons/edit/clear_cache_button.html.erb.deface +3 -2
- data/app/queries/spree_cm_commissioner/trip_query.rb +5 -5
- data/app/request_schemas/spree_cm_commissioner/intercity_taxi_draft_order_update_schema.rb +2 -0
- data/app/serializers/spree/v2/storefront/line_item_serializer_decorator.rb +12 -0
- data/app/serializers/spree/v2/tenant/line_item_serializer.rb +14 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/distance_serializer.rb +26 -0
- data/app/serializers/spree_cm_commissioner/v2/storefront/intercity_taxi_line_item_serializer.rb +3 -3
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_result_serializer.rb +2 -2
- data/app/serializers/spree_cm_commissioner/v2/storefront/trip_serializer.rb +1 -1
- data/app/serializers/spree_cm_commissioner/v2/storefront/{trip_vehicle_serializer.rb → trip_vehicle_type_serializer.rb} +2 -4
- data/app/services/spree_cm_commissioner/api_caches/invalidate.rb +98 -0
- data/app/services/spree_cm_commissioner/calculate_distance.rb +279 -0
- data/app/services/spree_cm_commissioner/cart/recalculate_decorator.rb +28 -1
- data/app/services/spree_cm_commissioner/guests/claim_invite_guest_service.rb +65 -0
- data/app/services/spree_cm_commissioner/intercity_taxi_order/calculate_distance.rb +224 -0
- data/app/services/spree_cm_commissioner/intercity_taxi_order/update.rb +30 -3
- data/app/services/spree_cm_commissioner/line_items/apply_pricing_models.rb +27 -0
- data/app/services/spree_cm_commissioner/pricing_models/apply.rb +4 -12
- data/app/services/spree_cm_commissioner/signing/sign_data.rb +42 -0
- data/app/services/spree_cm_commissioner/signing/verify_signature.rb +52 -0
- data/app/services/spree_cm_commissioner/transit/export_order.rb +146 -0
- data/app/services/spree_cm_commissioner/update_guest_service.rb +129 -0
- data/app/views/spree/admin/homepage_section/edit.html.erb +7 -2
- data/app/views/spree/order_mailer/cancel_email.html.erb +19 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/_cancel_email.html.erb +12 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/_footer.html.erb +8 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/_header.html.erb +3 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/_mailer_stylesheets.html.erb +139 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/_your_booking.html.erb +8 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/purchased_items/_items.html.erb +53 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/purchased_items/_summary.html.erb +108 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/tenant/_cancel_email.html.erb +12 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/tenant/_footer.html.erb +8 -0
- data/app/views/spree_cm_commissioner/cancel_order_mailer/tenant/_header.html.erb +15 -0
- data/app/views/spree_cm_commissioner/layouts/cancel_order_mailer.html.erb +16 -0
- data/config/locales/en.yml +15 -0
- data/config/locales/km.yml +27 -2
- data/config/routes.rb +2 -0
- data/db/migrate/20251127074809_change_guest_dynamic_fields_value_from_jsonb_to_text.rb +40 -0
- data/db/migrate/20251219035243_add_migrations_to_support_vehicle_types.rb +36 -0
- data/lib/spree_cm_commissioner/distance.rb +88 -0
- data/lib/spree_cm_commissioner/engine.rb +3 -0
- data/lib/spree_cm_commissioner/test_helper/factories/guest_factory.rb +2 -2
- data/lib/spree_cm_commissioner/test_helper/factories/line_item_factory.rb +3 -3
- data/lib/spree_cm_commissioner/test_helper/factories/pricing_model_variant_factory.rb +6 -0
- data/lib/spree_cm_commissioner/test_helper/factories/seat_layout_factory.rb +1 -1
- data/lib/spree_cm_commissioner/test_helper/factories/trip_factory.rb +1 -0
- data/lib/spree_cm_commissioner/test_helper/factories/vehicle_factory.rb +4 -1
- data/lib/spree_cm_commissioner/test_helper/factories/vehicle_type_factory.rb +7 -0
- data/lib/spree_cm_commissioner/trip_query_result.rb +1 -1
- data/lib/spree_cm_commissioner/trip_result.rb +7 -1
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +1 -1
- metadata +39 -10
- data/app/interactors/spree_cm_commissioner/trip_distance_calculator.rb +0 -165
- data/app/interactors/spree_cm_commissioner/vehicle_updater.rb +0 -41
- data/app/models/concerns/spree_cm_commissioner/vehicle_type.rb +0 -11
- data/app/models/spree_cm_commissioner/vehicle_option_type.rb +0 -6
- data/lib/spree_cm_commissioner/intercity_taxi/distance.rb +0 -38
- data/lib/spree_cm_commissioner/test_helper/factories/vendor_route_factory.rb +0 -7
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: spree_cm_commissioner
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.5.0.pre.
|
|
4
|
+
version: 2.5.0.pre.pre14
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- You
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-01-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: spree
|
|
@@ -957,6 +957,7 @@ files:
|
|
|
957
957
|
- app/controllers/spree/api/v2/storefront/homepage_data_controller.rb
|
|
958
958
|
- app/controllers/spree/api/v2/storefront/homepage_sections_controller.rb
|
|
959
959
|
- app/controllers/spree/api/v2/storefront/id_cards_controller.rb
|
|
960
|
+
- app/controllers/spree/api/v2/storefront/intercity_taxi/distance_calculator_controller.rb
|
|
960
961
|
- app/controllers/spree/api/v2/storefront/intercity_taxi/draft_orders_controller.rb
|
|
961
962
|
- app/controllers/spree/api/v2/storefront/inventory_items_controller.rb
|
|
962
963
|
- app/controllers/spree/api/v2/storefront/line_item_qrs_controller.rb
|
|
@@ -1020,6 +1021,7 @@ files:
|
|
|
1020
1021
|
- app/controllers/spree/api/v2/tenant/guests_controller.rb
|
|
1021
1022
|
- app/controllers/spree/api/v2/tenant/homepage_sections_controller.rb
|
|
1022
1023
|
- app/controllers/spree/api/v2/tenant/id_cards_controller.rb
|
|
1024
|
+
- app/controllers/spree/api/v2/tenant/intercity_taxi/distance_calculator_controller.rb
|
|
1023
1025
|
- app/controllers/spree/api/v2/tenant/intercity_taxi/draft_orders_controller.rb
|
|
1024
1026
|
- app/controllers/spree/api/v2/tenant/line_items_controller.rb
|
|
1025
1027
|
- app/controllers/spree/api/v2/tenant/notifications_controller.rb
|
|
@@ -1270,7 +1272,6 @@ files:
|
|
|
1270
1272
|
- app/interactors/spree_cm_commissioner/transactional_email_sender.rb
|
|
1271
1273
|
- app/interactors/spree_cm_commissioner/transit/draft_order_creator.rb
|
|
1272
1274
|
- app/interactors/spree_cm_commissioner/trip_clone_creator.rb
|
|
1273
|
-
- app/interactors/spree_cm_commissioner/trip_distance_calculator.rb
|
|
1274
1275
|
- app/interactors/spree_cm_commissioner/trip_stops_creator.rb
|
|
1275
1276
|
- app/interactors/spree_cm_commissioner/unique_device_token_cron_executor.rb
|
|
1276
1277
|
- app/interactors/spree_cm_commissioner/update_payment_gateway_status.rb
|
|
@@ -1293,7 +1294,7 @@ files:
|
|
|
1293
1294
|
- app/interactors/spree_cm_commissioner/user_vendor_assigner.rb
|
|
1294
1295
|
- app/interactors/spree_cm_commissioner/variant_block_updater.rb
|
|
1295
1296
|
- app/interactors/spree_cm_commissioner/vattanac_bank_initiator.rb
|
|
1296
|
-
- app/interactors/spree_cm_commissioner/
|
|
1297
|
+
- app/interactors/spree_cm_commissioner/vehicle_type_updater.rb
|
|
1297
1298
|
- app/interactors/spree_cm_commissioner/vendor_creation_telegram_alert_sender.rb
|
|
1298
1299
|
- app/interactors/spree_cm_commissioner/vendor_nearby_place_builder.rb
|
|
1299
1300
|
- app/interactors/spree_cm_commissioner/vendor_updater.rb
|
|
@@ -1379,6 +1380,7 @@ files:
|
|
|
1379
1380
|
- app/models/concerns/spree_cm_commissioner/line_item_durationable.rb
|
|
1380
1381
|
- app/models/concerns/spree_cm_commissioner/line_item_guests_concern.rb
|
|
1381
1382
|
- app/models/concerns/spree_cm_commissioner/line_item_integration.rb
|
|
1383
|
+
- app/models/concerns/spree_cm_commissioner/line_item_seat_selection.rb
|
|
1382
1384
|
- app/models/concerns/spree_cm_commissioner/line_item_transitable.rb
|
|
1383
1385
|
- app/models/concerns/spree_cm_commissioner/line_items_filter_scope.rb
|
|
1384
1386
|
- app/models/concerns/spree_cm_commissioner/metafield.rb
|
|
@@ -1408,7 +1410,7 @@ files:
|
|
|
1408
1410
|
- app/models/concerns/spree_cm_commissioner/user_notification.rb
|
|
1409
1411
|
- app/models/concerns/spree_cm_commissioner/user_preference.rb
|
|
1410
1412
|
- app/models/concerns/spree_cm_commissioner/variant_options_concern.rb
|
|
1411
|
-
- app/models/concerns/spree_cm_commissioner/
|
|
1413
|
+
- app/models/concerns/spree_cm_commissioner/vehicle_kind.rb
|
|
1412
1414
|
- app/models/concerns/spree_cm_commissioner/vendor_preference.rb
|
|
1413
1415
|
- app/models/concerns/spree_cm_commissioner/vendor_promotable.rb
|
|
1414
1416
|
- app/models/concerns/spree_cm_commissioner/video_on_demand_bitwise.rb
|
|
@@ -1416,6 +1418,7 @@ files:
|
|
|
1416
1418
|
- app/models/spree_cm_commissioner.rb
|
|
1417
1419
|
- app/models/spree_cm_commissioner/ability_decorator.rb
|
|
1418
1420
|
- app/models/spree_cm_commissioner/address_decorator.rb
|
|
1421
|
+
- app/models/spree_cm_commissioner/adjustable/adjuster/pricing_action.rb
|
|
1419
1422
|
- app/models/spree_cm_commissioner/adjustment_decorator.rb
|
|
1420
1423
|
- app/models/spree_cm_commissioner/asset.rb
|
|
1421
1424
|
- app/models/spree_cm_commissioner/back_image.rb
|
|
@@ -1493,7 +1496,7 @@ files:
|
|
|
1493
1496
|
- app/models/spree_cm_commissioner/oauth_application_decorator.rb
|
|
1494
1497
|
- app/models/spree_cm_commissioner/option_type_decorator.rb
|
|
1495
1498
|
- app/models/spree_cm_commissioner/option_value_decorator.rb
|
|
1496
|
-
- app/models/spree_cm_commissioner/
|
|
1499
|
+
- app/models/spree_cm_commissioner/option_value_vehicle_type.rb
|
|
1497
1500
|
- app/models/spree_cm_commissioner/option_value_vendor.rb
|
|
1498
1501
|
- app/models/spree_cm_commissioner/order/address_book_decorator.rb
|
|
1499
1502
|
- app/models/spree_cm_commissioner/order_decorator.rb
|
|
@@ -1605,8 +1608,9 @@ files:
|
|
|
1605
1608
|
- app/models/spree_cm_commissioner/variant_options.rb
|
|
1606
1609
|
- app/models/spree_cm_commissioner/vector_icon.rb
|
|
1607
1610
|
- app/models/spree_cm_commissioner/vehicle.rb
|
|
1608
|
-
- app/models/spree_cm_commissioner/vehicle_option_type.rb
|
|
1609
1611
|
- app/models/spree_cm_commissioner/vehicle_photo.rb
|
|
1612
|
+
- app/models/spree_cm_commissioner/vehicle_type.rb
|
|
1613
|
+
- app/models/spree_cm_commissioner/vehicle_type_option_type.rb
|
|
1610
1614
|
- app/models/spree_cm_commissioner/vendor_app_promotion_banner.rb
|
|
1611
1615
|
- app/models/spree_cm_commissioner/vendor_decorator.rb
|
|
1612
1616
|
- app/models/spree_cm_commissioner/vendor_logo.rb
|
|
@@ -1922,6 +1926,7 @@ files:
|
|
|
1922
1926
|
- app/serializers/spree_cm_commissioner/v2/storefront/calculator_serializer.rb
|
|
1923
1927
|
- app/serializers/spree_cm_commissioner/v2/storefront/category_taxon_serializer.rb
|
|
1924
1928
|
- app/serializers/spree_cm_commissioner/v2/storefront/check_in_serializer.rb
|
|
1929
|
+
- app/serializers/spree_cm_commissioner/v2/storefront/distance_serializer.rb
|
|
1925
1930
|
- app/serializers/spree_cm_commissioner/v2/storefront/dynamic_field_option_serializer.rb
|
|
1926
1931
|
- app/serializers/spree_cm_commissioner/v2/storefront/dynamic_field_serializer.rb
|
|
1927
1932
|
- app/serializers/spree_cm_commissioner/v2/storefront/event_option_value_serializer.rb
|
|
@@ -1961,7 +1966,7 @@ files:
|
|
|
1961
1966
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_serializer.rb
|
|
1962
1967
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_stop_serializer.rb
|
|
1963
1968
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_variant_serializer.rb
|
|
1964
|
-
- app/serializers/spree_cm_commissioner/v2/storefront/
|
|
1969
|
+
- app/serializers/spree_cm_commissioner/v2/storefront/trip_vehicle_type_serializer.rb
|
|
1965
1970
|
- app/serializers/spree_cm_commissioner/v2/storefront/trip_vendor_serializer.rb
|
|
1966
1971
|
- app/serializers/spree_cm_commissioner/v2/storefront/user_contact_serializer.rb
|
|
1967
1972
|
- app/serializers/spree_cm_commissioner/v2/storefront/user_identity_provider_serializer.rb
|
|
@@ -1973,6 +1978,8 @@ files:
|
|
|
1973
1978
|
- app/services/sms_adapter/plasgate.rb
|
|
1974
1979
|
- app/services/sms_adapter/twillio.rb
|
|
1975
1980
|
- app/services/spree_cm_commissioner/aes_encryption_service.rb
|
|
1981
|
+
- app/services/spree_cm_commissioner/api_caches/invalidate.rb
|
|
1982
|
+
- app/services/spree_cm_commissioner/calculate_distance.rb
|
|
1976
1983
|
- app/services/spree_cm_commissioner/cart/add_guest.rb
|
|
1977
1984
|
- app/services/spree_cm_commissioner/cart/destroy_decorator.rb
|
|
1978
1985
|
- app/services/spree_cm_commissioner/cart/recalculate_decorator.rb
|
|
@@ -1999,6 +2006,7 @@ files:
|
|
|
1999
2006
|
- app/services/spree_cm_commissioner/google_wallets/hotel_class_creator.rb
|
|
2000
2007
|
- app/services/spree_cm_commissioner/google_wallets/hotel_class_updater.rb
|
|
2001
2008
|
- app/services/spree_cm_commissioner/google_wallets/hotel_object_builder.rb
|
|
2009
|
+
- app/services/spree_cm_commissioner/guests/claim_invite_guest_service.rb
|
|
2002
2010
|
- app/services/spree_cm_commissioner/homepage_data_loader.rb
|
|
2003
2011
|
- app/services/spree_cm_commissioner/imports/base_import_order_service.rb
|
|
2004
2012
|
- app/services/spree_cm_commissioner/imports/create_order_service.rb
|
|
@@ -2021,8 +2029,10 @@ files:
|
|
|
2021
2029
|
- app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/full_sync_strategy.rb
|
|
2022
2030
|
- app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/incremental_sync_strategy.rb
|
|
2023
2031
|
- app/services/spree_cm_commissioner/integrations/stadium_x_v1/sync_strategies/webhook_sync_strategy.rb
|
|
2032
|
+
- app/services/spree_cm_commissioner/intercity_taxi_order/calculate_distance.rb
|
|
2024
2033
|
- app/services/spree_cm_commissioner/intercity_taxi_order/create.rb
|
|
2025
2034
|
- app/services/spree_cm_commissioner/intercity_taxi_order/update.rb
|
|
2035
|
+
- app/services/spree_cm_commissioner/line_items/apply_pricing_models.rb
|
|
2026
2036
|
- app/services/spree_cm_commissioner/metafields/product_metadata_service.rb
|
|
2027
2037
|
- app/services/spree_cm_commissioner/order_params_checker.rb
|
|
2028
2038
|
- app/services/spree_cm_commissioner/orders/bulk_archive_inactive_orders.rb
|
|
@@ -2049,9 +2059,13 @@ files:
|
|
|
2049
2059
|
- app/services/spree_cm_commissioner/seats/bulk_release_on_hold_blocks.rb
|
|
2050
2060
|
- app/services/spree_cm_commissioner/seats/release_expired_blocks.rb
|
|
2051
2061
|
- app/services/spree_cm_commissioner/seeds/roles_decorator.rb
|
|
2062
|
+
- app/services/spree_cm_commissioner/signing/sign_data.rb
|
|
2063
|
+
- app/services/spree_cm_commissioner/signing/verify_signature.rb
|
|
2052
2064
|
- app/services/spree_cm_commissioner/telegram_alerts/integration_sync_failure.rb
|
|
2065
|
+
- app/services/spree_cm_commissioner/transit/export_order.rb
|
|
2053
2066
|
- app/services/spree_cm_commissioner/transit/legs_builder_service.rb
|
|
2054
2067
|
- app/services/spree_cm_commissioner/trips/search.rb
|
|
2068
|
+
- app/services/spree_cm_commissioner/update_guest_service.rb
|
|
2055
2069
|
- app/services/spree_cm_commissioner/user_authenticator.rb
|
|
2056
2070
|
- app/services/spree_cm_commissioner/user_roles_assigner.rb
|
|
2057
2071
|
- app/services/spree_cm_commissioner/users/incomplete_guest_checker_service.rb
|
|
@@ -2410,6 +2424,7 @@ files:
|
|
|
2410
2424
|
- app/views/spree/layouts/event.html.erb
|
|
2411
2425
|
- app/views/spree/layouts/transit.html.erb
|
|
2412
2426
|
- app/views/spree/order_mailer/_adjustment.html.erb
|
|
2427
|
+
- app/views/spree/order_mailer/cancel_email.html.erb
|
|
2413
2428
|
- app/views/spree/order_mailer/confirm_email.html.erb
|
|
2414
2429
|
- app/views/spree/order_mailer/ticket_email.html.erb
|
|
2415
2430
|
- app/views/spree/order_mailer/ticket_email.text.erb
|
|
@@ -2488,6 +2503,16 @@ files:
|
|
|
2488
2503
|
- app/views/spree/transit/vendors/_form.html.erb
|
|
2489
2504
|
- app/views/spree/transit/vendors/_tabs.html.erb
|
|
2490
2505
|
- app/views/spree/transit/vendors/edit.html.erb
|
|
2506
|
+
- app/views/spree_cm_commissioner/cancel_order_mailer/_cancel_email.html.erb
|
|
2507
|
+
- app/views/spree_cm_commissioner/cancel_order_mailer/_footer.html.erb
|
|
2508
|
+
- app/views/spree_cm_commissioner/cancel_order_mailer/_header.html.erb
|
|
2509
|
+
- app/views/spree_cm_commissioner/cancel_order_mailer/_mailer_stylesheets.html.erb
|
|
2510
|
+
- app/views/spree_cm_commissioner/cancel_order_mailer/_your_booking.html.erb
|
|
2511
|
+
- app/views/spree_cm_commissioner/cancel_order_mailer/purchased_items/_items.html.erb
|
|
2512
|
+
- app/views/spree_cm_commissioner/cancel_order_mailer/purchased_items/_summary.html.erb
|
|
2513
|
+
- app/views/spree_cm_commissioner/cancel_order_mailer/tenant/_cancel_email.html.erb
|
|
2514
|
+
- app/views/spree_cm_commissioner/cancel_order_mailer/tenant/_footer.html.erb
|
|
2515
|
+
- app/views/spree_cm_commissioner/cancel_order_mailer/tenant/_header.html.erb
|
|
2491
2516
|
- app/views/spree_cm_commissioner/crew_invite_mailer/_mailer_stylesheets.html.erb
|
|
2492
2517
|
- app/views/spree_cm_commissioner/crew_invite_mailer/send_crew_invite_email.html.erb
|
|
2493
2518
|
- app/views/spree_cm_commissioner/event_transactional_mailer/_event_banner.html.erb
|
|
@@ -2501,6 +2526,7 @@ files:
|
|
|
2501
2526
|
- app/views/spree_cm_commissioner/guest_mailer/_mailer_stylesheets.html.erb
|
|
2502
2527
|
- app/views/spree_cm_commissioner/guest_mailer/_terms_and_conditions.html.erb
|
|
2503
2528
|
- app/views/spree_cm_commissioner/guest_mailer/send_ticket_to_guest.html.erb
|
|
2529
|
+
- app/views/spree_cm_commissioner/layouts/cancel_order_mailer.html.erb
|
|
2504
2530
|
- app/views/spree_cm_commissioner/layouts/crew_invite_mailer.html.erb
|
|
2505
2531
|
- app/views/spree_cm_commissioner/layouts/event_transactional_mailer.html.erb
|
|
2506
2532
|
- app/views/spree_cm_commissioner/layouts/guest_mailer.html.erb
|
|
@@ -2950,7 +2976,9 @@ files:
|
|
|
2950
2976
|
- db/migrate/20251017101605_create_cm_integration_mappings.rb
|
|
2951
2977
|
- db/migrate/20251113081853_add_index_to_spree_orders_updated_at.rb
|
|
2952
2978
|
- db/migrate/20251119093000_add_tenant_id_to_cm_vendor_places.rb
|
|
2979
|
+
- db/migrate/20251127074809_change_guest_dynamic_fields_value_from_jsonb_to_text.rb
|
|
2953
2980
|
- db/migrate/20251209022924_add_contact_fields_to_cm_tenants.rb
|
|
2981
|
+
- db/migrate/20251219035243_add_migrations_to_support_vehicle_types.rb
|
|
2954
2982
|
- docker-compose.yml
|
|
2955
2983
|
- docs/api/scoped-access-token-endpoints.md
|
|
2956
2984
|
- docs/option_types/attr_types.md
|
|
@@ -2973,9 +3001,9 @@ files:
|
|
|
2973
3001
|
- lib/spree_cm_commissioner.rb
|
|
2974
3002
|
- lib/spree_cm_commissioner/cached_inventory_item.rb
|
|
2975
3003
|
- lib/spree_cm_commissioner/calendar_event.rb
|
|
3004
|
+
- lib/spree_cm_commissioner/distance.rb
|
|
2976
3005
|
- lib/spree_cm_commissioner/engine.rb
|
|
2977
3006
|
- lib/spree_cm_commissioner/factories.rb
|
|
2978
|
-
- lib/spree_cm_commissioner/intercity_taxi/distance.rb
|
|
2979
3007
|
- lib/spree_cm_commissioner/intercity_taxi/map_place.rb
|
|
2980
3008
|
- lib/spree_cm_commissioner/jwt_token.rb
|
|
2981
3009
|
- lib/spree_cm_commissioner/line_item_jwt_token.rb
|
|
@@ -3030,6 +3058,7 @@ files:
|
|
|
3030
3058
|
- lib/spree_cm_commissioner/test_helper/factories/place_factory.rb
|
|
3031
3059
|
- lib/spree_cm_commissioner/test_helper/factories/pricing_action_factory.rb
|
|
3032
3060
|
- lib/spree_cm_commissioner/test_helper/factories/pricing_model_factory.rb
|
|
3061
|
+
- lib/spree_cm_commissioner/test_helper/factories/pricing_model_variant_factory.rb
|
|
3033
3062
|
- lib/spree_cm_commissioner/test_helper/factories/pricing_rule_factory.rb
|
|
3034
3063
|
- lib/spree_cm_commissioner/test_helper/factories/pricing_rule_group_factory.rb
|
|
3035
3064
|
- lib/spree_cm_commissioner/test_helper/factories/product_completion_step_banner_factory.rb
|
|
@@ -3066,11 +3095,11 @@ files:
|
|
|
3066
3095
|
- lib/spree_cm_commissioner/test_helper/factories/user_identity_provider_factory.rb
|
|
3067
3096
|
- lib/spree_cm_commissioner/test_helper/factories/variant_factory.rb
|
|
3068
3097
|
- lib/spree_cm_commissioner/test_helper/factories/vehicle_factory.rb
|
|
3098
|
+
- lib/spree_cm_commissioner/test_helper/factories/vehicle_type_factory.rb
|
|
3069
3099
|
- lib/spree_cm_commissioner/test_helper/factories/vendor_factory.rb
|
|
3070
3100
|
- lib/spree_cm_commissioner/test_helper/factories/vendor_logo_factory.rb
|
|
3071
3101
|
- lib/spree_cm_commissioner/test_helper/factories/vendor_photo_factory.rb
|
|
3072
3102
|
- lib/spree_cm_commissioner/test_helper/factories/vendor_place_factory.rb
|
|
3073
|
-
- lib/spree_cm_commissioner/test_helper/factories/vendor_route_factory.rb
|
|
3074
3103
|
- lib/spree_cm_commissioner/test_helper/factories/video_on_demand_factory.rb
|
|
3075
3104
|
- lib/spree_cm_commissioner/test_helper/factories/webhook_subscriber_factory.rb
|
|
3076
3105
|
- lib/spree_cm_commissioner/test_helper/factories/webhook_subscriber_rule_factory.rb
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
# Computes trip distance details and pricing payload.
|
|
3
|
-
#
|
|
4
|
-
# Inputs via context:
|
|
5
|
-
# - origin: { lat:, lng: }
|
|
6
|
-
# - configured_destination: { lat:, lng: }
|
|
7
|
-
# - pickups: Array<{ lat:, lng: }> (optional)
|
|
8
|
-
# - dropoffs: Array<{ lat:, lng: }> (optional)
|
|
9
|
-
# - pickup_oob_confirmed: Boolean (optional)
|
|
10
|
-
# - dropoff_oob_confirmed: Boolean (optional)
|
|
11
|
-
# - base_price_usd: Numeric
|
|
12
|
-
# - boundary_km: Numeric (optional, default 0)
|
|
13
|
-
#
|
|
14
|
-
# Outputs via context on success:
|
|
15
|
-
# - payload: Hash (compatible with previous controller response)
|
|
16
|
-
# - base_km, detour_pickup_km, detour_dropoff_km: Floats or nil
|
|
17
|
-
# - distance_km, directions_url, ordered_points, estimated_time_minutes (when optimize true)
|
|
18
|
-
class TripDistanceCalculator < BaseInteractor
|
|
19
|
-
delegate :origin,
|
|
20
|
-
:configured_destination,
|
|
21
|
-
:pickups,
|
|
22
|
-
:dropoffs,
|
|
23
|
-
:pickup_oob_confirmed,
|
|
24
|
-
:dropoff_oob_confirmed,
|
|
25
|
-
:base_price_usd,
|
|
26
|
-
:boundary_km,
|
|
27
|
-
to: :context
|
|
28
|
-
|
|
29
|
-
def call
|
|
30
|
-
validate_inputs
|
|
31
|
-
|
|
32
|
-
pickups_points, dropoffs_points, final_destination = prepare_points
|
|
33
|
-
base_km, detour_pickup_km, detour_dropoff_km = compute_route_kms(pickups_points, dropoffs_points, final_destination)
|
|
34
|
-
details_ctx = fetch_details(final_destination, pickups_points, dropoffs_points)
|
|
35
|
-
extra_data = compute_extra_data(base_km, detour_pickup_km, detour_dropoff_km)
|
|
36
|
-
payload = build_payload(details_ctx, base_km, detour_pickup_km, detour_dropoff_km, extra_data)
|
|
37
|
-
assign_context(details_ctx, base_km, detour_pickup_km, detour_dropoff_km, payload)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
private
|
|
41
|
-
|
|
42
|
-
def validate_inputs
|
|
43
|
-
context.fail!(message: 'origin is required') if origin.blank?
|
|
44
|
-
context.fail!(message: 'configured_destination is required') if configured_destination.blank?
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def compute_km(origin:, destination:, pickups: nil, dropoffs: nil, optimize: nil)
|
|
48
|
-
ctx = SpreeCmCommissioner::GoogleRoutesDistanceCalculator.call(
|
|
49
|
-
origin: origin,
|
|
50
|
-
destination: destination,
|
|
51
|
-
pickups: pickups,
|
|
52
|
-
dropoffs: dropoffs,
|
|
53
|
-
optimize: optimize
|
|
54
|
-
)
|
|
55
|
-
return nil unless ctx.success?
|
|
56
|
-
|
|
57
|
-
ctx.distance_km
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def prepare_points
|
|
61
|
-
pickups_points = Array(pickups).compact
|
|
62
|
-
dropoffs_points = Array(dropoffs).compact
|
|
63
|
-
final_destination = dropoffs_points.last || configured_destination
|
|
64
|
-
[pickups_points, dropoffs_points, final_destination]
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def compute_route_kms(pickups_points, dropoffs_points, final_destination)
|
|
68
|
-
base_km = compute_km(origin: origin, destination: configured_destination)
|
|
69
|
-
detour_pickup_km =
|
|
70
|
-
if pickups_points.any?
|
|
71
|
-
compute_km(
|
|
72
|
-
origin: origin,
|
|
73
|
-
destination: configured_destination,
|
|
74
|
-
pickups: pickups_points,
|
|
75
|
-
optimize: false
|
|
76
|
-
)
|
|
77
|
-
end
|
|
78
|
-
detour_dropoff_km =
|
|
79
|
-
if dropoffs_points.any?
|
|
80
|
-
compute_km(
|
|
81
|
-
origin: origin,
|
|
82
|
-
destination: final_destination,
|
|
83
|
-
dropoffs: dropoffs_points,
|
|
84
|
-
optimize: false
|
|
85
|
-
)
|
|
86
|
-
end
|
|
87
|
-
[base_km, detour_pickup_km, detour_dropoff_km]
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def fetch_details(final_destination, pickups_points, dropoffs_points)
|
|
91
|
-
ctx = SpreeCmCommissioner::GoogleRoutesDistanceCalculator.call(
|
|
92
|
-
origin: origin,
|
|
93
|
-
destination: final_destination,
|
|
94
|
-
pickups: pickups_points,
|
|
95
|
-
dropoffs: dropoffs_points,
|
|
96
|
-
optimize: true
|
|
97
|
-
)
|
|
98
|
-
context.fail!(message: ctx.message || 'Unable to calculate') unless ctx.success?
|
|
99
|
-
ctx
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
def compute_extra_data(base_km, detour_pickup_km, detour_dropoff_km)
|
|
103
|
-
extra_pickup_km = compute_extra_km(detour_pickup_km, base_km, pickup_oob_confirmed)
|
|
104
|
-
extra_dropoff_km = compute_extra_km(detour_dropoff_km, base_km, dropoff_oob_confirmed)
|
|
105
|
-
extra_pickup_charge_usd = charge_for_extra_km(extra_pickup_km)
|
|
106
|
-
extra_dropoff_charge_usd = charge_for_extra_km(extra_dropoff_km)
|
|
107
|
-
extra_charge_usd = (extra_pickup_charge_usd + extra_dropoff_charge_usd).round(2)
|
|
108
|
-
total_price_usd = (base_price_usd.to_f + extra_charge_usd).round(2)
|
|
109
|
-
|
|
110
|
-
{
|
|
111
|
-
extra_pickup_km: extra_pickup_km,
|
|
112
|
-
extra_dropoff_km: extra_dropoff_km,
|
|
113
|
-
extra_pickup_charge_usd: extra_pickup_charge_usd,
|
|
114
|
-
extra_dropoff_charge_usd: extra_dropoff_charge_usd,
|
|
115
|
-
total_price_usd: total_price_usd
|
|
116
|
-
}
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
def build_payload(details_ctx, base_km, detour_pickup_km, detour_dropoff_km, data)
|
|
120
|
-
{
|
|
121
|
-
distance_km: details_ctx.distance_km,
|
|
122
|
-
directions_url: details_ctx.directions_url,
|
|
123
|
-
ordered_points: details_ctx.ordered_points,
|
|
124
|
-
estimated_time_minutes: details_ctx.estimated_time_minutes,
|
|
125
|
-
base_price_usd: base_price_usd.to_f,
|
|
126
|
-
total_price_usd: data[:total_price_usd],
|
|
127
|
-
extra_pickup_km: data[:extra_pickup_km],
|
|
128
|
-
extra_dropoff_km: data[:extra_dropoff_km],
|
|
129
|
-
extra_pickup_charge_usd: data[:extra_pickup_charge_usd],
|
|
130
|
-
extra_dropoff_charge_usd: data[:extra_dropoff_charge_usd],
|
|
131
|
-
extra_charge_usd: data[:extra_charge_usd],
|
|
132
|
-
base_km: base_km,
|
|
133
|
-
detour_pickup_km: detour_pickup_km,
|
|
134
|
-
detour_dropoff_km: detour_dropoff_km
|
|
135
|
-
}
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
def assign_context(details_ctx, base_km, detour_pickup_km, detour_dropoff_km, payload)
|
|
139
|
-
context.payload = payload
|
|
140
|
-
context.distance_km = details_ctx.distance_km
|
|
141
|
-
context.directions_url = details_ctx.directions_url
|
|
142
|
-
context.ordered_points = details_ctx.ordered_points
|
|
143
|
-
context.estimated_time_minutes = details_ctx.estimated_time_minutes
|
|
144
|
-
context.base_km = base_km
|
|
145
|
-
context.detour_pickup_km = detour_pickup_km
|
|
146
|
-
context.detour_dropoff_km = detour_dropoff_km
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
def compute_extra_km(detour_km, base_km, confirmed)
|
|
150
|
-
return 0.0 unless confirmed && detour_km && base_km
|
|
151
|
-
|
|
152
|
-
[(detour_km - base_km - boundary_km), 0.0].max
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
def charge_for_extra_km(extra_km)
|
|
156
|
-
x = extra_km.to_f
|
|
157
|
-
return 0.0 if x <= 0
|
|
158
|
-
return 2.0 if x <= 5.0
|
|
159
|
-
return 5.0 if x <= 10.0
|
|
160
|
-
return 10.0 if x <= 20.0
|
|
161
|
-
|
|
162
|
-
(10.0 + ((x - 20.0) * 0.5)).round(2)
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
end
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
class VehicleUpdater < BaseInteractor
|
|
3
|
-
def call
|
|
4
|
-
vehicle = context.vehicle
|
|
5
|
-
data = context.data
|
|
6
|
-
|
|
7
|
-
option_value_ids = data[:option_value_ids] || []
|
|
8
|
-
option_type_ids = data[:option_type_ids] || []
|
|
9
|
-
|
|
10
|
-
ActiveRecord::Base.transaction do
|
|
11
|
-
update_vehicle!(vehicle, data[:vehicle_attributes])
|
|
12
|
-
update_amenities!(vehicle, option_value_ids, option_type_ids)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
context.message = I18n.t('views.transit.vehicles.update_success')
|
|
16
|
-
rescue StandardError => e
|
|
17
|
-
context.fail!(message: "Failed to update vehicle: #{e.message}")
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
private
|
|
21
|
-
|
|
22
|
-
def update_vehicle!(vehicle, attributes)
|
|
23
|
-
return if vehicle.update(attributes.slice(:code, :license_plate, :allow_seat_selection, :vehicle_type, :number_of_seats))
|
|
24
|
-
|
|
25
|
-
raise vehicle.errors.full_messages.to_sentence
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def update_amenities!(vehicle, option_value_ids, option_type_ids)
|
|
29
|
-
vehicle.option_value_vehicles.where.not(option_value_id: option_value_ids).destroy_all
|
|
30
|
-
vehicle.vehicle_option_types.where.not(option_type_id: option_type_ids).destroy_all
|
|
31
|
-
|
|
32
|
-
option_value_ids.each do |option_value_id|
|
|
33
|
-
vehicle.option_value_vehicles.find_or_create_by(option_value_id: option_value_id)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
option_type_ids.each do |option_type_id|
|
|
37
|
-
vehicle.vehicle_option_types.find_or_create_by(option_type_id: option_type_id)
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module VehicleType
|
|
3
|
-
extend ActiveSupport::Concern
|
|
4
|
-
|
|
5
|
-
VEHICLE_TYPES = %i[suv sedan minivan van sleeping_bus luxury_van air_bus bus ferry].freeze
|
|
6
|
-
|
|
7
|
-
included do
|
|
8
|
-
enum vehicle_type: VEHICLE_TYPES if table_exists? && column_names.include?('vehicle_type')
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
module SpreeCmCommissioner
|
|
2
|
-
module IntercityTaxi
|
|
3
|
-
class Distance
|
|
4
|
-
attr_accessor :distance_km, :ordered_points, :estimated_time_minutes, :base_km,
|
|
5
|
-
:detour_pickup_km, :detour_dropoff_km, :extra_pickup_km, :extra_dropoff_km
|
|
6
|
-
|
|
7
|
-
def initialize(options = {})
|
|
8
|
-
options = options.stringify_keys if options.is_a?(Hash)
|
|
9
|
-
|
|
10
|
-
@distance_km = options['distance_km']&.to_f
|
|
11
|
-
@ordered_points = options['ordered_points']
|
|
12
|
-
@estimated_time_minutes = options['estimated_time_minutes']&.to_i
|
|
13
|
-
@base_km = options['base_km']&.to_f
|
|
14
|
-
@detour_pickup_km = options['detour_pickup_km']&.to_f
|
|
15
|
-
@detour_dropoff_km = options['detour_dropoff_km']&.to_f
|
|
16
|
-
@extra_pickup_km = options['extra_pickup_km']&.to_f
|
|
17
|
-
@extra_dropoff_km = options['extra_dropoff_km']&.to_f
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def self.from_hash(hash)
|
|
21
|
-
new(hash || {})
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def to_h
|
|
25
|
-
{
|
|
26
|
-
'distance_km' => @distance_km,
|
|
27
|
-
'ordered_points' => @ordered_points,
|
|
28
|
-
'estimated_time_minutes' => @estimated_time_minutes,
|
|
29
|
-
'base_km' => @base_km,
|
|
30
|
-
'detour_pickup_km' => @detour_pickup_km,
|
|
31
|
-
'detour_dropoff_km' => @detour_dropoff_km,
|
|
32
|
-
'extra_pickup_km' => @extra_pickup_km,
|
|
33
|
-
'extra_dropoff_km' => @extra_dropoff_km
|
|
34
|
-
}.compact
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|