spree_cm_commissioner 1.11.0.pre.pre4 → 1.13.0
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/.github/workflows/test_and_build_gem.yml +143 -12
- data/.gitignore +1 -2
- data/Gemfile.lock +1 -22
- data/Rakefile +4 -33
- data/app/controllers/spree/admin/cms_pages_controller_decorator.rb +32 -0
- data/app/controllers/spree/admin/product_places_controller.rb +2 -0
- data/app/controllers/spree/admin/stock_managements_controller.rb +1 -62
- data/app/controllers/spree/api/v2/organizer/invite_guests_controller.rb +70 -0
- data/app/controllers/spree/api/v2/storefront/accommodations_controller.rb +31 -14
- data/app/controllers/spree/api/v2/storefront/queue_cart/line_items_controller.rb +2 -2
- data/app/controllers/spree/api/v2/storefront/waiting_room_sessions_controller.rb +1 -0
- data/app/controllers/spree/api/v2/tenant/account_checker_controller.rb +1 -1
- data/app/controllers/spree/api/v2/tenant/account_recovers_controller.rb +2 -2
- data/app/controllers/spree/api/v2/tenant/cms_pages_controller.rb +41 -0
- data/app/controllers/spree/api/v2/tenant/reset_passwords_controller.rb +1 -1
- data/app/controllers/spree/api/v2/tenant/waiting_room_sessions_controller.rb +30 -0
- data/app/controllers/spree_cm_commissioner/admin/variants_controller_decorator.rb +17 -0
- data/app/controllers/spree_cm_commissioner/api/v2/storefront/cms_pages_controller_decorator.rb +18 -0
- data/app/interactors/spree_cm_commissioner/account_recover.rb +2 -2
- data/app/interactors/spree_cm_commissioner/create_event.rb +7 -26
- data/app/interactors/spree_cm_commissioner/create_ticket.rb +95 -0
- data/app/interactors/spree_cm_commissioner/event_line_items_date_syncer.rb +19 -0
- data/app/interactors/spree_cm_commissioner/existing_account_checker.rb +1 -1
- data/app/interactors/spree_cm_commissioner/order_importer/multi_guest.rb +31 -0
- data/app/interactors/spree_cm_commissioner/organizers_transactional_email_notifier.rb +27 -0
- data/app/interactors/spree_cm_commissioner/pin_code_sender.rb +3 -3
- data/app/interactors/spree_cm_commissioner/product_event_id_to_children_syncer.rb +15 -0
- data/app/interactors/spree_cm_commissioner/sms.rb +14 -0
- data/app/interactors/spree_cm_commissioner/telegram_debug_pin_code_sender.rb +2 -1
- data/app/interactors/spree_cm_commissioner/transactional_email_sender.rb +50 -0
- data/app/interactors/spree_cm_commissioner/user_forgotten_password_updater.rb +2 -1
- data/app/interactors/spree_cm_commissioner/user_password_authenticator.rb +4 -2
- data/app/interactors/spree_cm_commissioner/waiting_room_session_creator.rb +7 -14
- data/app/interactors/spree_cm_commissioner/waiting_room_session_firebase_logger.rb +30 -0
- data/app/jobs/spree_cm_commissioner/ensure_event_for_product_line_item_guests_job.rb +13 -0
- data/app/jobs/spree_cm_commissioner/event_line_items_date_syncer_job.rb +8 -0
- data/app/jobs/spree_cm_commissioner/product_event_id_to_children_syncer_job.rb +8 -0
- data/app/jobs/spree_cm_commissioner/telegram_debug_pin_code_sender_job.rb +3 -1
- data/app/jobs/spree_cm_commissioner/waiting_room_session_firebase_logger_job.rb +13 -0
- data/app/mailers/spree_cm_commissioner/event_transactional_mailer.rb +23 -0
- data/app/mailers/spree_cm_commissioner/pin_code_mailer.rb +1 -0
- data/app/models/concerns/spree_cm_commissioner/kyc_bitwise.rb +2 -0
- data/app/models/concerns/spree_cm_commissioner/line_item_durationable.rb +10 -6
- data/app/models/concerns/spree_cm_commissioner/order_state_machine.rb +13 -26
- data/app/models/concerns/spree_cm_commissioner/product_delegation.rb +4 -3
- data/app/models/concerns/spree_cm_commissioner/product_type.rb +0 -10
- data/app/models/concerns/spree_cm_commissioner/user_identity.rb +7 -4
- data/app/models/concerns/spree_cm_commissioner/variant_options_concern.rb +8 -10
- data/app/models/spree_cm_commissioner/cms_page_decorator.rb +9 -0
- data/app/models/spree_cm_commissioner/event_ticket_google_wallet.rb +2 -2
- data/app/models/spree_cm_commissioner/guest.rb +1 -1
- data/app/models/spree_cm_commissioner/invite_guest.rb +23 -0
- data/app/models/spree_cm_commissioner/line_item_decorator.rb +10 -16
- data/app/models/spree_cm_commissioner/option_type_decorator.rb +6 -0
- data/app/models/spree_cm_commissioner/order_decorator.rb +0 -15
- data/app/models/spree_cm_commissioner/place.rb +1 -1
- data/app/models/spree_cm_commissioner/product_decorator.rb +17 -14
- data/app/models/spree_cm_commissioner/product_place.rb +1 -0
- data/app/models/spree_cm_commissioner/role_decorator.rb +3 -0
- data/app/models/spree_cm_commissioner/stock/availability_checker.rb +25 -27
- data/app/models/spree_cm_commissioner/stock/availability_validator_decorator.rb +1 -2
- data/app/models/spree_cm_commissioner/stock/line_item_availability_checker.rb +3 -3
- data/app/models/spree_cm_commissioner/stock_item_decorator.rb +0 -14
- data/app/models/spree_cm_commissioner/taxon_decorator.rb +26 -3
- data/app/models/spree_cm_commissioner/transactional_email.rb +6 -0
- data/app/models/spree_cm_commissioner/user_decorator.rb +6 -0
- data/app/models/spree_cm_commissioner/variant_decorator.rb +27 -34
- data/app/models/spree_cm_commissioner/vehicle.rb +0 -7
- data/app/models/spree_cm_commissioner/vendor_decorator.rb +9 -1
- data/app/overrides/spree/admin/cms_pages/_form/tenant_fields.html.erb.deface +9 -0
- data/app/overrides/spree/admin/cms_pages/index/cms_pages_tabs.html.erb.deface +21 -0
- data/app/overrides/spree/admin/taxons/_form/assets_form.html.erb.deface +2 -2
- data/app/overrides/spree/admin/taxons/_form/available_on.html.erb.deface +3 -1
- data/app/overrides/spree/admin/taxons/_form/background_color_and_foreground_color.html.erb.deface +3 -1
- data/app/overrides/spree/admin/taxons/_form/custom_redirect_url.html.erb.deface +3 -1
- data/app/overrides/spree/admin/taxons/_form/hide_video_banner.html.erb.deface +3 -1
- data/app/overrides/spree/admin/taxons/_form/purchasable_on_status.html.erb.deface +3 -1
- data/app/overrides/spree/admin/taxons/_form/show_badge_status.html.erb.deface +3 -1
- data/app/overrides/spree/admin/taxons/_form/to_date_form_date.html.erb.deface +3 -4
- data/app/overrides/spree/admin/users/_form/roles_fields.html.erb.deface +1 -1
- data/app/overrides/spree/admin/users/index/body.html.erb.deface +3 -0
- data/app/overrides/spree/admin/users/index/headers.html.erb.deface +3 -0
- data/app/overrides/spree/admin/variants/_form/kyc_field.html.erb.deface +40 -0
- data/app/overrides/spree/admin/variants/edit/variant_status.html.erb.deface +6 -3
- data/app/queries/spree_cm_commissioner/variant_availability/non_permanent_stock_query.rb +45 -0
- data/app/queries/spree_cm_commissioner/variant_availability/permanent_stock_query.rb +55 -0
- data/app/request_schemas/spree_cm_commissioner/accommodation_request_schema.rb +0 -3
- data/app/request_schemas/spree_cm_commissioner/application_request_schema.rb +1 -1
- data/app/serializers/spree/v2/organizer/invite_guest_serializer.rb +13 -0
- data/app/serializers/spree/v2/storefront/accommodation_serializer.rb +0 -2
- data/app/serializers/spree/v2/storefront/taxon_serializer_decorator.rb +2 -0
- data/app/serializers/spree/v2/tenant/waiting_room_session_serializer.rb +9 -0
- data/app/serializers/spree_cm_commissioner/v2/storefront/guest_serializer.rb +2 -1
- data/app/services/spree_cm_commissioner/user_authenticator.rb +3 -1
- data/app/services/spree_cm_commissioner/user_roles_assigner.rb +62 -0
- data/app/views/spree/admin/shared/_cms_pages_tabs.html.erb +20 -0
- data/app/views/spree/admin/shared/_taxon_tabs.html.erb +19 -19
- data/app/views/spree/admin/stock_managements/_variant_stock_items.html.erb +1 -3
- data/app/views/spree/admin/stock_managements/index.html.erb +5 -40
- data/app/views/spree/shared/_base_mailer_header.html.erb +10 -2
- data/app/views/spree_cm_commissioner/event_transactional_mailer/_event_banner.html.erb +3 -0
- data/app/views/spree_cm_commissioner/event_transactional_mailer/_mailer_stylesheets.html.erb +317 -0
- data/app/views/spree_cm_commissioner/event_transactional_mailer/_note.html.erb +8 -0
- data/app/views/spree_cm_commissioner/event_transactional_mailer/_share_button.html.erb +3 -0
- data/app/views/spree_cm_commissioner/event_transactional_mailer/send_to_organizer.html.erb +59 -0
- data/app/views/spree_cm_commissioner/event_transactional_mailer/send_to_participant.html.erb +52 -0
- data/app/views/spree_cm_commissioner/layouts/event_transactional_mailer.html.erb +14 -0
- data/config/initializers/spree_permitted_attributes.rb +0 -5
- data/config/locales/en.yml +36 -0
- data/config/locales/km.yml +2 -0
- data/config/routes.rb +6 -11
- data/db/migrate/20250422014417_create_spree_cm_commissioner_invite_guest.rb +21 -0
- data/db/migrate/20250509033437_create_spree_cm_commissioner_transactional_emails.rb +12 -0
- data/db/migrate/20250509075429_add_max_order_quantity_to_spree_product.rb +5 -0
- data/db/migrate/20250512075319_add_tenant_id_to_spree_cms_pages.rb +6 -0
- data/db/migrate/20250520042602_add_event_to_spree_products.rb +7 -0
- data/db/migrate/20250520044533_add_event_to_spree_line_items.rb +7 -0
- data/db/migrate/20250521024345_add_tenant_id_to_cm_waiting_room_sessions.rb +6 -0
- data/db/migrate/20250521095539_add_kyc_to_spree_variants.rb +5 -0
- data/docker-compose.yml +1 -1
- data/lib/generators/spree_cm_commissioner/install/install_generator.rb +3 -11
- data/lib/generators/spree_cm_commissioner/install/templates/app/javascript/{spree_dashboard/spree_cm_commissioner → spree_cm_commissioner}/utilities.js +0 -4
- data/lib/spree_cm_commissioner/calendar_event.rb +1 -11
- data/lib/spree_cm_commissioner/test_helper/factories/homepage_section_relatable_factory.rb +1 -1
- data/lib/spree_cm_commissioner/test_helper/factories/line_item_factory.rb +1 -1
- data/lib/spree_cm_commissioner/test_helper/factories/product_factory.rb +5 -18
- data/lib/spree_cm_commissioner/test_helper/factories/role.rb +7 -0
- data/lib/spree_cm_commissioner/test_helper/factories/stock_location_factory.rb +2 -2
- data/lib/spree_cm_commissioner/test_helper/factories/taxon_home_banner_factory.rb +5 -0
- data/lib/spree_cm_commissioner/test_helper/factories/transactional_email_factory.rb +6 -0
- data/lib/spree_cm_commissioner/test_helper/factories/variant_factory.rb +6 -41
- data/lib/spree_cm_commissioner/test_helper/factories/vendor_factory.rb +1 -1
- data/lib/spree_cm_commissioner/version.rb +1 -1
- data/lib/spree_cm_commissioner.rb +0 -34
- data/lib/tasks/ensure_event_for_product_line_item_guests.rake +7 -0
- data/lib/tasks/update_invalid_self_root_places.rake +9 -0
- data/lib/tasks/update_orphan_root_places.rake +1 -0
- data/spree_cm_commissioner.gemspec +0 -5
- metadata +54 -82
- data/app/controllers/spree/api/v2/storefront/accommodations/variants_controller.rb +0 -42
- data/app/finders/spree_cm_commissioner/accommodations/find.rb +0 -40
- data/app/finders/spree_cm_commissioner/accommodations/find_variant.rb +0 -35
- data/app/interactors/spree_cm_commissioner/ensure_correct_product_type.rb +0 -40
- data/app/interactors/spree_cm_commissioner/inventory_item_syncer.rb +0 -25
- data/app/interactors/spree_cm_commissioner/stock/inventory_items_adjuster.rb +0 -13
- data/app/interactors/spree_cm_commissioner/stock/inventory_items_generator.rb +0 -15
- data/app/interactors/spree_cm_commissioner/stock/permanent_inventory_items_generator.rb +0 -75
- data/app/interactors/spree_cm_commissioner/stock/stock_movement_creator.rb +0 -24
- data/app/interactors/spree_cm_commissioner/user_roles_assigner.rb +0 -22
- data/app/jobs/spree_cm_commissioner/ensure_correct_product_type_job.rb +0 -7
- data/app/jobs/spree_cm_commissioner/inventory_item_syncer_job.rb +0 -7
- data/app/jobs/spree_cm_commissioner/stock/inventory_items_adjuster_job.rb +0 -11
- data/app/jobs/spree_cm_commissioner/stock/inventory_items_generator_job.rb +0 -11
- data/app/jobs/spree_cm_commissioner/stock/permanent_inventory_items_generator_job.rb +0 -9
- data/app/models/spree_cm_commissioner/inventory.rb +0 -11
- data/app/models/spree_cm_commissioner/inventory_item.rb +0 -56
- data/app/models/spree_cm_commissioner/redis_stock/cached_inventory_items_builder.rb +0 -40
- data/app/models/spree_cm_commissioner/redis_stock/inventory_updater.rb +0 -126
- data/app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb +0 -36
- data/app/models/spree_cm_commissioner/redis_stock/variant_cached_inventory_items_builder.rb +0 -27
- data/app/models/spree_cm_commissioner/stock/order_availability_checker.rb +0 -44
- data/app/request_schemas/spree_cm_commissioner/variant_request_schema.rb +0 -19
- data/app/views/spree/admin/stock_managements/_events_popover.html.erb +0 -23
- data/app/views/spree/admin/stock_managements/calendar.html.erb +0 -35
- data/db/migrate/20250304293518_create_cm_inventory_items.rb +0 -21
- data/db/migrate/20250429094228_add_lock_version_to_cm_inventory_items.rb +0 -5
- data/db/migrate/20250502025848_add_index_to_spree_products.rb +0 -5
- data/db/migrate/20250502030001_add_product_type_to_spree_variants.rb +0 -5
- data/db/migrate/20250502030002_add_product_type_to_spree_line_items.rb +0 -5
- data/lib/spree_cm_commissioner/cached_inventory_item.rb +0 -23
- data/lib/spree_cm_commissioner/test_helper/factories/inventory_item_factory.rb +0 -9
- data/lib/tasks/create_default_non_permanent_inventory_items.rake +0 -16
- data/lib/tasks/ensure_correct_product_type.rake +0 -7
- data/lib/tasks/generate_inventory_items.rake +0 -7
@@ -1,23 +0,0 @@
|
|
1
|
-
<div>
|
2
|
-
<% events.each do |event| %>
|
3
|
-
<% inventory_item = event.options[:inventory_item] %>
|
4
|
-
|
5
|
-
<div class="mb-3">
|
6
|
-
<h6><%= inventory_item.variant.options_text %></h6>
|
7
|
-
<ul class="list-group mt-1 mb-1">
|
8
|
-
<li class="list-group-item d-flex justify-content-between align-items-center">
|
9
|
-
Max capacity
|
10
|
-
<span class="badge badge-primary badge-pill"><%= inventory_item.max_capacity %></span>
|
11
|
-
</li>
|
12
|
-
<li class="list-group-item d-flex justify-content-between align-items-center">
|
13
|
-
Quantity available in DB
|
14
|
-
<span class="badge badge-primary badge-pill"><%= inventory_item.quantity_available %></span>
|
15
|
-
</li>
|
16
|
-
</ul>
|
17
|
-
|
18
|
-
<small class="text-muted">
|
19
|
-
<%= inventory_item_message(inventory_item, @cached_inventory_items[inventory_item.id]) %>
|
20
|
-
</small>
|
21
|
-
</div>
|
22
|
-
<% end %>
|
23
|
-
</div>
|
@@ -1,35 +0,0 @@
|
|
1
|
-
<%= turbo_frame_tag "calendar" do %>
|
2
|
-
<%= form_with url: admin_product_stock_managements_path, method: :get, class: "mt-4" do %>
|
3
|
-
<%= select_year(params[:year]&.to_i || @year, { start_year: 2025, end_year: @year + 3 }, { name: "year", onchange: "this.form.submit()" }) %>
|
4
|
-
<% end %>
|
5
|
-
|
6
|
-
<div class="c-annual-calendar-container mt-2">
|
7
|
-
<div class="c-annual-calendar">
|
8
|
-
<% (1..12).each do |month| %>
|
9
|
-
<%= month_calendar(start_date: Date.new(@year, month, 1), attribute: :from_date, end_attribute: :to_date, events: @events) do |date, events| %>
|
10
|
-
<div class="c-annual-day"
|
11
|
-
data-date="<%= date.strftime '%Y-%m-%d' %>"
|
12
|
-
type="button"
|
13
|
-
tabindex="0"
|
14
|
-
data-toggle="popover"
|
15
|
-
data-trigger="hover"
|
16
|
-
data-placement="right"
|
17
|
-
data-html="true"
|
18
|
-
data-content="<%= raw render_escape_html partial: "events_popover", locals: { events: events } if events.any? %>">
|
19
|
-
<%= date.day %>
|
20
|
-
<ul class="p-0 m-0 list-unstyled">
|
21
|
-
<% events.each do |event| %>
|
22
|
-
<% inventory_item = event.options[:inventory_item] %>
|
23
|
-
<% synced = inventory_item.quantity_available == @cached_inventory_items[inventory_item.id].quantity_available %>
|
24
|
-
|
25
|
-
<li class="badge <%= synced ? "badge-warning" : "badge-danger" %>">
|
26
|
-
<%= inventory_item.quantity_available %>
|
27
|
-
</li>
|
28
|
-
<% end %>
|
29
|
-
</ul>
|
30
|
-
</div>
|
31
|
-
<% end %>
|
32
|
-
<% end %>
|
33
|
-
</div>
|
34
|
-
</div>
|
35
|
-
<% end %>
|
@@ -1,21 +0,0 @@
|
|
1
|
-
class CreateCmInventoryItems < ActiveRecord::Migration[7.0]
|
2
|
-
def up
|
3
|
-
create_table :cm_inventory_items, if_not_exists: true do |t|
|
4
|
-
t.integer :variant_id
|
5
|
-
t.date :inventory_date
|
6
|
-
t.integer :max_capacity, default: 0, null: false
|
7
|
-
t.integer :quantity_available, default: 0, null: false
|
8
|
-
t.integer :product_type, default: 0, null: false
|
9
|
-
|
10
|
-
t.timestamps
|
11
|
-
end
|
12
|
-
|
13
|
-
add_index :cm_inventory_items, :variant_id, if_not_exists: true
|
14
|
-
add_index :cm_inventory_items, :inventory_date, if_not_exists: true
|
15
|
-
add_index :cm_inventory_items, [:variant_id, :inventory_date], unique: true, if_not_exists: true
|
16
|
-
end
|
17
|
-
|
18
|
-
def down
|
19
|
-
drop_table :cm_inventory_items
|
20
|
-
end
|
21
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module SpreeCmCommissioner
|
2
|
-
class CachedInventoryItem
|
3
|
-
attr_reader :inventory_key, :active, :quantity_available, :inventory_item_id, :variant_id
|
4
|
-
|
5
|
-
def initialize(inventory_key:, active:, quantity_available:, inventory_item_id:, variant_id:)
|
6
|
-
@inventory_key = inventory_key
|
7
|
-
@active = active
|
8
|
-
@quantity_available = quantity_available
|
9
|
-
@inventory_item_id = inventory_item_id
|
10
|
-
@variant_id = variant_id
|
11
|
-
end
|
12
|
-
|
13
|
-
def active?
|
14
|
-
active
|
15
|
-
end
|
16
|
-
|
17
|
-
def to_h
|
18
|
-
instance_variables.each_with_object({}) do |var, hash|
|
19
|
-
hash[var.to_s.delete('@').to_sym] = instance_variable_get(var)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# recommend to be used in schedule.yml & manually access in /sidekiq/cron
|
2
|
-
namespace :spree_cm_commissioner do
|
3
|
-
desc 'Create default inventory items for non-permanent stock products'
|
4
|
-
task create_default_non_permanent_inventory_items: :environment do
|
5
|
-
Spree::Variant.active.with_non_permanent_stock.find_each do |variant|
|
6
|
-
total_purchases = variant.complete_line_items.sum(:quantity).to_i || 0
|
7
|
-
max_capacity = variant.total_on_hand || 0
|
8
|
-
quantity_available = [max_capacity - total_purchases, 0].max
|
9
|
-
|
10
|
-
variant.create_default_non_permanent_inventory_item!(
|
11
|
-
max_capacity: max_capacity,
|
12
|
-
quantity_available: quantity_available
|
13
|
-
)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,7 +0,0 @@
|
|
1
|
-
# recommend to be used in schedule.yml & manually access in /sidekiq/cron
|
2
|
-
namespace :spree_cm_commissioner do
|
3
|
-
desc 'Ensure product_type in variants, line_items, inventory_items are correct with product'
|
4
|
-
task ensure_correct_product_type: :environment do
|
5
|
-
SpreeCmCommissioner::EnsureCorrectProductTypeJob.perform_now
|
6
|
-
end
|
7
|
-
end
|
@@ -1,7 +0,0 @@
|
|
1
|
-
# recommend to be used in schedule.yml & schedule run it everyday
|
2
|
-
namespace :spree_cm_commissioner do
|
3
|
-
desc 'Generate inventory items for permanent_stock variants.'
|
4
|
-
task generate_inventory_items: :environment do
|
5
|
-
SpreeCmCommissioner::Stock::PermanentInventoryItemsGeneratorJob.perform_now
|
6
|
-
end
|
7
|
-
end
|