Class: Crm::InventoryCommitsController
- Inherits:
-
CrmController
- Object
- ActionController::Base
- ApplicationController
- CrmController
- Crm::InventoryCommitsController
- Defined in:
- app/controllers/crm/inventory_commits_controller.rb
Overview
Controller: inventory commits.
Constant Summary
Constants included from Controllers::ReferenceFindable
Controllers::ReferenceFindable::ID_EMBEDDED_PATTERNS
Constants included from Controllers::AnalyticsEvents
Controllers::AnalyticsEvents::MAX_QUEUED_EVENTS, Controllers::AnalyticsEvents::SESSION_KEY
Constants included from Controllers::ErrorRendering
Controllers::ErrorRendering::NON_CONTENT_PATH_PREFIXES
Instance Method Summary collapse
-
#commit ⇒ void
Reserves (commits) inventory for a resource's line items.
-
#do_pick_lines ⇒ void
Processes selective line item commitment/uncommitment.
-
#index ⇒ void
Lists all inventory commits with filtering and pagination.
-
#pick_lines ⇒ void
Displays the line item selection interface for partial inventory commitment.
-
#show ⇒ void
Shows details for a single inventory commit.
-
#uncommit ⇒ void
Releases (uncommits) reserved inventory for a resource's line items.
Methods inherited from CrmController
#access_denied, #context_id, #context_object, #crm_home_path, #current_ability, #default_url_options, #download_temp, #get_tempfile_path_for_download, #init_status_job_collector, #initialize_crm_lazy_chunks, #persist_enqueued_status_jobs, #record_not_found, #redirect_to_job_or_fallback, #render_edit_action, #set_context, #set_download_path, #stash_file_for_temp_download, #sync_admin_presence_cookie, #touch_employee_last_seen
Methods inherited from ApplicationController
#account_impersonated?, #add_to_flash, #after_sign_in_path_for, #bypass_forgery_protection?, #chat_enabled?, #cloudflare_cleared?, #default_catalog, #default_url_options, #enable_turbo_frames, #find_publication, #fix_invalid_accept_header, #init_js_utils, #is_globals_call?, #layout_by_resource, #locale_store, #redirect_to, #require_employee_for_crm, #set_base_host, #set_real_ip, #set_report_errors_for, #should_render_layout?, #skip_layout_for_turbo_frame?, #stamp_impersonation_context, #tab_frame_breakout_request?, #warmlyyours_canada_ip?, #warmlyyours_ip?, #y
Methods included from Controllers::ReturnPathHandling
#check_for_return_path, #redirect_to_return_path_or_default
Methods included from Controllers::AnalyticsEvents
#consume_queued_analytics_events, #registration_lead_type, #track_event
Methods included from Controllers::DeviceDetection
Methods included from Controllers::SubdomainDetection
#is_crm_request?, #is_www_request?, #json_request?
Methods included from Controllers::TurboSafeRedirect
Methods included from Controllers::TrackingDetection
#bot_request?, #gdpr_country?, #gdpr_country_data, #prevent_bots, #set_tracking_cookie, #track_visitor?
Methods included from Controllers::AcceleratedFileSending
#send_file_accelerated, #send_upload_accelerated
Methods included from Controllers::ErrorRendering
#excp_string, #mail_to_for_error_reporting, #render_400, #render_404, #render_406, #render_410, #render_500, #render_invalid_authenticity_token, #render_ip_spoof_error, #render_unpermitted_parameters, #safe_referer_or_fallback
Methods included from Controllers::TurnstileVerification
#load_turnstile_script_tag, #turnstile_lazy_widget, #turnstile_script_tag, #turnstile_widget, #validate_turnstile!
Methods included from Controllers::CloudflareCaching
edge_cached, #edge_cached_action?, #reset_cloudflare_cache, #set_cloudflare_cache, #skip_edge_cache!, #skip_session
Methods included from Controllers::Webpackable
#preload_webpack_fonts, #webpack_css_include, #webpack_css_url, #webpack_js_include, #wpd_is_running?
Methods included from Controllers::Localizable
#cloudflare_country_locale, #determine_request_locale, #geocoder_locale, #guest_user_locale_check, #locale_optional_www_auth_path?, #param_locale, #set_locale, #set_request_locale, #skip_localization?, #warmlyyours_ip_locale
Methods included from Controllers::Authenticable
#access_denied, #authenticate_account, #authenticate_account!, #authenticate_account_from_login_token!, #check_is_a_manager, #check_is_a_sales_manager, #check_is_an_admin, #check_is_an_employee, #check_party, #clear_mismatched_guest_user, #create_guest_user, #credentials?, #current_or_guest_user, #current_or_guest_user_id_read_only, #current_user, #devise_mapping, #fully_logged_in?, #generate_bot_id, #guest_user, #identifiable?, #init_current_user, #initialize_guest, #load_context_user, #logging_in, #resource, #resource_name, #restrict_access_for_non_employees, #scrubbed_request_path, #user_object, #warn_on_session_guest_id_leak
Methods included from UrlsHelper
#catalog_breadcrumb_links, #catalog_link, #catalog_link_for_product_line, #catalog_link_for_sku, #cms_link, #delocalized_path, #path_to_sales_product_sku, #path_to_sales_product_sku_for_product_line, #path_to_sales_product_sku_for_product_line_slug, #product_line_from_catalog_link, #protocol_neutral_url, #sanitize_external_url, #valid_external_url?
Instance Method Details
#commit ⇒ void
This method returns an undefined value.
Reserves (commits) inventory for a resource's line items.
22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'app/controllers/crm/inventory_commits_controller.rb', line 22 def commit resource = params[:resource_type].classify.constantize.find(params[:resource_id]) if resource.commit_line_items(resource.determine_commit_expiration_date) flash[:info] = 'All requested line items have been reserved.' else flash[:error] = 'Unable to reserve requested line items.' end if resource.instance_of?(LineItem) redirect_to resource.resource else redirect_to resource end end |
#do_pick_lines ⇒ void
This method returns an undefined value.
Processes selective line item commitment/uncommitment.
Commits or uncommits individual line items based on the provided line_items hash.
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
# File 'app/controllers/crm/inventory_commits_controller.rb', line 77 def do_pick_lines @resource = params[:resource_type].classify.constantize.find(params[:resource_id]) commit_line_ids = [] uncommit_line_ids = [] params[:line_items]&.each do |li_id, commit| if commit.to_b commit_line_ids << li_id else uncommit_line_ids << li_id end end line_items_to_commit = LineItem.where(id: commit_line_ids) if commit_line_ids.present? line_items_to_uncommit = LineItem.where(id: uncommit_line_ids) if uncommit_line_ids.present? InventoryCommit.transaction do Item::InventoryCommitter.crm_commit(line_items_to_commit, expires_on: @resource.determine_commit_expiration_date) if line_items_to_commit.present? Item::InventoryCommitter.crm_uncommit(line_items_to_uncommit) if line_items_to_uncommit.present? end redirect_to @resource, notice: 'Reservations processed' end |
#index ⇒ void
This method returns an undefined value.
Lists all inventory commits with filtering and pagination.
7 8 9 10 |
# File 'app/controllers/crm/inventory_commits_controller.rb', line 7 def index @q = InventoryCommit.ransack(params[:q]) @pagy, @inventory_commits = pagy(@q.result.includes({ line_item: :resource }, { store_item: :item }, { kit_store_item: :item })) end |
#pick_lines ⇒ void
This method returns an undefined value.
Displays the line item selection interface for partial inventory commitment.
Groups line items by room configuration or item for selective commitment.
58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'app/controllers/crm/inventory_commits_controller.rb', line 58 def pick_lines @resource = params[:resource_type].classify.constantize.find(params[:resource_id]) @group_by = params[:group_by] || 'ROOM' if @resource.can_be_committed? @grouped_line_items = if @group_by == 'ITEM' @resource.line_items.non_shipping.parents_only.group_by(&:item) else @resource.line_items.non_shipping.parents_only.group_by(&:room_configuration) end else redirect_to @resource, notice: "That #{@resource.class} cannot be reserved." end end |
#show ⇒ void
This method returns an undefined value.
Shows details for a single inventory commit.
15 16 17 |
# File 'app/controllers/crm/inventory_commits_controller.rb', line 15 def show @inventory_commit = InventoryCommit.find(params[:id]) end |
#uncommit ⇒ void
This method returns an undefined value.
Releases (uncommits) reserved inventory for a resource's line items.
39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'app/controllers/crm/inventory_commits_controller.rb', line 39 def uncommit resource = params[:resource_type].classify.constantize.find(params[:resource_id]) if resource.uncommit_line_items flash[:info] = 'All requested line items have been unreserved.' else flash[:error] = 'Unable to unreserve requested line items.' end if resource.instance_of?(LineItem) redirect_to resource.resource else redirect_to resource end end |