Fixed Querying issues by customer name

This commit is contained in:
2026-02-16 08:13:57 -05:00
parent 3111f391f3
commit 1ade938eb3
2 changed files with 28 additions and 2 deletions

View File

@@ -25,7 +25,7 @@ module RedmineQbo
# Same as typing in the class
base.class_eval do
belongs_to :customer, primary_key: :id
belongs_to :customer, class_name: 'Customer', foreign_key: :customer_id, optional: true
belongs_to :customer_token, primary_key: :id
belongs_to :estimate, primary_key: :id
has_and_belongs_to_many :invoices

View File

@@ -14,6 +14,15 @@ module RedmineQbo
module Patches
module QueryPatch
def base_scope
scope = super
if filters['customer_name'].present?
scope = scope.left_outer_joins(:customer)
end
scope
end
# Add qbo options to the aviable columns
def available_columns
unless @available_columns
@@ -26,10 +35,27 @@ module RedmineQbo
# Add customers to filters
def initialize_available_filters
add_available_filter "customer_id", type: :list, name: l(:field_customer), :values => lambda {Customer.pluck(:name, :id).map {|name, id| [name, id.to_s]}}
#add_available_filter "customer_id", type: :list, name: l(:field_customer), :values => lambda {Customer.pluck(:name, :id).map {|name, id| [name, id.to_s]}}
add_available_filter( 'customer_name', type: :text, name: l(:field_customer))
super
end
def sql_for_customer_name_field(field, operator, value)
pattern = "%#{value.first}%"
sql = case operator
when '~'
"#{Customer.table_name}.name LIKE ?"
when '!~'
"#{Customer.table_name}.name NOT LIKE ?"
else
return nil
end
Issue.joins(:customer).sanitize_sql_for_conditions([sql, pattern])
end
end
# Add module to Issue