Module: Controllers::ReferenceFindable

Extended by:
ActiveSupport::Concern
Included in:
CrmController
Defined in:
app/concerns/controllers/reference_findable.rb

Overview

Provides helper methods to find records by ID or reference number
Useful for show actions where users may paste a reference number instead of navigating by ID

Reference number patterns (matching QuickSearch):

  • Order: SO123456 → reference_number column
  • Quote: SQ123456 → reference_number column
  • Invoice: IN123456 → reference_number column
  • RMA: RMA123456 → rma_number column
  • RoomConfiguration: RC123456 → reference_number column
  • Opportunity: ON123456 → reference_number column
  • Customer: CN123456 → ID (number after CN IS the ID)

Usage in controller:
include Controllers::ReferenceFindable

def show
@order = find_by_id_or_reference(Order, :reference_number)
@rma = find_by_id_or_reference(Rma, :rma_number)
@customer = find_by_id_or_reference(Customer) # Special handling for CN prefix
end

Constant Summary collapse

ID_EMBEDDED_PATTERNS =

Reference patterns that extract ID from the reference (e.g., CN123456 → 123456)

{
  'Customer' => /\ACN(\d+)\z/i
}.freeze