如何根据表单上的给定日期自动更改状态/状态,我尝试了此代码,但无效:
@api.multi
def action_confirm(self):
for rec in self:
if rec.mission_start_date:
td = datetime.now().strftime("%Y-%m-%d")
today = datetime.strptime(td, "%Y-%m-%d")
start = datetime.strptime(rec.mission_start_date, "%Y-%m-%d")
if start == today:
res = self.write({'state': 'progress'})
return res
答案 0 :(得分:1)
为此,您可以使用计划的操作。计划的操作在您设置的时间间隔内运行。 请在此处阅读有关计划的操作的信息:https://www.odoo.yenthevg.com/creating-automated-actions-in-odoo/
答案 1 :(得分:1)
您需要定义计划的操作并将interval_type
设置为days
:
1-创建一个新的计划动作:
<record id="ir_cron_scheduler_missions" model="ir.cron">
<field name="name">Mission scheduler</field>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">1</field>
<field name="interval_type">days</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall"/>
<field eval="'mission.mission'" name="model"/>
<field eval="'process_scheduler_queue'" name="function"/>
</record>
2-在计划的操作模型中定义功能:
class Mission(models.Model):
_name = 'mission.mission'
@api.model
def process_scheduler_queue(self):
for rec in self.search([('state', '!=', 'progress')]):
if rec.mission_start_date and rec.mission_start_date == fields.Date.today():
rec.write({'state': 'progress'})