【问题标题】:Odoo 12 : How to prevent default field method to be executedOdoo 12:如何防止执行默认字段方法
【发布时间】:2020-09-02 05:50:22
【问题描述】:

我安排了一个每个月 1 日执行的 cron,目的是根据所有员工的标签分配休假。这是我的代码示例:
for leave in leave_type_ids:
    for employee_tag in employee_tag_ids:
        values = {
            'name': 'Allocation mensuelle %s %s' % (now.strftime('%B'), now.strftime('%Y')),
            'holiday_status_id': leave.id,
            'number_of_days': employee_tag.allocation,
            'holiday_type': 'category',
            'category_id': employee_tag.id,
        }
        try:
            self.create(values).action_approve()
        except Exception as e:
            _logger.critical(e)

我想指出 self 是 'hr.leave.allocation' 的实例。
问题是当我创建记录时,字段employee_id 会自动填充用户/员工OdooBot(在cron 中执行程序的人),这还不是全部,员工OdooBot 被分配了一个叶子。
这种行为是由于 odoo 原生模块中的那些代码造成的:

    def _default_employee(self):
        return self.env.context.get('default_employee_id') or self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
    employee_id = fields.Many2one(
    'hr.employee', string='Employee', index=True, readonly=True,
    states={'draft': [('readonly', False)], 'confirm': [('readonly', False)]}, default=_default_employee, track_visibility='onchange')

所以我的问题是当它是 cron 时如何防止这种情况,并在它处于表单视图时将其设置为正常? 此处的“employé”字段应为空(如下图所示),因为它是按标签分配的。

【问题讨论】:

  • 您不应该通过循环访问每个员工来创建分配吗?
  • @CZoellner odoo 通过使用每个标签/类别的分配来做同样的事情。通过标签更方便,如果有错误,我们可以一键修改/取消/...
  • 你有Odoo的一些示例代码吗?我不太了解 Odoo 代码中的人力资源问题:D
  • @CZoellner 你可以在这个文件 addons/hr_holidays/models/hr_leave_allocation.py 中检查这个方法“_action_validate_create_childs”
  • @CZoellner 如何设置 'employee_id': False inside values?

标签: python-3.x odoo


【解决方案1】:

您必须遍历hr.employee,因为您可以执行以下任一操作:

self.with_context({'default_employee_id': employee.id}).create(...)

self.sudo(employee.id).create(...)

【讨论】:

  • 员工分配很难处理,所以我决定使用标签。例如,我可以将上下文“default_employee_id”设置为无吗?
  • 如何设置 'employee_id': False inside values?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-09
  • 2012-05-08
  • 1970-01-01
  • 2018-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多