Class: Crm::GenerateBarcodesController
- Inherits:
-
CrmController
- Object
- ActionController::Base
- ApplicationController
- CrmController
- Crm::GenerateBarcodesController
- Defined in:
- app/controllers/crm/generate_barcodes_controller.rb
Overview
Controller: generate barcodes.
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
-
#create ⇒ void
Generates UPC label barcodes and sends them to a printer or download.
-
#new ⇒ void
Displays the barcode generation interface for selected 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
#create ⇒ void
This method returns an undefined value.
Generates UPC label barcodes and sends them to a printer or download.
Generates a PDF of UPC labels for selected items at the specified size.
Sends directly to the configured print profile or initiates a file download.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'app/controllers/crm/generate_barcodes_controller.rb', line 54 def create skus_printed = [] pdf = PdfCombinator.new (params.dig(:upc, :iq) || {}).each do |item_id, quantity| next unless quantity quantity = quantity.to_i next unless quantity > 0 item = Item.find(item_id) size = params.dig(:upc, :size).presence || 'large' upc_result = Pdf::Label::ItemIdentifier.call(item, size: size) quantity.times do pdf << upc_result.pdf end skus_printed << item.sku end if @print_profile base64_output = Base64.encode64(pdf.to_pdf) @print_profile.print(base64_output) flash[:info] = if skus_printed.present? "UPC label for #{skus_printed.to_sentence} sent to printer: #{@print_profile.printer.name}" else "No UPC label were printed, make sure to select quantities" end redirect_to_return_path_or_default warehouse_path(current_user.store) else send_data pdf.to_pdf, filename: 'upc_barcodes.pdf', type: 'application/pdf', disposition: 'attachment' end end |
#new ⇒ void
This method returns an undefined value.
Displays the barcode generation interface for selected items.
Prepares item quantities and printable items from the given order/delivery(ies).
Allows filtering by item ID and quantity.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/controllers/crm/generate_barcodes_controller.rb', line 12 def new @item_quantities = {} if params[:order_id] @itemizables = Order.where(id: params[:order_id]) elsif params[:delivery_id] @itemizables = Delivery.where(id: params[:delivery_id]) elsif params[:delivery_ids] @itemizables = Delivery.where(id: params[:delivery_ids]) end @printable_items = {} @itemizables.each do |itemizable| item_quantities = {} line_items_scope = itemizable.line_items.non_shipping.where.not(Item[:upc].eq(nil)).eager_load(:item) line_items_scope.each do |line_item| hsh = item_quantities[line_item.item] || {} hsh[:quantity] ||= 0 hsh[:quantity] += line_item.quantity hsh[:selected] = if params[:heating_elements_only].to_b line_item.item.controllable? elsif line_item.parent_id.nil? # Non kit components get a label true else false end item_quantities[line_item.item] = hsh end @printable_items[itemizable] = item_quantities end return unless params[:item_id] && params[:quantity] item = Item.find(params[:item_id]) @printable_items = { 'Single Item': { item: item, quantity: params[:quantity].to_i, selected: true } } if item.upc.present? end |