from odoo import models, fields, api, tools, _
from datetime import datetime, timedelta
class SaleOrder(models.Model):
_inherit = 'sale.order'
def autocancel_draft_sent_orders(self):
limit_date = datetime.now()
draft_sales = self.env['sale.order'].search( [('state', 'in', ['draft', 'sent']),
('validity_date' , ' =', limit_date)])
for sale in draft_sales:
sale.state = 'cancel'
Please try to use write method instead of give value directly.
def autocancel_draft_sent_orders(self):
limit_date = datetime.now()
draft_sales = self.env['sale.order'].search( [('state', '=', ['draft', 'sent']),
('validity_date' , '<=', limit_date)])
for sale in draft_sales:
sale.action_cancel
use code but not working