【问题标题】:Odoo 13' solution to solve about the employee forget to checkout in odoo attendanceOdoo 13'解决员工在odoo考勤中忘记结账的解决方案
【发布时间】:2019-10-30 08:33:33
【问题描述】:

我想问一下考勤odoo的自动结账,因为员工经常忘记结账。因此,我想自动标记他们的结帐。

代码如何,我可以在哪里插入此代码?

谢谢!

【问题讨论】:

    标签: python odoo time-and-attendance


    【解决方案1】:

    删除行尾的“:”。

    records = self.search([('check_out', '=', False), ('check_in', '!=', False)])
    

    【讨论】:

    • 删除行尾的“:”后收到错误消息:“model.cron_set_attedance_checkout() 中的禁止操作码,\nclass hr_attendace(models.Model):\n\ n _inherit = 'hr.attendance'\n\n @api.model\n\n def cron_set_attedance_checkout(self):\n records = self.search([('check_out', '=', False), ('check_in ', '!=', False)])\n\n 对于记录中的记录:\n\n record.check_out = record.check_in": LOAD_BUILD_CLASS
    • 感谢您的支持。你说得对!代码末尾必须去掉“:”。它现在正在工作!
    【解决方案2】:

    将其置于签入按钮方法中。

    self.expires_in = int(round(time.time() * 1000))
    

    激活一个间隔为 1 分钟的调度程序。检查以下几行。

    expires_in = datetime.fromtimestamp(int(self.expires_in) / 1e3)
    expires_in = expires_in + timedelta(seconds=32400) //9 hours seconds
    nowDateTime = datetime.now()
    if nowDateTime > expires_in:
       checkout_button_method()
    

    让我稍微解释一下.. 上面的大多数行执行一个存储签入时间。调度器运行后会在签入后增加 9 小时。如果时间大于 9 小时,它会自动调用 checkout 方法并执行结帐按钮任务。

    【讨论】:

    • 嗨,亚当,感谢您的支持。你的意思是把你的代码放在 Technical --> Automation --> Scheduled Actions ......或者签入按钮方法在哪里?请指导更清楚!
    • @Khanh 听着,首先制作一个调度程序,每 1 分钟运行一个方法。在完全用于调度程序的方法中放置该代码。在此方法中,如果条件为真,它将调用结帐按钮方法。简单的。对于这种情况,您必须在签入时将时间安全地放在一个变量中,该变量是 'expires_in' 。因为在该文件的帮助下,您将比较签入时间和当前时间以及 IF 条件。
    【解决方案3】:

    @Adam ,我已按照您的指示进行操作。

    但我收到了错误:

    【讨论】:

      【解决方案4】:

      在上次更新中,您必须删除以 // 开头的评论 然后保存它工作正常。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 2016-06-07
      • 2020-06-26
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多