Merge pull request #4436 from expsa/eltayar

🔧 FINAL SOLUTION: trigger_up('reload') implementation - Standard Odoo filtering
This commit is contained in:
Mohamed Eltayar 2025-08-30 14:10:04 +03:00 committed by GitHub
commit a8088d74d7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 25 additions and 22 deletions

View File

@ -162,7 +162,7 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
},
/**
* FIXED: Perform search using CORRECT Odoo method
* CORRECTED: Perform search using PROPER Odoo reload method
*/
_performSearch: function(value) {
var self = this;
@ -173,7 +173,7 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
return Promise.resolve();
}
console.log('=== FIXED PERFORM SEARCH ===');
console.log('=== CORRECTED PERFORM SEARCH ===');
console.log('Search value:', value);
console.log('Value length:', value ? value.length : 0);
@ -195,7 +195,7 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
return Promise.resolve();
}
console.log('Starting FIXED search for model:', self.state.model);
console.log('Starting CORRECTED search for model:', self.state.model);
// Store original domain only once
if (!self._search.originalDomain && !self._search.isFiltered) {
@ -205,22 +205,22 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
// Show loading
self._showLoading(true);
// FIXED: Use correct Odoo search method
return self._searchWithCorrectMethod(value).finally(function() {
// CORRECTED: Use proper Odoo reload method with domain update
return self._searchWithReload(value).finally(function() {
self._showLoading(false);
self._searchInProgress = false;
console.log('=== Fixed search completed ===');
console.log('=== Corrected search completed ===');
});
});
},
/**
* FIXED: Use the CORRECT Odoo search method that actually filters records
* CORRECTED: The PROPER way - Use reload with updated domain
*/
_searchWithCorrectMethod: function(value) {
_searchWithReload: function(value) {
var self = this;
console.log('=== USING CORRECT ODOO SEARCH METHOD ===');
console.log('=== USING CORRECT RELOAD METHOD ===');
// Build search domain
var searchDomain = this._buildSearchDomain(value);
@ -249,12 +249,13 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
// Update UI with accurate count
self.$('.oe_search_count').text(_t('Found: ') + count + _t(' records')).show();
// STEP 2: THE CORRECT WAY - Use trigger_up with 'search' event
// This is the proper way to trigger search in Odoo
self.trigger_up('search', {
// STEP 2: THE CORRECT WAY - Use trigger_up with 'reload' passing domain
// This is how Odoo's own search works!
self.trigger_up('reload', {
domain: finalDomain,
context: self.state.context || {},
groupBy: self.state.groupedBy || []
groupBy: self.state.groupedBy || [],
keepSelection: false
});
// Update search state
@ -264,11 +265,12 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
}).catch(function(error) {
console.error('Error getting search count:', error);
// Fallback: still apply search without count
self.trigger_up('search', {
// Fallback: still apply reload without count
self.trigger_up('reload', {
domain: finalDomain,
context: self.state.context || {},
groupBy: self.state.groupedBy || []
groupBy: self.state.groupedBy || [],
keepSelection: false
});
self._search.isFiltered = true;
@ -279,12 +281,12 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
},
/**
* FIXED: Clear search using CORRECT Odoo method
* CORRECTED: Clear search using proper reload method
*/
_clearSearchInternal: function() {
var self = this;
console.log('=== FIXED CLEAR SEARCH ===');
console.log('=== CORRECTED CLEAR SEARCH ===');
// Clear UI immediately
this.$('.oe_search_input').val('');
@ -299,17 +301,18 @@ odoo.define('fims_general_search_tree_view.list_search', function (require) {
// Use original domain to clear search
var originalDomain = this._search.originalDomain || [];
// FIXED: Use correct 'search' event instead of 'do_search'
this.trigger_up('search', {
// CORRECTED: Use proper reload with original domain
this.trigger_up('reload', {
domain: originalDomain,
context: this.state.context || {},
groupBy: this.state.groupedBy || []
groupBy: this.state.groupedBy || [],
keepSelection: false
});
// Clear stored original domain
this._search.originalDomain = null;
console.log('Search cleared using FIXED method');
console.log('Search cleared using CORRECTED method');
return Promise.resolve();
},