spree_cm_commissioner 1.9.2 → 1.10.0.pre.pre

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 (83) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test_and_build_gem.yml +86 -0
  3. data/.gitignore +2 -1
  4. data/Gemfile.lock +22 -1
  5. data/app/controllers/spree/admin/events_controller.rb +47 -0
  6. data/app/controllers/spree/admin/prototypes_controller_decorator.rb +20 -0
  7. data/app/controllers/spree/admin/stock_managements_controller.rb +17 -1
  8. data/app/controllers/spree/api/v2/storefront/accommodations/variants_controller.rb +42 -0
  9. data/app/controllers/spree/api/v2/storefront/accommodations_controller.rb +14 -31
  10. data/app/finders/spree_cm_commissioner/accommodations/find.rb +40 -0
  11. data/app/finders/spree_cm_commissioner/accommodations/find_variant.rb +35 -0
  12. data/app/interactors/spree_cm_commissioner/create_event.rb +65 -0
  13. data/app/interactors/spree_cm_commissioner/firebase_email_fetcher.rb +30 -4
  14. data/app/interactors/spree_cm_commissioner/firebase_email_fetcher_cron_executor.rb +23 -0
  15. data/app/interactors/spree_cm_commissioner/inventory_item_syncer.rb +25 -0
  16. data/app/interactors/spree_cm_commissioner/stock/permanent_inventory_items_generator.rb +71 -0
  17. data/app/interactors/spree_cm_commissioner/vattanac_bank_initiator.rb +25 -6
  18. data/app/jobs/spree_cm_commissioner/firebase_email_fetcher_job.rb +9 -0
  19. data/app/jobs/spree_cm_commissioner/inventory_item_syncer_job.rb +7 -0
  20. data/app/jobs/spree_cm_commissioner/stock/permanent_inventory_items_generator_job.rb +9 -0
  21. data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +26 -0
  22. data/app/models/concerns/spree_cm_commissioner/product_type.rb +10 -0
  23. data/app/models/spree_cm_commissioner/inventory.rb +11 -0
  24. data/app/models/spree_cm_commissioner/inventory_item.rb +37 -0
  25. data/app/models/spree_cm_commissioner/invite_user_taxon.rb +1 -0
  26. data/app/models/spree_cm_commissioner/line_item_decorator.rb +1 -0
  27. data/app/models/spree_cm_commissioner/order_decorator.rb +15 -0
  28. data/app/models/spree_cm_commissioner/product_decorator.rb +10 -0
  29. data/app/models/spree_cm_commissioner/prototype_decorator.rb +9 -0
  30. data/app/models/spree_cm_commissioner/redis_stock/cached_inventory_items_builder.rb +40 -0
  31. data/app/models/spree_cm_commissioner/redis_stock/inventory_updater.rb +114 -0
  32. data/app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb +42 -0
  33. data/app/models/spree_cm_commissioner/redis_stock/variant_cached_inventory_items_builder.rb +27 -0
  34. data/app/models/spree_cm_commissioner/stock/availability_checker.rb +27 -25
  35. data/app/models/spree_cm_commissioner/stock/availability_validator_decorator.rb +2 -1
  36. data/app/models/spree_cm_commissioner/stock/line_item_availability_checker.rb +3 -3
  37. data/app/models/spree_cm_commissioner/stock/order_availability_checker.rb +44 -0
  38. data/app/models/spree_cm_commissioner/stock_movement_decorator.rb +34 -0
  39. data/app/models/spree_cm_commissioner/taxon_decorator.rb +2 -1
  40. data/app/models/spree_cm_commissioner/user_decorator.rb +5 -1
  41. data/app/models/spree_cm_commissioner/variant_decorator.rb +24 -17
  42. data/app/overrides/spree/admin/prototypes/_form/description.html.erb.deface +6 -0
  43. data/app/overrides/spree/admin/prototypes/_form/icon.html.erb.deface +8 -0
  44. data/app/overrides/spree/admin/prototypes/_form/product_type.html.erb.deface +2 -2
  45. data/app/overrides/spree/admin/shared/sub_menu/_product/events_tab.html.erb.deface +3 -0
  46. data/app/request_schemas/spree_cm_commissioner/accommodation_request_schema.rb +3 -0
  47. data/app/request_schemas/spree_cm_commissioner/application_request_schema.rb +1 -1
  48. data/app/request_schemas/spree_cm_commissioner/variant_request_schema.rb +19 -0
  49. data/app/serializers/spree/v2/storefront/accommodation_serializer.rb +2 -0
  50. data/app/serializers/spree/v2/tenant/payment_method_serializer.rb +12 -0
  51. data/app/serializers/spree/v2/tenant/user_serializer.rb +1 -1
  52. data/app/views/spree/admin/events/_search_form.html.erb +61 -0
  53. data/app/views/spree/admin/events/_tab.html.erb +25 -0
  54. data/app/views/spree/admin/events/_table.html.erb +27 -0
  55. data/app/views/spree/admin/events/index.html.erb +15 -0
  56. data/app/views/spree/admin/stock_managements/_events_popover.html.erb +17 -0
  57. data/app/views/spree/admin/stock_managements/calendar.html.erb +32 -0
  58. data/app/views/spree/admin/stock_managements/index.html.erb +31 -5
  59. data/app/views/spree_cm_commissioner/crew_invite_mailer/_mailer_stylesheets.html.erb +2 -2
  60. data/app/views/spree_cm_commissioner/crew_invite_mailer/send_crew_invite_email.html.erb +1 -1
  61. data/config/initializers/user_manager_decorator.rb +26 -0
  62. data/config/routes.rb +12 -2
  63. data/db/migrate/20250304293518_create_cm_inventory_items.rb +21 -0
  64. data/db/migrate/20250425084929_add_description_to_spree_prototypes.rb +5 -0
  65. data/db/migrate/20250425085938_add_preferences_to_spree_prototypes.rb +5 -0
  66. data/db/migrate/20250428025645_add_slug_to_spree_prototypes.rb +6 -0
  67. data/db/migrate/20250429094228_add_lock_version_to_cm_inventory_items.rb +5 -0
  68. data/docker-compose.yml +1 -1
  69. data/lib/generators/spree_cm_commissioner/install/install_generator.rb +2 -2
  70. data/lib/generators/spree_cm_commissioner/install/templates/app/javascript/{spree_cm_commissioner → spree_dashboard/spree_cm_commissioner}/utilities.js +4 -0
  71. data/lib/spree_cm_commissioner/cached_inventory_item.rb +23 -0
  72. data/lib/spree_cm_commissioner/calendar_event.rb +11 -1
  73. data/lib/spree_cm_commissioner/test_helper/factories/inventory_item_factory.rb +9 -0
  74. data/lib/spree_cm_commissioner/test_helper/factories/variant_factory.rb +28 -6
  75. data/lib/spree_cm_commissioner/version.rb +1 -1
  76. data/lib/spree_cm_commissioner.rb +34 -0
  77. data/lib/tasks/create_default_non_permanent_inventory_items.rake +16 -0
  78. data/lib/tasks/fetch_email.rake +7 -0
  79. data/lib/tasks/generate_inventory_items.rake +7 -0
  80. data/spree_cm_commissioner.gemspec +5 -0
  81. metadata +88 -7
  82. data/app/queries/spree_cm_commissioner/variant_availability/non_permanent_stock_query.rb +0 -45
  83. data/app/queries/spree_cm_commissioner/variant_availability/permanent_stock_query.rb +0 -55
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: 1.9.2
4
+ version: 1.10.0.pre.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - You
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-25 00:00:00.000000000 Z
11
+ date: 2025-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: spree
@@ -464,6 +464,48 @@ dependencies:
464
464
  - - "~>"
465
465
  - !ruby/object:Gem::Version
466
466
  version: '3.2'
467
+ - !ruby/object:Gem::Dependency
468
+ name: redis
469
+ requirement: !ruby/object:Gem::Requirement
470
+ requirements:
471
+ - - ">="
472
+ - !ruby/object:Gem::Version
473
+ version: '0'
474
+ type: :runtime
475
+ prerelease: false
476
+ version_requirements: !ruby/object:Gem::Requirement
477
+ requirements:
478
+ - - ">="
479
+ - !ruby/object:Gem::Version
480
+ version: '0'
481
+ - !ruby/object:Gem::Dependency
482
+ name: redis-rails
483
+ requirement: !ruby/object:Gem::Requirement
484
+ requirements:
485
+ - - ">="
486
+ - !ruby/object:Gem::Version
487
+ version: '0'
488
+ type: :runtime
489
+ prerelease: false
490
+ version_requirements: !ruby/object:Gem::Requirement
491
+ requirements:
492
+ - - ">="
493
+ - !ruby/object:Gem::Version
494
+ version: '0'
495
+ - !ruby/object:Gem::Dependency
496
+ name: connection_pool
497
+ requirement: !ruby/object:Gem::Requirement
498
+ requirements:
499
+ - - ">="
500
+ - !ruby/object:Gem::Version
501
+ version: '0'
502
+ type: :runtime
503
+ prerelease: false
504
+ version_requirements: !ruby/object:Gem::Requirement
505
+ requirements:
506
+ - - ">="
507
+ - !ruby/object:Gem::Version
508
+ version: '0'
467
509
  - !ruby/object:Gem::Dependency
468
510
  name: pg
469
511
  requirement: !ruby/object:Gem::Requirement
@@ -705,6 +747,7 @@ files:
705
747
  - app/controllers/spree/admin/customer_notifications_controller.rb
706
748
  - app/controllers/spree/admin/device_tokens_controller.rb
707
749
  - app/controllers/spree/admin/event_blazer_queries_controller.rb
750
+ - app/controllers/spree/admin/events_controller.rb
708
751
  - app/controllers/spree/admin/feature_images_controller.rb
709
752
  - app/controllers/spree/admin/google_wallets_controller.rb
710
753
  - app/controllers/spree/admin/guest_card_classes_controller.rb
@@ -735,6 +778,7 @@ files:
735
778
  - app/controllers/spree/admin/promotion_custom_dates_rules_controller.rb
736
779
  - app/controllers/spree/admin/promotion_events_rules_controller.rb
737
780
  - app/controllers/spree/admin/promotion_weekend_rules_controller.rb
781
+ - app/controllers/spree/admin/prototypes_controller_decorator.rb
738
782
  - app/controllers/spree/admin/s3_presigned_urls_controller.rb
739
783
  - app/controllers/spree/admin/stock_managements_controller.rb
740
784
  - app/controllers/spree/admin/system_controller.rb
@@ -786,6 +830,7 @@ files:
786
830
  - app/controllers/spree/api/v2/platform/seat_number_layouts_controller.rb
787
831
  - app/controllers/spree/api/v2/platform/taxons_controller_decorator.rb
788
832
  - app/controllers/spree/api/v2/resource_controller_decorator.rb
833
+ - app/controllers/spree/api/v2/storefront/accommodations/variants_controller.rb
789
834
  - app/controllers/spree/api/v2/storefront/accommodations_controller.rb
790
835
  - app/controllers/spree/api/v2/storefront/account/orders_controller_decorator.rb
791
836
  - app/controllers/spree/api/v2/storefront/account/preferred_payment_method_controller.rb
@@ -956,6 +1001,8 @@ files:
956
1001
  - app/exception_notifier/spree_cm_commissioner/telegram_notifier.rb
957
1002
  - app/factory/spree_cm_commissioner/order_telegram_message_factory.rb
958
1003
  - app/factory/spree_cm_commissioner/telegram_message_factory.rb
1004
+ - app/finders/spree_cm_commissioner/accommodations/find.rb
1005
+ - app/finders/spree_cm_commissioner/accommodations/find_variant.rb
959
1006
  - app/finders/spree_cm_commissioner/line_items/find_by_variant_decorator.rb
960
1007
  - app/finders/spree_cm_commissioner/orders/find.rb
961
1008
  - app/finders/spree_cm_commissioner/orders/find_by_state.rb
@@ -992,6 +1039,7 @@ files:
992
1039
  - app/interactors/spree_cm_commissioner/check_in_destroyer.rb
993
1040
  - app/interactors/spree_cm_commissioner/confirm_pin_code_checker.rb
994
1041
  - app/interactors/spree_cm_commissioner/conversion_pre_calculator.rb
1042
+ - app/interactors/spree_cm_commissioner/create_event.rb
995
1043
  - app/interactors/spree_cm_commissioner/crew_inviter.rb
996
1044
  - app/interactors/spree_cm_commissioner/customer_content_notification_creator.rb
997
1045
  - app/interactors/spree_cm_commissioner/customer_notification_cron_executor.rb
@@ -1002,6 +1050,7 @@ files:
1002
1050
  - app/interactors/spree_cm_commissioner/event_qr_generator.rb
1003
1051
  - app/interactors/spree_cm_commissioner/existing_account_checker.rb
1004
1052
  - app/interactors/spree_cm_commissioner/firebase_email_fetcher.rb
1053
+ - app/interactors/spree_cm_commissioner/firebase_email_fetcher_cron_executor.rb
1005
1054
  - app/interactors/spree_cm_commissioner/firebase_id_token_provider.rb
1006
1055
  - app/interactors/spree_cm_commissioner/google_places_fetcher.rb
1007
1056
  - app/interactors/spree_cm_commissioner/guest_id_card_manager.rb
@@ -1011,6 +1060,7 @@ files:
1011
1060
  - app/interactors/spree_cm_commissioner/imported_csv_downloader.rb
1012
1061
  - app/interactors/spree_cm_commissioner/international_mobile_formatter.rb
1013
1062
  - app/interactors/spree_cm_commissioner/invalidate_cache_request.rb
1063
+ - app/interactors/spree_cm_commissioner/inventory_item_syncer.rb
1014
1064
  - app/interactors/spree_cm_commissioner/invoice_creator.rb
1015
1065
  - app/interactors/spree_cm_commissioner/media/signed_cookie_generator.rb
1016
1066
  - app/interactors/spree_cm_commissioner/media/signed_path_generator.rb
@@ -1040,6 +1090,7 @@ files:
1040
1090
  - app/interactors/spree_cm_commissioner/sms.rb
1041
1091
  - app/interactors/spree_cm_commissioner/sqs/media_convert_job_status.rb
1042
1092
  - app/interactors/spree_cm_commissioner/state_updater.rb
1093
+ - app/interactors/spree_cm_commissioner/stock/permanent_inventory_items_generator.rb
1043
1094
  - app/interactors/spree_cm_commissioner/subscriptions_order_creator.rb
1044
1095
  - app/interactors/spree_cm_commissioner/subscriptions_order_cron_executor.rb
1045
1096
  - app/interactors/spree_cm_commissioner/subscriptions_prepaid_order_creator.rb
@@ -1089,8 +1140,10 @@ files:
1089
1140
  - app/jobs/spree_cm_commissioner/enqueue_cart/add_item_job.rb
1090
1141
  - app/jobs/spree_cm_commissioner/ensure_event_id_for_guests_job.rb
1091
1142
  - app/jobs/spree_cm_commissioner/export_csv_job.rb
1143
+ - app/jobs/spree_cm_commissioner/firebase_email_fetcher_job.rb
1092
1144
  - app/jobs/spree_cm_commissioner/import_order_job.rb
1093
1145
  - app/jobs/spree_cm_commissioner/invalidate_cache_request_job.rb
1146
+ - app/jobs/spree_cm_commissioner/inventory_item_syncer_job.rb
1094
1147
  - app/jobs/spree_cm_commissioner/option_type_variants_public_metadata_updater_job.rb
1095
1148
  - app/jobs/spree_cm_commissioner/option_value_variants_public_metadata_updater_job.rb
1096
1149
  - app/jobs/spree_cm_commissioner/order_complete_telegram_sender_job.rb
@@ -1098,6 +1151,7 @@ files:
1098
1151
  - app/jobs/spree_cm_commissioner/sms_job.rb
1099
1152
  - app/jobs/spree_cm_commissioner/sms_pin_code_job.rb
1100
1153
  - app/jobs/spree_cm_commissioner/state_job.rb
1154
+ - app/jobs/spree_cm_commissioner/stock/permanent_inventory_items_generator_job.rb
1101
1155
  - app/jobs/spree_cm_commissioner/subscription_order_executor_job.rb
1102
1156
  - app/jobs/spree_cm_commissioner/telegram_debug_pin_code_sender_job.rb
1103
1157
  - app/jobs/spree_cm_commissioner/telegram_notification_sender_job.rb
@@ -1190,6 +1244,8 @@ files:
1190
1244
  - app/models/spree_cm_commissioner/image_methods_decorator.rb
1191
1245
  - app/models/spree_cm_commissioner/import.rb
1192
1246
  - app/models/spree_cm_commissioner/imports/import_order.rb
1247
+ - app/models/spree_cm_commissioner/inventory.rb
1248
+ - app/models/spree_cm_commissioner/inventory_item.rb
1193
1249
  - app/models/spree_cm_commissioner/invite.rb
1194
1250
  - app/models/spree_cm_commissioner/invite_user_event.rb
1195
1251
  - app/models/spree_cm_commissioner/invite_user_taxon.rb
@@ -1239,6 +1295,10 @@ files:
1239
1295
  - app/models/spree_cm_commissioner/promotion_decorator.rb
1240
1296
  - app/models/spree_cm_commissioner/property_decorator.rb
1241
1297
  - app/models/spree_cm_commissioner/prototype_decorator.rb
1298
+ - app/models/spree_cm_commissioner/redis_stock/cached_inventory_items_builder.rb
1299
+ - app/models/spree_cm_commissioner/redis_stock/inventory_updater.rb
1300
+ - app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb
1301
+ - app/models/spree_cm_commissioner/redis_stock/variant_cached_inventory_items_builder.rb
1242
1302
  - app/models/spree_cm_commissioner/role_decorator.rb
1243
1303
  - app/models/spree_cm_commissioner/role_permission.rb
1244
1304
  - app/models/spree_cm_commissioner/s3_presigned_url.rb
@@ -1251,8 +1311,10 @@ files:
1251
1311
  - app/models/spree_cm_commissioner/stock/availability_validator_decorator.rb
1252
1312
  - app/models/spree_cm_commissioner/stock/inventory_unit_builder_decorator.rb
1253
1313
  - app/models/spree_cm_commissioner/stock/line_item_availability_checker.rb
1314
+ - app/models/spree_cm_commissioner/stock/order_availability_checker.rb
1254
1315
  - app/models/spree_cm_commissioner/stock_item_decorator.rb
1255
1316
  - app/models/spree_cm_commissioner/stock_location_decorator.rb
1317
+ - app/models/spree_cm_commissioner/stock_movement_decorator.rb
1256
1318
  - app/models/spree_cm_commissioner/stop.rb
1257
1319
  - app/models/spree_cm_commissioner/store_decorator.rb
1258
1320
  - app/models/spree_cm_commissioner/subscription.rb
@@ -1358,6 +1420,8 @@ files:
1358
1420
  - app/overrides/spree/admin/products/new/subscribable_checkbox.html.erb.deface
1359
1421
  - app/overrides/spree/admin/promotions/_form/auto_apply_field.html.erb.deface
1360
1422
  - app/overrides/spree/admin/promotions/index/index.html.erb.deface
1423
+ - app/overrides/spree/admin/prototypes/_form/description.html.erb.deface
1424
+ - app/overrides/spree/admin/prototypes/_form/icon.html.erb.deface
1361
1425
  - app/overrides/spree/admin/prototypes/_form/option_types.html.erb.deface
1362
1426
  - app/overrides/spree/admin/prototypes/_form/product_type.html.erb.deface
1363
1427
  - app/overrides/spree/admin/prototypes/show/product_type.html.erb.deface
@@ -1385,6 +1449,7 @@ files:
1385
1449
  - app/overrides/spree/admin/shared/sub_menu/_integrations/telegram_bot.html.erb.deface
1386
1450
  - app/overrides/spree/admin/shared/sub_menu/_orders/import_order.html.erb.deface
1387
1451
  - app/overrides/spree/admin/shared/sub_menu/_organizations/tenants_tab.html.erb.deface
1452
+ - app/overrides/spree/admin/shared/sub_menu/_product/events_tab.html.erb.deface
1388
1453
  - app/overrides/spree/admin/shipping_methods/_form/vendor.html.erb.deface
1389
1454
  - app/overrides/spree/admin/state_changes/index/add_second_to_timestamp.html.erb.deface
1390
1455
  - app/overrides/spree/admin/stock_locations/_form/lat_long.html.erb.deface
@@ -1452,13 +1517,12 @@ files:
1452
1517
  - app/queries/spree_cm_commissioner/trip_search_query.rb
1453
1518
  - app/queries/spree_cm_commissioner/trip_seat_layout_query.rb
1454
1519
  - app/queries/spree_cm_commissioner/users_by_event_fetcher_query.rb
1455
- - app/queries/spree_cm_commissioner/variant_availability/non_permanent_stock_query.rb
1456
- - app/queries/spree_cm_commissioner/variant_availability/permanent_stock_query.rb
1457
1520
  - app/request_schemas/spree_cm_commissioner/accommodation_request_schema.rb
1458
1521
  - app/request_schemas/spree_cm_commissioner/application_request_schema.rb
1459
1522
  - app/request_schemas/spree_cm_commissioner/profile_image_request_schema.rb
1460
1523
  - app/request_schemas/spree_cm_commissioner/user_account_linkage_request_schema.rb
1461
1524
  - app/request_schemas/spree_cm_commissioner/user_profile_request_schema.rb
1525
+ - app/request_schemas/spree_cm_commissioner/variant_request_schema.rb
1462
1526
  - app/serializables/spree_cm_commissioner/event_ticket_aggregator.rb
1463
1527
  - app/serializables/spree_cm_commissioner/pie_chart_event_aggregator.rb
1464
1528
  - app/serializables/spree_cm_commissioner/queue_item.rb
@@ -1663,6 +1727,10 @@ files:
1663
1727
  - app/views/spree/admin/device_tokens/edit.html.erb
1664
1728
  - app/views/spree/admin/device_tokens/index.html.erb
1665
1729
  - app/views/spree/admin/device_tokens/new.html.erb
1730
+ - app/views/spree/admin/events/_search_form.html.erb
1731
+ - app/views/spree/admin/events/_tab.html.erb
1732
+ - app/views/spree/admin/events/_table.html.erb
1733
+ - app/views/spree/admin/events/index.html.erb
1666
1734
  - app/views/spree/admin/feature_images/_form.html.erb
1667
1735
  - app/views/spree/admin/feature_images/edit.html.erb
1668
1736
  - app/views/spree/admin/feature_images/index.html.erb
@@ -1779,7 +1847,9 @@ files:
1779
1847
  - app/views/spree/admin/shared/_video_on_demand_helper_script.html.erb
1780
1848
  - app/views/spree/admin/shared/sub_menu/_calendar.html.erb
1781
1849
  - app/views/spree/admin/shared/sub_menu/_homepage.html.erb
1850
+ - app/views/spree/admin/stock_managements/_events_popover.html.erb
1782
1851
  - app/views/spree/admin/stock_managements/_variant_stock_items.html.erb
1852
+ - app/views/spree/admin/stock_managements/calendar.html.erb
1783
1853
  - app/views/spree/admin/stock_managements/index.html.erb
1784
1854
  - app/views/spree/admin/system/show.html.erb
1785
1855
  - app/views/spree/admin/taxon_childrens/index.html.erb
@@ -2069,6 +2139,7 @@ files:
2069
2139
  - config/initializers/spree_commissioner.rb
2070
2140
  - config/initializers/spree_permitted_attributes.rb
2071
2141
  - config/initializers/telegram_bot.rb
2142
+ - config/initializers/user_manager_decorator.rb
2072
2143
  - config/locales/dry_validations.en.yml
2073
2144
  - config/locales/en.yml
2074
2145
  - config/locales/km.yml
@@ -2344,6 +2415,7 @@ files:
2344
2415
  - db/migrate/20250304101907_create_spree_cm_commissioner_invite.rb
2345
2416
  - db/migrate/20250304101946_create_spree_cm_commissioner_invite_user_taxon.rb
2346
2417
  - db/migrate/20250304155234_add_meta_data_to_spree_vendors.rb
2418
+ - db/migrate/20250304293518_create_cm_inventory_items.rb
2347
2419
  - db/migrate/20250307013422_add_parent_id_to_cm_place.rb
2348
2420
  - db/migrate/20250307073003_add_tenant_id_to_cm_customer_notifications.rb
2349
2421
  - db/migrate/20250307083809_remove_tenant_id_from_cm_notifications.rb
@@ -2359,6 +2431,10 @@ files:
2359
2431
  - db/migrate/20250403083001_create_spree_cm_commissioner_taxon_blazer_query.rb
2360
2432
  - db/migrate/20250404050117_add_archived_at_to_spree_orders.rb
2361
2433
  - db/migrate/20250407092556_add_variant_id_to_cm_trips.rb
2434
+ - db/migrate/20250425084929_add_description_to_spree_prototypes.rb
2435
+ - db/migrate/20250425085938_add_preferences_to_spree_prototypes.rb
2436
+ - db/migrate/20250428025645_add_slug_to_spree_prototypes.rb
2437
+ - db/migrate/20250429094228_add_lock_version_to_cm_inventory_items.rb
2362
2438
  - docker-compose.yml
2363
2439
  - docs/option_types/attr_types.md
2364
2440
  - docs/private_key.pem
@@ -2373,11 +2449,12 @@ files:
2373
2449
  - docs/webhook/sqs/params_job_submitted.json
2374
2450
  - lib/cm_app_logger.rb
2375
2451
  - lib/generators/spree_cm_commissioner/install/install_generator.rb
2376
- - lib/generators/spree_cm_commissioner/install/templates/app/javascript/spree_cm_commissioner/utilities.js
2452
+ - lib/generators/spree_cm_commissioner/install/templates/app/javascript/spree_dashboard/spree_cm_commissioner/utilities.js
2377
2453
  - lib/generators/spree_cm_commissioner/install/templates/config/data/nationalities.yml
2378
2454
  - lib/generators/spree_cm_commissioner/install/templates/vendor/assets/javascript/spree_cm_commissioner/telegram/all.js
2379
2455
  - lib/generators/spree_cm_commissioner/install/templates/vendor/assets/stylesheets/spree_cm_commissioner/telegram/all.css
2380
2456
  - lib/spree_cm_commissioner.rb
2457
+ - lib/spree_cm_commissioner/cached_inventory_item.rb
2381
2458
  - lib/spree_cm_commissioner/calendar_event.rb
2382
2459
  - lib/spree_cm_commissioner/engine.rb
2383
2460
  - lib/spree_cm_commissioner/factories.rb
@@ -2412,6 +2489,7 @@ files:
2412
2489
  - lib/spree_cm_commissioner/test_helper/factories/homepage_section_relatable_factory.rb
2413
2490
  - lib/spree_cm_commissioner/test_helper/factories/id_card_factory.rb
2414
2491
  - lib/spree_cm_commissioner/test_helper/factories/image_factory.rb
2492
+ - lib/spree_cm_commissioner/test_helper/factories/inventory_item_factory.rb
2415
2493
  - lib/spree_cm_commissioner/test_helper/factories/invite_factory.rb
2416
2494
  - lib/spree_cm_commissioner/test_helper/factories/invite_user_event_factory.rb
2417
2495
  - lib/spree_cm_commissioner/test_helper/factories/line_item_factory.rb
@@ -2466,9 +2544,12 @@ files:
2466
2544
  - lib/spree_cm_commissioner/trip_seat_layout_result.rb
2467
2545
  - lib/spree_cm_commissioner/user_session_jwt_token.rb
2468
2546
  - lib/spree_cm_commissioner/version.rb
2547
+ - lib/tasks/create_default_non_permanent_inventory_items.rake
2469
2548
  - lib/tasks/customer_notification_cron_scheduler.rake
2470
2549
  - lib/tasks/ensure_event_for_guests.rake
2471
2550
  - lib/tasks/ensure_number_for_line_items.rake
2551
+ - lib/tasks/fetch_email.rake
2552
+ - lib/tasks/generate_inventory_items.rake
2472
2553
  - lib/tasks/kh_location_option_values.rake
2473
2554
  - lib/tasks/kh_provinces.rake
2474
2555
  - lib/tasks/remove_duplicate_device_tokens.rake
@@ -2501,9 +2582,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
2501
2582
  version: '2.7'
2502
2583
  required_rubygems_version: !ruby/object:Gem::Requirement
2503
2584
  requirements:
2504
- - - ">="
2585
+ - - ">"
2505
2586
  - !ruby/object:Gem::Version
2506
- version: '0'
2587
+ version: 1.3.1
2507
2588
  requirements:
2508
2589
  - none
2509
2590
  rubygems_version: 3.4.1
@@ -1,45 +0,0 @@
1
- module SpreeCmCommissioner
2
- module VariantAvailability
3
- class NonPermanentStockQuery
4
- attr_reader :variant, :except_line_item_id, :error_message
5
-
6
- def initialize(variant:, except_line_item_id: nil)
7
- @variant = variant
8
- @except_line_item_id = except_line_item_id
9
- @error_message = nil
10
- end
11
-
12
- def available?(quantity)
13
- reserve_variants =
14
- Spree::LineItem
15
- .complete
16
- .select('(SUM(DISTINCT spree_stock_items.count_on_hand) - SUM(spree_line_items.quantity)) AS available_quantity')
17
- .joins(variant: :stock_items)
18
- .where(variant_id: variant.id)
19
- .where.not(id: except_line_item_id)
20
- .group(:variant_id)
21
-
22
- # there is a case when variant does not have any purchaces yet, it will return empty & always available true.
23
- # in this case, we check with stock items directly.
24
-
25
- available_quantity = if reserve_variants.any?
26
- reserve_variants.sum(&:available_quantity)
27
- else
28
- variant.stock_items.sum(:count_on_hand)
29
- end
30
- if available_quantity >= quantity
31
- true
32
- elsif available_quantity == 1
33
- @error_message = I18n.t('variant_availability.item_available_instock')
34
- false
35
- elsif available_quantity <= 0
36
- @error_message = I18n.t('variant_availability.items_out_of_stock')
37
- false
38
- else
39
- @error_message = I18n.t('variant_availability.items_available_instock', available_quantity: available_quantity)
40
- false
41
- end
42
- end
43
- end
44
- end
45
- end
@@ -1,55 +0,0 @@
1
- module SpreeCmCommissioner
2
- module VariantAvailability
3
- class PermanentStockQuery
4
- attr_reader :variant, :from_date, :to_date, :except_line_item_id
5
-
6
- def initialize(variant:, from_date:, to_date:, except_line_item_id: nil)
7
- @variant = variant
8
- @from_date = from_date
9
- @to_date = to_date
10
- @except_line_item_id = except_line_item_id
11
- end
12
-
13
- def available?(quantity)
14
- (from_date..from_date).all? do |booking_date|
15
- booked_date_quantity[booking_date].nil? ||
16
- (booked_date_quantity[booking_date] - quantity) >= 0
17
- end
18
- end
19
-
20
- def booked_date_quantity
21
- dates_sql = ApplicationRecord.sanitize_sql_array(
22
- [
23
- 'SELECT date FROM generate_series(?::date, ?::date, ?) AS date',
24
- from_date,
25
- to_date,
26
- date_interval
27
- ]
28
- )
29
-
30
- @booked_variants ||=
31
- Spree::LineItem
32
- .complete
33
- .select(
34
- '(SUM(DISTINCT spree_stock_items.count_on_hand) - SUM(spree_line_items.quantity)) AS available_quantity',
35
- 'dates.date AS reservation_date'
36
- )
37
- .joins(variant: :stock_items)
38
- .where(variant_id: variant.id)
39
- .where.not(id: except_line_item_id)
40
- .joins("INNER JOIN (#{dates_sql}) dates ON dates.date >= spree_line_items.from_date AND dates.date < spree_line_items.to_date")
41
- .group(:variant_id, :reservation_date)
42
- .order(:reservation_date)
43
- .each_with_object({}) do |record, hash|
44
- hash[record.reservation_date.to_date] = record.available_quantity
45
- end
46
- end
47
-
48
- # override this for product that have
49
- # different date time interval than 1 day.
50
- def date_interval
51
- '1 day'
52
- end
53
- end
54
- end
55
- end