Il faut surcharger la fonction _run_scheduler_tasks() qui se trouve dans stock/models/stock_rule.py pour permettre à cette fonction d'envoyer un mail.
Après, il faut créer les règles d'approvisionnement dans Inventaire > Configuration > Règles de réapprovisionnement. Ainsi, lorsque le cron job Approvisionnement : lancer le planificateur (qui a pour nom technique stock.ir_cron_scheduler_action) va s'exécuter, le mail sera envoyé.
Il faut noter que les règles de réapprovisionnement permettent de définir les quantités minimales et maximales des produits.
Voici un exemple pour faire ce que j'ai expliqué
def send_email(self):
mail_values = {
'auto_delete': True, # ou False si tu ne veux pas supprimer le mail dans Odoo
'body_html': body_html, # le contenu du mail
'author_id': partner_id.id, # l'ID du partenaire qui envoie le mail
'email_from': 'addr@mail.cc', # Email qui envoie le mail
'email_to': 'rec@mai.l', # Email qui reçoit le mail
'subject': 'Sujet du mail',
}
self.env['mail.mail'].sudo().create(mail_values)
@api.model
def _run_scheduler_tasks(self, use_new_cursor=False, company_id=False):
super(NomDeTaClasse, self)._run_scheduler_tasks(
use_new_cursor=use_new_cursor,
company_id=company_id
)
self.send_email()
Tu peux aussi utiliser ce module https://apps.odoo.com/apps/modules/14.0/bsi_product_minimum_qty_alert/ , mais je pense que la première méthode est plus appropriée