我在Openerp 7中遇到了搜索的新问题。当我试图按关系表的某些字段分组时,它不起作用。 例如,我需要合同模块(hr_contract表)中的职位名称(数据库字段:job_id),条件:primary_contract(自定义字段)为“是”,但是我将按员工模块中合同表的职位名称进行分组(hr_employee表)。而Job(数据库字段:job_id)已经存在于Employee Module(hr_employee表)中,但是我不想按Employee表的Job字段进行分组。我需要根据合同表的职位分组。请给我任何解决方案。 这是我的代码,
在employee_view_xml中,
<record id="extend_view_employee_filter" model="ir.ui.view">
<field name="name">Employees</field>
<field name="model">hr.employee</field>
<field name="inherit_id" ref="hr.view_employee_filter"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="after">
<filter icon="terp-go-month"
string="New Employee"
domain="[('joining_date','<=',(context_today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('joining_date','>=',(context_today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]"
help="Employees who have joined current month ...." />
<filter icon=""
string="Unsigned Contract"
domain="[('contract_ids', '=', False)]"
help="Employees who have not any contract on Contract module ...." />
<!-- <filter icon=""
string="Extend Contract"
domain="['&',('contract_ids.primary_contract', '=', 1),('contract_ids.date_end', '>', (context_today().strftime('%%Y-%%m-%%d')))]"
help="Employees who need to extend contract ...." /> -->
<filter icon="terp-go-month"
string="Resigned Employee"
domain="[('leaving_date','<=',(context_today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('leaving_date','>=',(context_today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]"
help="Employees who have resigned current month ...." />
</xpath>
<xpath expr="//group[@string='Group By...']/filter[@string='Company']" position="after">
<filter string="Joining Date" domain="[]" context="{'group_by': 'joining_date'}"/>
<filter string="Team" domain="[]" context="{'group_by': 'team_id'}"/>
<filter name="get_group_by_job_of_contracts" string="Job (Contract)" domain="[('contract_ids.primary_contract', '=', 1)]" context="{'group_by': 'contract_ids[0]'}" />
</xpath>
</field>
</record>
在employee.py中,
'contract_ids': fields.one2many('hr.contract', 'employee_id', string='All Contracts', required=False, domain=[('active','=',True)], store=True)
在contract.py中,
'employee_id': fields.many2one('hr.employee', "Employee", required=True)
'job_id': fields.many2one('hr.job', 'Job Title')
预先感谢
答案 0 :(得分:0)
无法通过many2many
或one2many
字段进行分组。列表视图不是为此设计的。您已经了解了这一点,因为您正在尝试对员工使用第一份合同。但这还是行不通的。
如果您确实想将第一个合同用于分组依据,请在hr.employee
上定义与contract_ids.job_id
相关的相关字段:
_columns = {
'first_contract_job_id': fields.related(
'contract_ids', 'job_id', type='many2one',
relation='hr.job', string='First Contract's Job', store=True),
}
那应该采用第一个合同的job_id
。存储此字段很重要,因为Odoo不能按非数据库持久性字段分组。
但是我不确定它是否会正常工作,因为one2many
上这样一个相关字段的第一个示例是在Odoo V8中使用的,例如product.template
。试试吧。
如果您与一个员工签订了多个合同,则应使用计算字段而不是相关字段。