Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 3.x 如何通过修改考勤申请更新考勤字段_Python 3.x_Odoo 11 - Fatal编程技术网

Python 3.x 如何通过修改考勤申请更新考勤字段

Python 3.x 如何通过修改考勤申请更新考勤字段,python-3.x,odoo-11,Python 3.x,Odoo 11,我用的是奥多11。我正在处理考勤模块,我想创建一个由经理批准的考勤修改请求(创建新的考勤或修改已存在的考勤),并自动更新考勤。问题是,当我按下Approve时,我的请求被批准,但出席人数没有更新(在hr.Attention模型中)。有什么好主意吗?? 这是我的密码 正则化 class Regular(models.Model): _name = 'attendance.regular' _rec_name = 'employee' _description = 'Approval Reques

我用的是奥多11。我正在处理考勤模块,我想创建一个由经理批准的考勤修改请求(创建新的考勤或修改已存在的考勤),并自动更新考勤。问题是,当我按下Approve时,我的请求被批准,但出席人数没有更新(在hr.Attention模型中)。有什么好主意吗?? 这是我的密码

正则化

class Regular(models.Model):

_name = 'attendance.regular'
_rec_name = 'employee'
_description = 'Approval Request'
_inherit = ['mail.thread', 'mail.activity.mixin']

def _get_employee_id(self):
    employee_rec = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
    return employee_rec.id

reg_category = fields.Many2one('reg.categories',
                                string='Regularization Category', required=True)
from_date = fields.Datetime(string='Check in', required=False)
to_date = fields.Datetime(string='Check out', required=False)
reg_reason = fields.Text(string='Reason', required=False)
employee = fields.Many2one('hr.employee', string="Employee", default=_get_employee_id, readonly=False, required=True)
state_select = fields.Selection([('draft', 'Draft'), ('requested', 'Requested'), ('reject', 'Rejected'),
                                 ('approved', 'Approved')
                                 ], default='draft', track_visibility='onchange', string='State')
attendance_id = fields.Many2one('hr.attendance', string='Attendance')

@api.multi
def submit_reg(self):
    self.ensure_one()
    self.sudo().write({
        'state_select': 'requested'
    })
    return
   @api.multi
   def regular_approval(self):
    for record in self:
              if self.reg_category.type ==" Check in":
                    record.attendance_id.check_in = record.from_date
                    record.attendance_id.employee_id = record.employee.id
              elif self.reg_category.type ==" Check out":
                  record.attendance_id.check_out = record.to_date
                  record.attendance_id.employee_id = record.employee.id

    return  self.write({ 'state_select': 'approved' })
正则化.xml

  <?xml version="1.0" encoding="utf-8"?>
  <odoo>
   <data>
   <record id="attendance_regular11" model="ir.ui.view">
        <field name="name">attend.regular</field>
        <field name="model">attendance.regular</field>
        <field name="arch" type="xml">
           <form string="Regularization">
               <header>
                       <button name="submit_reg" string="Submit" type="object" class="btn-primary"
                       attrs="{'invisible': [('state_select','not in','draft')]}"/>
                       <button name="regular_approval" type="object" string="Approve" class="oe_highlight"
                               groups="hr_attendance.group_hr_attendance_manager"
                       attrs="{'invisible': [('state_select','not in','requested')]}"/>
                       <button name="regular_rejection" type="object" string="Reject" class="oe_highlight"
                               groups="hr_attendance.group_hr_attendance_manager"
                       attrs="{'invisible': [('state_select','not in','requested')]}"/>
                       <field name="state_select" widget="statusbar" statusbar_visible="draft,requested,approved"/>
               </header>
               <sheet>
                   <group col="4" colspan="4">
                       <field name="reg_category"/>
                       <field name="from_date" attrs="{'invisible':[('reg_category', '=',5)]}" />
                       <field name="reg_reason"/>
                       <field name="to_date" attrs="{'invisible':[('reg_category', '=',4)]}"/>
                       <field name="employee"/>

                   </group>
               </sheet>
             <field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
                    <field name="activity_ids" widget="mail_activity"/>
                    <field name="message_ids" widget="mail_thread"/>
           </form>
        </field>
    </record>

定期参加
出席率

我想问题在于您选择的字段类型
字段。很多字段都是one
。 它应该是m2m型的。 我给你举了一个类似的例子


课程表
开放学院课程
这是笔记本电脑的一个例子
session.form
openacademy.session
课堂课程(models.Model):
_name='openacademy.course'
name=fields.Char(string=“Title”,required=True)
description=字段。Text()
responsible\u id=fields.manyOne('res.users',ondelete='set null',string='responsible',index=True)
session\u id=fields.One2many('openacademy.session','course\u id',string=“Sessions”)
# 去改寫行动的复制品
@api.multi
def副本(自身,默认值=无):
default=dict(默认值或{})
复制的_count=self.search_count([('name','=like',u“拷贝{}%.”格式(self.name)))
如果未复制\u计数:
new_name=u“拷贝{}”。格式(self.name)
其他:
new_name=u“复制{}({})”格式(self.name,复制的_计数)
默认值['name']=新名称
返回超级(课程,自我)。复制(默认)
#解除链接是 改寫行动的删除
_sql_约束=[
(“名称、说明、检查”,
'检查(名称!=说明)',
“课程名称不应为描述”),
('name_unique',
“唯一(名称)”,
“课程名称必须是唯一的”),
]
课堂会话(models.Model):
_name='openacademy.session'
name=fields.Char(必需=True)
开始日期=fields.date(默认值=fields.date.today)
持续时间=字段。浮点(数字=(6,2),help=“持续时间(以天为单位)”
席位=字段。整数(字符串=“席位数”)
active=fields.Boolean(默认值=True)
color=fields.Integer()
讲师id=fields.manyOne('res.partner',string=“讲师”,domain=['|',('讲师','=',True),('category\u id.name','ilike','Teacher”))
课程id=fields.manyOne('openacademy.course',ondelete='cascade',string='course',required=True)
attendee_id=fields.Many2many('res.partner',string=“Attendes”)
taked_seats=fields.Float(string=“taked seats”,compute=''taked_seats')
结束日期=字段.date(string=“结束日期”,store=True,compute=''获取结束日期',inverse=''设置结束日期')
小时数=字段。浮点(字符串=“持续时间(小时)”,计算=“”“获取小时数”,反转=“”“设置小时数”)
与会者人数=fields.Integer(string=“attendees count”,compute=''获取与会者人数,store=True)
状态=字段。选择([('draft','draft'),('confirmed','confirmed'),('done','done'),],默认值为'draft')
@api.multi
def行动计划草案(自我):
self.state='draft'
@api.multi
def动作确认(自我):
self.state=‘已确认’
@api.multi
def操作完成(自我):
self.state='done'
@api.视情况而定(“座位”、“与会者ID”)
def_已就座(自行):
对于r本身:
如果不是右座:
r、 就座率=0.0
其他:
r、 已就座=100.0*len(r.与会者ID)/r.座位
@api.dependens(‘与会者ID’)
def(获取)出席人数(自我):
对于r本身:
r、 与会者人数=len(r.与会者ID)
@api.dependens(‘持续时间’)
定义获取小时数(自我):
对于r本身:
r、 小时=持续时间*24
定义设置小时数(自):
对于r本身:
r、 持续时间=r.h/24
@api.dependens('开始日期','持续时间')
定义获取结束日期(自我):
对于r本身:
如果不是(r.开始日期和r.持续时间):
r、 结束日期=r.开始日期
持续
开始=字段.Datetime.from\u字符串(r.start\u日期)
持续时间=时间增量(天数=持续时间,秒=-1)
r、 结束日期=开始+持续时间
定义设置结束日期(自):
对于r本身:
如果不是(r.开始日期和r.结束日期):
持续
开始日期=fiel