Class: DocumentTypes::Search::InvoiceSearch
- Inherits:
-
Object
- Object
- DocumentTypes::Search::InvoiceSearch
- Defined in:
- app/services/document_types/search/invoice_search.rb
Class Method Summary collapse
-
.applicable?(query) ⇒ Boolean
Vérifier si cette recherche doit être utilisée pour la requête donnée.
-
.register ⇒ Object
S’enregistrer auprès du registre de types de documents.
-
.specific_fields ⇒ Object
Liste des champs spécifiques aux factures Cette méthode est utilisée à la fois pour déterminer l’applicabilité et pour exclure ces champs des filtres standards.
Instance Method Summary collapse
-
#execute ⇒ Object
Méthode principale pour exécuter la recherche.
-
#initialize(query, user = nil) ⇒ InvoiceSearch
constructor
Initialisation avec les paramètres de requête et l’utilisateur.
Constructor Details
#initialize(query, user = nil) ⇒ InvoiceSearch
Initialisation avec les paramètres de requête et l’utilisateur
7 8 9 10 |
# File 'app/services/document_types/search/invoice_search.rb', line 7 def initialize(query, user = nil) @query = query @user = user end |
Class Method Details
.applicable?(query) ⇒ Boolean
Vérifier si cette recherche doit être utilisée pour la requête donnée
34 35 36 37 38 39 |
# File 'app/services/document_types/search/invoice_search.rb', line 34 def self.applicable?(query) return false unless query['document_type'] == 'invoice' # Vérifier si des champs spécifiques aux factures sont présents query.keys.any? { |k| specific_fields.include?(k) } end |
.register ⇒ Object
S’enregistrer auprès du registre de types de documents
54 55 56 57 58 59 60 61 62 63 |
# File 'app/services/document_types/search/invoice_search.rb', line 54 def self.register # Assurez-vous que DocumentTypes::Registry est disponible if defined?(DocumentTypes::Registry) # Enregistrer la classe de recherche pour le type 'invoice' # DocumentTypes::Registry.register_search_handler('invoice', self) # Cette étape est maintenant gérée automatiquement via # DocumentTypes::Registry.search_handler end end |
.specific_fields ⇒ Object
Liste des champs spécifiques aux factures Cette méthode est utilisée à la fois pour déterminer l’applicabilité et pour exclure ces champs des filtres standards
44 45 46 47 48 49 50 51 |
# File 'app/services/document_types/search/invoice_search.rb', line 44 def self.specific_fields [ 'invoice_number', 'issue_date', 'total_amount', 'seller_name', 'buyer_name', 'net_amount', 'tax_amount', 'currency', 'payment_status', 'electronic_format', 'min_amount', 'max_amount', 'start_date', 'end_date' ] end |
Instance Method Details
#execute ⇒ Object
Méthode principale pour exécuter la recherche
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'app/services/document_types/search/invoice_search.rb', line 13 def execute # Convertir les paramètres de requête en critères pour InvoiceService invoice_criteria = extract_invoice_criteria # Utiliser InvoiceService pour effectuer la recherche invoice_records = DocumentTypes::InvoiceService.search(invoice_criteria) # Filtrer par l'accès utilisateur si nécessaire if @user && @user.respond_to?(:readable_doc_ids) doc_ids = @user.readable_doc_ids invoice_records = invoice_records.where(:doc_id.in => doc_ids) end # Obtenir les IDs des documents correspondants doc_ids = invoice_records.pluck(:doc_id) # Retourner les IDs pour permettre au service principal de charger les documents doc_ids end |