odoo12 search搜索

odoo12 search搜索

<record model="ir.ui.view" id="my_apply_search">
            <field name="name">我的申请搜索</field>
            <field name="model">hr.leave.apply</field>
            <field name="arch" type="xml">
                <search string="my_apply_search">
                    <separator orientation="申请类型"/>
                    <filter string="请假申请" name="filter_apply_type_leave" domain="[('apply_type', '=', 'leave')]" />
                    <separator orientation="审批状态"/>
                    <filter string="待审核" name="filter_state_wait_approval" domain="[('state', '=', 'wait_approval')]" />
                    <filter string="审批中" name="filter_state_approval" domain="[('state', '=', 'approval')]" />
                    <filter string="已审批" name="filter_state_finish_approval" domain="[('state', '=', 'finish_approval')]" />
                    <filter string="未通过" name="filter_state_reject" domain="[('state', '=', 'reject')]" />
                    <filter string="已取消" name="filter_state_cancel" domain="[('state', '=', 'cancel')]" />
                    <separator/>
                    <filter string="当月申请" name="filter_apply_time" domain="[('create_date', '&gt;=', (context_today() + relativedelta(day=1)).strftime('%Y-%m-%d')),
                                ('create_date', '&lt;=', (context_today() + relativedelta(months=1, day=1, days=-1)).strftime('%Y-%m-%d'))]" />
                    <filter string="今日至往后1周" name="filter_apply_time" domain="[('apply_time', '&gt;=', (context_today() + relativedelta(day=1)).strftime('%Y-%m-%d')),
                                ('apply_time', '&lt;=', (context_today() + relativedelta(weeks=1)).strftime('%Y-%m-%d'))]" />
                    <field name="apply_employee" filter_domain="[('apply_employee', 'ilike', self)]"/>
                    <field name="mini_type" />
                    <field name="apply_date" />
                    <group expand="0" string="Group By">
                        <filter string="申请日期" name="filter_groupby_apply_date" domain="[('state', 'not in', ['reject','cancel'])]" context="{'group_by':'apply_date'}"/>
                    </group>
                </search>
            </field>
        </record>
  • <field> 标签定义搜索条件 可添加域。
  • <filter>标签定义筛选条件,通过域控制输出记录集。
  • <separator>标签分隔,部分情况不分隔会导致筛选条件不生效。
<filter string="本年度" name="filter_current_year" domain="[('year', '=', datetime.datetime.now().year)]" />

在filter中 domain可执行一些python代码
例如datetime
相同字段的筛选条件选择后默认为或的关系
多个默认筛选条件需要使用<separator>标签分隔

  • 分组:
<group expand="0" string="Group By">
    <filter string="申请日期" name="filter_groupby_apply_date" domain="[('state', 'not in', ['reject','cancel'])]" context="{'group_by':'apply_date'}"/>
</group>
<!-- 在group > filter标签中的context设置group_by,其值为分组的字段 -->

--------------------- 若有错误,感谢指正 ----------------------------


版权声明:本文为weixin_43579930原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。