Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 预期单身:行。员工。任务(57,58,59)!!(奥多11)_Python_Xml_Odoo_Odoo 11 - Fatal编程技术网

Python 预期单身:行。员工。任务(57,58,59)!!(奥多11)

Python 预期单身:行。员工。任务(57,58,59)!!(奥多11),python,xml,odoo,odoo-11,Python,Xml,Odoo,Odoo 11,我的代码有问题,我想检查是否有员工已经在所选日期被抓到!但该员工位于字段One2Many,以下是我的代码: 我的错误: class HrMission(models.Model): _name = 'hr.employee.mission' _description = 'Mission object' _inherit = 'mail.thread' line_mission = fields.One2many('lin

我的代码有问题,我想检查是否有员工已经在所选日期被抓到!但该员工位于字段
One2Many
,以下是我的代码:

我的错误:

    class HrMission(models.Model):
        _name = 'hr.employee.mission'
        _description = 'Mission object'
        _inherit = 'mail.thread'

        line_mission = fields.One2many('line.employee.mission','line_mission', string='Employee', help="Employee sent on mission", copy=True,auto_join=True)

    @api.multi
    @api.constrains('mission_start_date', 'mission_end_date')
    def _check_date(self):
        for mission in self:
            domain = [
                ('mission_start_date', '<=', mission.mission_end_date),
                ('mission_end_date', '>=', mission.mission_start_date),
                ('line_mission', '=', mission.line_mission.id),
                ('id', '!=', mission.id),
            ]
            nmissions = self.search_count(domain)
            if nmissions:
                raise exceptions.ValidationError('Vous ne pouvez pas avoir 2 missions qui se chevauchent le même jour!')

    class LineEmployee(models.Model):
        _name = 'line.employee.mission'
        _description = 'Lignes des employés pour les mission'

        line_mission = fields.Many2one('hr.employee.mission', string='Line mission Reference', required=True, ondelete='cascade', index=True, copy=False)
        employee_id = fields.Many2one('hr.employee', string='Employee', help="Employee sent on mission",
                                      required=True)
        job_id = fields.Many2one(related='employee_id.job_id', string='Fonction', help="Fonction employee", required=True)
        department_id = fields.Many2one(related='employee_id.department_id', string='Département',required=True)
<page name="Employés" string="Employés">
                                    <field name='line_mission'>
                                            <tree string='Employés' editable="top">
                                                <field name='employee_id'/>
                                                <field name='job_id'/>
                                                <field name='department_id'/>
                                            </tree>
                                    </field>
                            </page>
预期单身人士:线路、员工、任务(57、58、59)

在Py文件中:

    class HrMission(models.Model):
        _name = 'hr.employee.mission'
        _description = 'Mission object'
        _inherit = 'mail.thread'

        line_mission = fields.One2many('line.employee.mission','line_mission', string='Employee', help="Employee sent on mission", copy=True,auto_join=True)

    @api.multi
    @api.constrains('mission_start_date', 'mission_end_date')
    def _check_date(self):
        for mission in self:
            domain = [
                ('mission_start_date', '<=', mission.mission_end_date),
                ('mission_end_date', '>=', mission.mission_start_date),
                ('line_mission', '=', mission.line_mission.id),
                ('id', '!=', mission.id),
            ]
            nmissions = self.search_count(domain)
            if nmissions:
                raise exceptions.ValidationError('Vous ne pouvez pas avoir 2 missions qui se chevauchent le même jour!')

    class LineEmployee(models.Model):
        _name = 'line.employee.mission'
        _description = 'Lignes des employés pour les mission'

        line_mission = fields.Many2one('hr.employee.mission', string='Line mission Reference', required=True, ondelete='cascade', index=True, copy=False)
        employee_id = fields.Many2one('hr.employee', string='Employee', help="Employee sent on mission",
                                      required=True)
        job_id = fields.Many2one(related='employee_id.job_id', string='Fonction', help="Fonction employee", required=True)
        department_id = fields.Many2one(related='employee_id.department_id', string='Département',required=True)
<page name="Employés" string="Employés">
                                    <field name='line_mission'>
                                            <tree string='Employés' editable="top">
                                                <field name='employee_id'/>
                                                <field name='job_id'/>
                                                <field name='department_id'/>
                                            </tree>
                                    </field>
                            </page>
hr类任务(models.Model):
_name='hr.employee.mission'
_描述='任务对象'
_inherit='mail.thread'
line_mission=fields.One2many('line.employee.mission','line_mission',string='employee',help='employee sent on mission',copy=True,auto_join=True)
@api.multi
@api.约束(“任务开始日期”、“任务结束日期”)
定义检查日期(自我):
自我使命:
域=[
('mission_start_date','=',mission.mission_start_date),
('line_mission','=',mission.line_mission.id),
('id','!=',mission.id),
]
nmissions=self.search\u计数(域)
如果不同意:
引发异常。ValidationError(‘您可以在两次任务中进行验证!’
类别LineEmployee(models.Model):
_name='line.employee.mission'
_description=‘雇佣联盟’代表团
行任务=fields.manyOne('hr.employee.mission',string='line mission Reference',required=True,ondelete='cascade',index=True,copy=False)
employee\u id=fields.manyOne('hr.employee',string='employee',help='employee sent on mission',
必需=真)
job\u id=fields.manyOne(related='employee\u id.job\u id',string='fonaction',help='fonaction employee',required=True)
department\u id=fields.manyOne(related='employee\u id.department\u id',string='Départment',required=True)
在XML文件中:

    class HrMission(models.Model):
        _name = 'hr.employee.mission'
        _description = 'Mission object'
        _inherit = 'mail.thread'

        line_mission = fields.One2many('line.employee.mission','line_mission', string='Employee', help="Employee sent on mission", copy=True,auto_join=True)

    @api.multi
    @api.constrains('mission_start_date', 'mission_end_date')
    def _check_date(self):
        for mission in self:
            domain = [
                ('mission_start_date', '<=', mission.mission_end_date),
                ('mission_end_date', '>=', mission.mission_start_date),
                ('line_mission', '=', mission.line_mission.id),
                ('id', '!=', mission.id),
            ]
            nmissions = self.search_count(domain)
            if nmissions:
                raise exceptions.ValidationError('Vous ne pouvez pas avoir 2 missions qui se chevauchent le même jour!')

    class LineEmployee(models.Model):
        _name = 'line.employee.mission'
        _description = 'Lignes des employés pour les mission'

        line_mission = fields.Many2one('hr.employee.mission', string='Line mission Reference', required=True, ondelete='cascade', index=True, copy=False)
        employee_id = fields.Many2one('hr.employee', string='Employee', help="Employee sent on mission",
                                      required=True)
        job_id = fields.Many2one(related='employee_id.job_id', string='Fonction', help="Fonction employee", required=True)
        department_id = fields.Many2one(related='employee_id.department_id', string='Département',required=True)
<page name="Employés" string="Employés">
                                    <field name='line_mission'>
                                            <tree string='Employés' editable="top">
                                                <field name='employee_id'/>
                                                <field name='job_id'/>
                                                <field name='department_id'/>
                                            </tree>
                                    </field>
                            </page>

您尚未发布完整的错误消息,但查看您的代码,我认为这会触发错误:

 ('line_mission', '=', mission.line_mission.id),
您已将line_任务定义为One2many,因此,每当One2many记录集有多个条目时,访问“.id”将显示此单例错误

我想你需要知道是否还有其他hr.employee.mission记录的日期重叠,以及员工在哪一行

您可以使用带有联接的单个SQL查询,但如果在搜索中执行此操作,我可能会执行两次搜索,以防止Odoo构建一个潜在的大型父记录列表

# find any other missions that overlap our dates.
overlapping_missions = self.search([
    ('mission_start_date', '<=', mission.mission_end_date),
    ('mission_end_date', '>=', mission.mission_start_date),
    ('id', '!=', mission.id)])
if overlapping_missions:
    # Are there any lines for these overlapping missions that have any 
    # of the same employees as we have for this mission (note list comprehension).
    duplicates = self.env['line.employee.mission'].search_count([
        ('line_mission', 'in', overlapping_parents.ids),
        ('employee_id', 'in', [l.employee_id.id for l in mission.line_mission])
    ])
    if duplicates:
       raise ValidationError(...)
#查找与我们日期重叠的任何其他任务。
重叠的任务=自我搜索([
('mission_start_date','=',mission.mission_start_date),
('id','!=',mission.id)])
如果任务重叠:
#这些重叠的任务有没有线路,有没有线路
#与本次任务相同的员工(注意列表理解)。
重复项=self.env['line.employee.mission'].search\u count([
('line_mission'、'in',重叠的_parents.id),
('employee_id'、'in'、[l.employee_id.id代表l in mission.line_mission])
])
如果重复:
引发ValidationError(…)

我在家,所以没有测试这个,但应该大致正确。

谢谢你这么多朋友^^,但是什么是
重叠的父母。ids
?在Odoo中,搜索总是返回一个记录集,尽管它可能是一个空记录集。ID只是记录ID的列表。这是一个很有用的快捷方式,可以让您不必进行列表理解来获取记录集中记录的id。