在特定时间触发 Odoo 的预定操作(例如,每天凌晨 1 点至早上 6 点)

Trigger Odoo's Scheduled Action During Specific Hours (e.g. everyday every 1AM to 6AM)

我想要每天凌晨 1 点到 6 点执行一个接一个的预定操作。

我怎样才能做到这一点?

因为我只有"Execute Every"和"Next Execution Date"两个菜单,所以我不知道具体的营业时间范围如何。我正在使用 Odoo 11。

您可以更频繁地使用计划 运行 的包装器操作。

def action_function():
    # you will need to store a value (is_running: True|False) in the database, maybe in ir.config_parameter
    if current_hour not in (1, 2, 3, 4, 5):
        return None
    elif is_running:
        return None
    else:
        # Mark that the action is in process, have to commit to the database
        is_running = True
        self.env.cr.commit()
        # Then call your actual action function 
        do_some_real_thing()
        # Mark that the action is done
        is_running = False

基本上,以下步骤的包装器操作会每隔 10 分钟频繁重复一次。

  • 检查时间,如果不是在凌晨 1 点到 6 点之间,则什么都不做;
  • 检查动作是否已经运行ning,如果是,什么都不做;
  • 否则,将操作标记为进行中,并执行实际操作, 完成后,将操作标记为完成。