适当的年/月过滤器实现

时间:2015-10-12 03:48:25

标签: odoo odoo-8

Search view domain error之外(我已经接受了答案,因为我在如何在自制时间表模块中进行适当的年/月过滤的理论似乎是错误的。这是关于的答案为什么我收到错误。答案:因为我的方法错了。我在这里询问如何正确使用)。

所以,快速概述。自制时间表模块。 2组搜索视图过滤器:。有没有办法让组依赖于组,就像我选择某一年一样,组现在将与该特定相关年? 下面是一些代码示例:

<!--Timesheets-ALL Tab search view-->
    <record id="view_tabel_search3" model="ir.ui.view">
            <field name="name">tabel.tabel.search3</field>
            <field name="model">tabel.tabel</field>
            <field name="type">search</field>
            <field name="arch" type="xml">
            <search string="Checker">
                <field name="time_start_t" select="True"/>
                <field name="id_ank" select="True"/>
                <group expand="0" string="Years">
                <filter
                string="Last year"
                name="filter5"
                domain="[('time_end_t', '&gt;=' ,(context_today()-relativedelta(years=1)).strftime('%Y-01-01')), ('time_end_t', '&lt;' , (context_today()).strftime(
                help = "Shows timesheets for last year"/>
                <separator/>
                <filter
                string="Current year"
                name="filter4"
                domain="[('time_end_t', '&gt;=' ,(context_today()).strftime('%Y-01-01')), ('time_end_t', '&lt;' , (context_today()+relativedelta(years=1)).strftime(
                help = "Shows timesheets for current year"/>
                <separator/>
                <filter
                string="Next year"
                name="filter6"
                domain="[('time_end_t', '&gt;=', (context_today()+relativedelta(years=1)).strftime('%Y-01-01')),('time_end_t','&lt;=', (context_today()+relativedelt
                help = "Shows timesheets for next year"/>
                </group>
                <group expand="0" string="Months">
                <filter
                string="January"
                name="filter7"
                domain="[('time_end_t', '&gt;=' ,(context_today()).strftime('%Y-01-01')), ('time_end_t', '&lt;' , (context_today()).strftime('%Y-02-01'))]"
                help = "Shows timesheets for january"/>
                <separator/>
                <filter
                string="February"
                name="filter8"
                domain="[('time_end_t', '&gt;=' ,(context_today()).strftime('%Y-02-01')), ('time_end_t', '&lt;' , (context_today()).strftime('%Y-03-01'))]"
                help = "Shows timesheets for february"/>
                <separator/>
                ...
                <filter
                string="November"
                name="filter17"
                domain="[('time_end_t', '&gt;=' ,(context_today()).strftime('%Y-11-01')), ('time_end_t', '&lt;' , (context_today()).strftime('%Y-12-01'))]"
                help = "Shows timesheets for november"/>
                <separator/>
                <filter
                string="December"
                name="filter18"
                domain="[('time_end_t', '&gt;=' ,(context_today()).strftime('%Y-12-01')), ('time_end_t', '&lt;' , (context_today()+relativedelta(years=1)).strftime(
                help = "Shows timesheets for december"/>
                </group>
            </search>
            </field>
    </record>

time_end_t time_start_t 是我们的时间表开始和结束的日期。 如您所见, months 本身将显示当年的正确时间表。以及当前年度和任何的组合。但去年明年显然因为(context_today())而无法工作。

我认为最合乎逻辑的方法是使用 time_end_t 的年份而不是(context_today())的年份(这是目前唯一的)。但正如我在上一篇文章中所说的那样。回答,这是一个错误的想法。所以..一如既往,任何建议都将受到高度赞赏!

2015-10-20upd:经过长时间休息后我回到了这个问题,但仍然不知道,我也想知道,是否有可能从&#34;&#34;更改过滤规则?到&#34;或&#34;?例如,如果我在1月和11月检查过,我希望看到这两个月的时间表,而不是从1月开始到11月结束的时间表。没有那个 的东西,只有上个月的过滤器可以工作。

0 个答案:

没有答案