I have 1200 Customers and many of them have a same name. I want to select customer by his internal reference in quotation or sale order. Any Help will be greatly appriciated?
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
- CRM
- e-Commerce
- Accounting
- Inventory
- PoS
- Project management
- MRP
This question has been flagged
Sure you can do it...
Write a "name_search" method in the partner object...
In that you can define it to search the records based on whatever columns you want to search..
In my requirement: I have defined it such a way, that a customer can be searched using a mobile number or email or name or ref..
A sample code:
def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100):
if not args:
args = []
ids = []
if name and operator in ('=', 'ilike', '=ilike', 'like', '=like'):
search_name = name
if operator in ('ilike', 'like'):
search_name = '%%%s%%' % name
if operator in ('=ilike', '=like'):
operator = operator[1:]
query_args = {'name': search_name}
limit_str = ''
if limit:
limit_str = ' limit %(limit)s'
query_args['limit'] = limit
search_name = query_args['name']
cr.execute("SELECT p.id FROM res_partner p WHERE (p.name ilike '" + (search_name or '') + "%') OR (p.ref ilike '" + (search_name or '') + "%') OR (p.mobile ilike '" + (search_name or '') + "%') OR (p.email ilike '" + (search_name or '') + "%') ")
ids = map(lambda x: x[0], cr.fetchall())
ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context)
if ids:
return self.name_get(cr, uid, ids, context)
return super(res_partner, self).name_search(cr, uid, name, args, operator=operator, context=context, limit=limit)
Thanks for your reply. Can you please show me some example?
def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=100): if not args: args = [] ids = [] if name and operator in ('=', 'ilike', '=ilike', 'like', '=like'): search_name = name if operator in ('ilike', 'like'): search_name = '%%%s%%' % name if operator in ('=ilike', '=like'): operator = operator[1:] query_args = {'name': search_name} limit_str = '' if limit: limit_str = ' limit %(limit)s' query_args['limit'] = limit search_name = query_args['name'] cr.execute("SELECT p.id FROM res_partner p WHERE (p.name ilike '" + (search_name or '') + "%') OR (p.ref ilike '" + (search_name or '') + "%') OR (p.mobile ilike '" + (search_name or '') + "%') OR (p.email ilike '" + (search_name or '') + "%') OR (p.phone ilike '" + (search_name or '') + "%') ") ids = map(lambda x: x[0], cr.fetchall()) ids = self.search(cr, uid, [('id', 'in', ids)] + args, limit=limit, context=context) if ids: return self.name_get(cr, uid, ids, context) return super(res_partner, self).name_search(cr, uid, name, args, operator=operator, context=context, limit=limit)
In this comment section: I couldn't align it... hence edited the above answer, and the sample code...
Thanks for your brief explanation and code snipe. A littler more help bcz I am totally a newbie and not have much coding experience. This "Write a "name_search" method in the partner object..." sentence ask me to edit partner object. Where can I found partner object. In some module or in developer mode. Thanks in advance.
Can you please provide me some more help. You say that I should write a search method in partner object. My question is where I can locate this partner object in sales module. I also want to know that is this code snippet work in quotation, and purchase orders also. Or please give me some idea that how can i use this code to build a custom module for example a module with this name enhance_customer_search and install this module to gain this feature.
Enjoying the discussion? Don't just read, join in!
Create an account today to enjoy exclusive features and engage with our awesome community!
Sign upRelated Posts | Replies | Views | Activity | |
---|---|---|---|---|
Quotation Line Item limit
Solved
|
|
1
May 22
|
1779 | |
|
0
Apr 21
|
1714 | ||
|
2
Feb 20
|
2642 | ||
|
0
Mar 16
|
2506 | ||
|
1
Sep 15
|
3448 |
any help?
Odoo name search method: https://www.youtube.com/watch?v=dd5SYkPSMSo