Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
1 Odpowiedz
11298 Widoki

I would like to filter my clients in a view and only list clients that have services (a custom module).

I tried a lot of things but my view keeps listing the whole and it drives me crazy.

My related view/action:

<record id="view_res_partner_tree" model="ir.ui.view">

  <field name="name">res.partner.tree</field>

  <field name="model">res.partner</field>

  <field name="arch" type="xml">

  <tree string="Contacts" edit="false" create="false" delete="false">

  <field name="got_services"/>

  <field name="display_name" domain="[('got_services', '=', True)]"/> 

  <button name="generate" type="object" string="Générer" icon="oe_highlight"/>

  </tree>

  </field>

  </record>


  <record model="ir.actions.act_window" id="action_res_partner">

  <field name="name">Génération factures</field>

  <field name="res_model">res.partner</field>

  <field name="view_mode">tree</field>

  <field name="view_id" ref="view_res_partner_tree" />

  <field name="domain">[('got_services', '=', True)]</field>

  </record>


My model inherited from res.partner:


class res_partner(models.Model):

 _name = 'res.partner'

 _inherit = 'res.partner'  

 got_services = fields.Boolean('Got services', compute='_compute_services') 

 @api.multi

 def _compute_services(self): 

     for record in self:

     self.env.cr.execute("SELECT * FROM module_service WHERE id = %d;" % record.id)

    res = self.env.cr.fetchall() 

    record.got_services = False if not res else True 

I even added this to mymodule_security.xml in /security

 <?xml version="1.0" encoding="utf-8"?>

  <openerp>

  <data noupdate="1">

  <record id="module_list_clients" model="ir.rule">

  <field name="name">Clients</field>

  <field name="model_id" ref="model_res_partner"/>

  <field name="global" eval="True"/>

  <field name="domain_force">[('got_services', '=', True)]</field>

  </record>

  </data>

  </openerp>


Whatever I try every single clients is printed even if my boolean is correctly set to True or False.
Do you guys have an idea please ?

Thanks

Awatar
Odrzuć
Najlepsza odpowiedź

Hi there,

I'm clearly not a technical expert, but I wonder if this problem isn't related to storing the value of your field.

As explained in our documentation, under "computed fields" https://www.odoo.com/documentation/8.0/reference/orm.html:

computed fields are not stored by default, they are computed and returned when requested. Setting store=True will store them in the database and automatically enable searching

My guess is that not storing the result of the function won't allow you to search (and so to have a domain on the field)

Can you try and keep us aware of your findings?

Awatar
Odrzuć
Powiązane posty Odpowiedzi Widoki Czynność
0
mar 15
4306
5
wrz 20
12915
3
mar 15
52434
1
mar 15
5418
2
mar 15
7638