搜索视图域错误
Search view domain error
有一个带有时间表模块(自制)的odoo系统。我制作了 2 组搜索视图过滤器:years 和 months:
<!--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">
<group expand="0" string="Years">
<filter
string="Last year"
name="filter5"
domain="[('time_end_t', '>=' ,(context_today()-relativedelta(years=1)).strftime('%Y-01-01')), ('time_end_t', '<' , (context_today()).strftime(
help = "Shows timesheets for last year"/>
<separator/>
<filter
string="Current year"
name="filter4"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-01-01')), ('time_end_t', '<' , (context_today()+relativedelta(years=1)).strftime(
help = "Shows timesheets for current year"/>
<separator/>
<filter
string="Next year"
name="filter6"
domain="[('time_end_t', '>=', (context_today()+relativedelta(years=1)).strftime('%Y-01-01')),('time_end_t','<=', (context_today()+relativedelt
help = "Shows timesheets for next year"/>
</group>
<group expand="0" string="Months">
<filter
string="January"
name="filter7"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-01-01')), ('time_end_t', '<' , (context_today()).strftime('%Y-02-01'))]"
help = "Shows timesheets for january"/>
<separator/>
<filter
string="February"
name="filter8"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-02-01')), ('time_end_t', '<' , (context_today()).strftime('%Y-03-01'))]"
help = "Shows timesheets for february"/>
<separator/>
...
<filter
string="November"
name="filter17"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-11-01')), ('time_end_t', '<' , (context_today()).strftime('%Y-12-01'))]"
help = "Shows timesheets for november"/>
<separator/>
<filter
string="December"
name="filter18"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-12-01')), ('time_end_t', '<' , (context_today()+relativedelta(years=1)).strftime(
help = "Shows timesheets for december"/>
</group>
<field name="time_start_t" select="True"/>
<field name="id_ank" select="True"/>
</search>
</field>
</record>
time_end_t 和 time_start_t 是我们的时间表开始和结束的日期。
如您所见,months 本身将显示当年的正确时间表。以及 当前年份 和任何 月份 的组合。但是去年和明年显然是行不通的,因为(context_today())东西
我认为最合乎逻辑的方法是使用 time_end_t 的年份而不是 (context_today()) 的年份(仅当前)。但是我有一个错误(在翻译中),比如
Unable to process the search criteria
...
name 'time_end_t' is not defined
例如,当我写这样的东西时:
<field name="time_end_t" />
<filter
string="January"
name="filter7"
domain="[('time_end_t', '>=' , time_end_t )]"
help = "Shows timesheets for january (not actually)"/>
但是它在上面定义了..
任何建议将不胜感激!
更新:工作代码示例(针对 Odedra):
<page string="Timesheet's data">
<table style="width:100%;">
<tr>
<field name="state" widget="statusbar" string="document's status"/>
</tr>
<tr><td>
<group>
<field name="time_start_t" string="Timesheet's start date" />
<field name="time_end_t" string="Timesheet's end date" />
</group></td><td>
<group>
<field name="id_division" string="Division" domain="[('enddate','>=',time_start_t),('startdate','<=',time_end_t) ]"/>
<field name="id_ank" string="Tableman" />
<field name="dayall"/>
</group></td></tr>
</table>
</page>
一切正常。当我们在域上使用任何字段时,我们必须注册该字段。意味着我们需要在搜索视图的第一行定义该字段。
尝试使用此代码:
<!--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', '>=' ,(context_today()-relativedelta(years=1)).strftime('%Y-01-01')), ('time_end_t', '<' , (context_today()).strftime(
help = "Shows timesheets for last year"/>
<separator/>
<filter
string="Current year"
name="filter4"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-01-01')), ('time_end_t', '<' , (context_today()+relativedelta(years=1)).strftime(
help = "Shows timesheets for current year"/>
<separator/>
<filter
string="Next year"
name="filter6"
domain="[('time_end_t', '>=', (context_today()+relativedelta(years=1)).strftime('%Y-01-01')),('time_end_t','<=', (context_today()+relativedelt
help = "Shows timesheets for next year"/>
</group>
<group expand="0" string="Months">
<filter
string="January"
name="filter7"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-01-01')), ('time_end_t', '<' , (context_today()).strftime('%Y-02-01'))]"
help = "Shows timesheets for january"/>
<separator/>
<filter
string="February"
name="filter8"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-02-01')), ('time_end_t', '<' , (context_today()).strftime('%Y-03-01'))]"
help = "Shows timesheets for february"/>
<separator/>
...
<filter
string="November"
name="filter17"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-11-01')), ('time_end_t', '<' , (context_today()).strftime('%Y-12-01'))]"
help = "Shows timesheets for november"/>
<separator/>
<filter
string="December"
name="filter18"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-12-01')), ('time_end_t', '<' , (context_today()+relativedelta(years=1)).strftime(
help = "Shows timesheets for december"/>
</group>
</search>
</field>
</record>
有一个带有时间表模块(自制)的odoo系统。我制作了 2 组搜索视图过滤器:years 和 months:
<!--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">
<group expand="0" string="Years">
<filter
string="Last year"
name="filter5"
domain="[('time_end_t', '>=' ,(context_today()-relativedelta(years=1)).strftime('%Y-01-01')), ('time_end_t', '<' , (context_today()).strftime(
help = "Shows timesheets for last year"/>
<separator/>
<filter
string="Current year"
name="filter4"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-01-01')), ('time_end_t', '<' , (context_today()+relativedelta(years=1)).strftime(
help = "Shows timesheets for current year"/>
<separator/>
<filter
string="Next year"
name="filter6"
domain="[('time_end_t', '>=', (context_today()+relativedelta(years=1)).strftime('%Y-01-01')),('time_end_t','<=', (context_today()+relativedelt
help = "Shows timesheets for next year"/>
</group>
<group expand="0" string="Months">
<filter
string="January"
name="filter7"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-01-01')), ('time_end_t', '<' , (context_today()).strftime('%Y-02-01'))]"
help = "Shows timesheets for january"/>
<separator/>
<filter
string="February"
name="filter8"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-02-01')), ('time_end_t', '<' , (context_today()).strftime('%Y-03-01'))]"
help = "Shows timesheets for february"/>
<separator/>
...
<filter
string="November"
name="filter17"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-11-01')), ('time_end_t', '<' , (context_today()).strftime('%Y-12-01'))]"
help = "Shows timesheets for november"/>
<separator/>
<filter
string="December"
name="filter18"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-12-01')), ('time_end_t', '<' , (context_today()+relativedelta(years=1)).strftime(
help = "Shows timesheets for december"/>
</group>
<field name="time_start_t" select="True"/>
<field name="id_ank" select="True"/>
</search>
</field>
</record>
time_end_t 和 time_start_t 是我们的时间表开始和结束的日期。 如您所见,months 本身将显示当年的正确时间表。以及 当前年份 和任何 月份 的组合。但是去年和明年显然是行不通的,因为(context_today())东西
我认为最合乎逻辑的方法是使用 time_end_t 的年份而不是 (context_today()) 的年份(仅当前)。但是我有一个错误(在翻译中),比如
Unable to process the search criteria
...
name 'time_end_t' is not defined
例如,当我写这样的东西时:
<field name="time_end_t" />
<filter
string="January"
name="filter7"
domain="[('time_end_t', '>=' , time_end_t )]"
help = "Shows timesheets for january (not actually)"/>
但是它在上面定义了.. 任何建议将不胜感激!
更新:工作代码示例(针对 Odedra):
<page string="Timesheet's data">
<table style="width:100%;">
<tr>
<field name="state" widget="statusbar" string="document's status"/>
</tr>
<tr><td>
<group>
<field name="time_start_t" string="Timesheet's start date" />
<field name="time_end_t" string="Timesheet's end date" />
</group></td><td>
<group>
<field name="id_division" string="Division" domain="[('enddate','>=',time_start_t),('startdate','<=',time_end_t) ]"/>
<field name="id_ank" string="Tableman" />
<field name="dayall"/>
</group></td></tr>
</table>
</page>
一切正常。当我们在域上使用任何字段时,我们必须注册该字段。意味着我们需要在搜索视图的第一行定义该字段。
尝试使用此代码:
<!--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', '>=' ,(context_today()-relativedelta(years=1)).strftime('%Y-01-01')), ('time_end_t', '<' , (context_today()).strftime(
help = "Shows timesheets for last year"/>
<separator/>
<filter
string="Current year"
name="filter4"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-01-01')), ('time_end_t', '<' , (context_today()+relativedelta(years=1)).strftime(
help = "Shows timesheets for current year"/>
<separator/>
<filter
string="Next year"
name="filter6"
domain="[('time_end_t', '>=', (context_today()+relativedelta(years=1)).strftime('%Y-01-01')),('time_end_t','<=', (context_today()+relativedelt
help = "Shows timesheets for next year"/>
</group>
<group expand="0" string="Months">
<filter
string="January"
name="filter7"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-01-01')), ('time_end_t', '<' , (context_today()).strftime('%Y-02-01'))]"
help = "Shows timesheets for january"/>
<separator/>
<filter
string="February"
name="filter8"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-02-01')), ('time_end_t', '<' , (context_today()).strftime('%Y-03-01'))]"
help = "Shows timesheets for february"/>
<separator/>
...
<filter
string="November"
name="filter17"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-11-01')), ('time_end_t', '<' , (context_today()).strftime('%Y-12-01'))]"
help = "Shows timesheets for november"/>
<separator/>
<filter
string="December"
name="filter18"
domain="[('time_end_t', '>=' ,(context_today()).strftime('%Y-12-01')), ('time_end_t', '<' , (context_today()+relativedelta(years=1)).strftime(
help = "Shows timesheets for december"/>
</group>
</search>
</field>
</record>