2013-08-03 49 views
1

我需要为我的模块的树视图添加默认过滤器。在树视图中添加默认过滤器 - OpenErp自定义模块

我看到一些代码示例中的OpenERP,像这样的:

<filter 
    string="Partner" 
    icon="terp-partner" 
    domain="[]" 
    context="{'group_by':'partner_id'}" 
    /> 

这一个purchase模块中,通过partner_id分组,作为一个例子。

现在,我有一个自定义模块,当你点击它的菜单时,我需要一个“默认”过滤器。

而且此过滤器必须显示所有未过期的记录,或者在浏览模块中的记录时尚未通过实际日期的记录。

我有我的自定义模块这一领域:

'Fecha_de_Vence': fields.date(
    'Fecha de Vencimiento', 
    required=True, 
    select=True, 
    ), 

这是我需要为这个模块中的所有记录的过滤器领域。

现在,在'高级搜索'我可以把例如Fecha de Vencimiento不超过actual date,好吧,我需要把它作为'默认'过滤器。

任何人都可以在openerp的xml视图中了解如何在默认情况下获取此信息?

回答

5

你需要一个搜索视图,并在act_window上下文项:

<record id="search_xxx_filter" model="ir.ui.view"> 
    <field name="name">module.class.select</field> 
    <field name="model">module.class</field> 
    <field name="arch" type="xml"> 
     <search string="Search xxx"> 
      <field name="Fecha_de_Vence" string="Fecha de Vencimiento" filter_domain="[(1,'=',1)]"/> 
      <separator/> 
      <filter string="Fecha de Vencimiento" name="type_date" domain="[(1,'=',1)]" help="..."/> 
      <separator/> 
      <group expand="0" string="Group By..."> 
       <filter string="Assigned to" domain="[]" context="{'group_by' : 'user_id'}" /> 
       <filter string="Status" domain="[]" context="{'group_by': 'state'}"/> 
       <filter string="Priority" domain="[]" context="{'group_by': 'priority'}"/> 
      </group> 
     </search> 
    </field> 
</record> 

<record id="module_class_act" model="ir.actions.act_window"> 
    <field name="name">xxx</field> 
    <field name="res_model">module.class</field> 
    <field name="view_type">form</field> 
    <field name="context">{"search_default_type_date":1}</field> 
    <field name="view_id" ref="module_class_tree-view"/> 
</record> 

我离开了组条目,所以你可以看到他们的样子,但你需要将其删除或调整他们所以他们匹配你的数据。另外,moduleclass这两个字应该替换为您的数据。

+0

谢谢,它几乎可以工作,我的意思是如果我只使用第一个xml记录,它显示了我在过滤器选项中的字段,但是如果我使用第二条记录和第一个ie:“module_class_act”我不明白我应该在“ref = module_class_tree-view”中输入什么,它会引发一个关于未在系统中定义的外部标识符的错误,我把“solvencia_solvencia_tree-view”但仍然出现这个错误,solvencia是我正在工作的类这一个 – NeoVe

+0

一个问题,如果我只是“保存”一个自定义过滤器在搜索,不会做同样的工作? – NeoVe

+0

@KristianKoci:是的。在xml文件中使用它的好处是全新安装。 –

3

Ethan

这是我如何解决它,没有你的建议,将是不可能的:

<record id="solvencia_search" model="ir.ui.view"> 
<field name="name">solvencia.solvencia.select</field> 
<field name="model">solvencia.solvencia</field> 
<field name="arch" type="xml"> 
    <search string="Solvencias"> 
     <field name="Fecha_de_Vence" string="Fecha de Vencimiento" filter_domain="[('Fecha_de_Vence','=',((context_today()-datetime.timedelta(days=10)).strftime('%%Y-%%m-%%d')))]"/> 
     <separator/> 
     <filter string="Fecha de Vencimiento" name="type_date" domain="[('Fecha_de_Vence','=',((context_today()-datetime.timedelta(days=10)).strftime('%%Y-%%m-%%d')))]" help="..."/> 
     <separator/> 
     <group expand="0" string="Group By..."> 
      <filter string="Assigned to" domain="[]" context="{'group_by' : 'Fecha_de_Vence'}" /> 
      <filter string="Status" domain="[]" context="{'group_by': 'Fecha_de_Emision'}"/> 
      <filter string="Priority" domain="[]" context="{'group_by': 'nsol'}"/> 
     </group> 
    </search> 
</field> 

而且contextact_window

<record id="action_solvencia_solvencia" model="ir.actions.act_window"> 
    <field name="name">Solvencias</field> 
    <field name="res_model">solvencia.solvencia</field> 
    <field name="view_type">form</field> 
    <field name="context">{"search_default_type_date":1}</field> 
    <field name="view_mode">tree,form</field> 
    <field name="view_id" ref="solvencia_solvencia_tree"/> 
     <field name="nsol" /> 
     <field name="Fecha_de_Emision" /> 
     <field name="Fecha_de_Vence" /> 
     <field name="ministerio" /> 
     <field name="ins_em" /> 
     <field name="cod_ver" /> 
     <field name="cadidate" /> 
     <field name="observa" /> 
</record> 

完美的作品,非常感谢你!

+1

不客气!不过,您可能希望将过滤器字符串从“分配给”,“状态”和“优先级”更改为有意义的内容。;) –

+0

是啊大声笑呵呵我正在清理它,但重要的事情现在正在工作,谢谢! :) – NeoVe