diff --git a/app/controllers/admin/p_articles_controller.rb b/app/controllers/admin/p_articles_controller.rb index 0e40f7a..613b0de 100644 --- a/app/controllers/admin/p_articles_controller.rb +++ b/app/controllers/admin/p_articles_controller.rb @@ -12,6 +12,11 @@ class Admin::PArticlesController < ApplicationController def index @p_articles = PArticle.all + global_search_ids = @p_articles.ids + + if params[:search][:global].to_s != "" + global_search_ids = PArticle.global_search(params[:search][:global]).ids + end if params[:search][:p_product_color].to_s != "" if params[:search][:p_product_color].to_s == "null" @@ -38,6 +43,11 @@ class Admin::PArticlesController < ApplicationController end + + final_ids = global_search_ids + + @p_articles = PArticle.where(id: final_ids) + @p_articles = sort_by_sorting(@p_articles, "id DESC") respond_to do |format| format.html{ diff --git a/app/models/p_article.rb b/app/models/p_article.rb index 187741f..db8556c 100644 --- a/app/models/p_article.rb +++ b/app/models/p_article.rb @@ -3,9 +3,10 @@ class PArticle < ApplicationRecord belongs_to :p_product_ref has_one :p_product, through: :p_product_ref has_one :p_product_color, through: :p_product_ref + has_one :s_brand, through: :p_product_ref has_many :p_article_serial_nums, dependent: :destroy - has_many :p_serial_num_values, through: :p_article_serial_nums + # has_many :p_serial_num_values, through: :p_article_serial_nums accepts_nested_attributes_for :p_article_serial_nums validates_presence_of :p_product_ref @@ -15,7 +16,7 @@ class PArticle < ApplicationRecord if PGrade::ACTIVATED acts_as_sorting :fields => { :id => {:name => "id", :reorder => true}, - :p_product_ref_code => {:name => "Code ref", :reorder => true}, + :p_product_ref_ref => {:name => "Code ref", :reorder => true}, :p_product_ref => {:name => "Désignation", :reorder => true}, :p_grade => {:name => "Grade", :reorder => true}, :color => {:name => "Couleur"}, @@ -25,13 +26,26 @@ class PArticle < ApplicationRecord else acts_as_sorting :fields => { :id => {:name => "id", :reorder => true}, - :p_product_ref_code => {:name => "Code ref", :reorder => true}, + :p_product_ref_ref => {:name => "Code ref", :reorder => true}, :p_product_ref => {:name => "Désignation", :reorder => true}, :color => {:name => "Couleur"}, :p_article_serial_nums => {:name => "N° identifiants"}, :actions => {:name => "Actions", :reorder => false}, } end + + include PgSearch::Model + pg_search_scope :global_search, + associated_against: { + p_product_ref: [:cc_name, :ref], + s_brand: [ :code, :name ], + p_product_color: [:name, :color], + p_article_serial_nums: [:value] + }, + using: { + tsearch: { prefix: true } + } + def member_label "#{p_product_ref.cc_name}" end diff --git a/app/models/p_serial_num_value.rb b/app/models/p_serial_num_value.rb index c8a476f..c6716a3 100644 --- a/app/models/p_serial_num_value.rb +++ b/app/models/p_serial_num_value.rb @@ -1,4 +1,5 @@ class PSerialNumValue < ApplicationRecord + # USELESS MODEL : VALUES A ON p_article_serial_nums TABLE has_many :p_article_serial_nums, inverse_of: :p_serial_num_value has_many :p_articles, through: :p_article_serial_nums end diff --git a/app/views/admin/p_articles/_p_article.html.haml b/app/views/admin/p_articles/_p_article.html.haml index 32497fc..be0c6ca 100644 --- a/app/views/admin/p_articles/_p_article.html.haml +++ b/app/views/admin/p_articles/_p_article.html.haml @@ -1,9 +1,9 @@ %tr#p_article_row{:id => p_article.id} -tr = {} - -tr[:p_product_ref_code] = capture do + -tr[:p_product_ref_ref] = capture do %td - = p_article.p_product_ref.code + = p_article.p_product_ref.ref -tr[:p_grade] = capture do %td diff --git a/app/views/admin/p_articles/index.html.haml b/app/views/admin/p_articles/index.html.haml index 0064c5c..f889055 100644 --- a/app/views/admin/p_articles/index.html.haml +++ b/app/views/admin/p_articles/index.html.haml @@ -12,18 +12,29 @@ %table %tr - %td=text_field_tag "search[p_product_ref_cc_code]", params[:search][:p_product_ref_cc_code],:class => "form-control", :placeholder => "Code" + %td{style: "min-width: 500px;"} + .input-group + =text_field_tag "search[global]", params[:search][:global],:class => "form-control", :placeholder => "Marque, modèle, couleur, code, IMEI, SN..." + .input-group-append{:onclick => "$(this).prev('input').val('');"} + .btn.btn-outline-dark + =ic(:times) - %td=text_field_tag "search[p_product_ref_cc_name]", params[:search][:p_product_ref_cc_name],:class => "form-control", :placeholder => "Article" + %tr + -if false + %td=text_field_tag "search[p_product_ref_cc_code]", params[:search][:p_product_ref_cc_code],:class => "form-control", :placeholder => "Code" - %td=text_field_tag "search[p_article_serial_num]", params[:search][:p_article_serial_num],:class => "form-control", :placeholder => "N° de serie" + %td=text_field_tag "search[p_product_ref_cc_name]", params[:search][:p_product_ref_cc_name],:class => "form-control", :placeholder => "Article" - %td.pl-2 Grade : - %td=select_tag "search[p_grade_id]", options_for_select([["",""],["Aucune","null"]]+PGrade.pluck(:grade, :id), params[:search][:p_grade_id]), class: "custom-select" + %td=text_field_tag "search[p_article_serial_num]", params[:search][:p_article_serial_num],:class => "form-control", :placeholder => "N° de serie" + + %td.pl-2 Couleur : + %td + =select_tag "search[p_product_color]", options_for_select([["",""],["Aucune","null"]]+PProductColor.pluck(:color, :id), params[:search][:p_product_color]),class: "custom-select" + + -if PGrade::ACTIVATED + %td.pl-2 Grade : + %td=select_tag "search[p_grade_id]", options_for_select([["",""],["Aucune","null"]]+PGrade.pluck(:grade, :id), params[:search][:p_grade_id]), class: "custom-select" - %td.pl-2 Couleur : - %td - =select_tag "search[p_product_color]", options_for_select([["",""],["Aucune","null"]]+PProductColor.pluck(:color, :id), params[:search][:p_product_color]),class: "custom-select" =render :partial => "qi/qi_ordered_table_search_footer", :locals => {:collection_object => @p_articles}