How to search with functional fields?
my code
'calculate_next_visit' : fields.function(
__get_next_visit,
method=True,
type='char',
store=True,
string="Calculo de próxima visita"),
def __get_next_visit(self, cr, uid, obj, name, args, context):
print 'something'
res = {}
for v in self.browse(cr, uid, obj):
diagnosis = map(lambda x:x.upper(),v.diagnosis)
if 'PAP' in diagnosis or 'P.A.P' in diagnosis:
# more code....
res[v.id] = True
return res
and my view:
<record id="search_visit_filter" model="ir.ui.view">
<field name="name">Visitas</field>
<field name="model">visit</field>
<field name="arch" type="xml">
<search string="Search xxx">
<filter domain="[('calculate_next_visit','=',True)]" string="Visitas Próximas a la fecha"/>
</search>
</field>
</record>
When select filter, never print "something"
Somebody Help me?
THE SOLUTION
'calculate_next_visit' : fields.function(
_next_visit,
fnct_search=_search_next_visit,
method=True,
type='char',
multi=True,
string="Calculo de próxima visita",
),
set fnct_search parameter, and implement that.
def _search_next_visit(self, cr, uid, obj, name, args, context=None):
res = []
ids = obj.search(cr,uid,[]) # ids of visits
for v in self.browse(cr, uid, ids): # foreach visit
diags = [d.name.upper() for d in v.diagnosis]
if "PAP" in diags:
res.append(v.id)
return [('id','in',res)]
important return type of fnct_search
and my search view...
<group expand="0" string="Agrupar por...">
<filter string="Próximas Visitas" domain="[('calculate_next_visit','=',True)]" context="{'group_by':'next_visit'}" />
</group>
check documentation for fnct_search functions
@ Bruno , i have the same problem as you . You already found the answer right ? did you change __get_next_visit method as well ?