OpenERP 6.1 : supprimer l'envoi de mail automatique

Par défaut une instance d'OpenERP 6.1 envoie des mails automatiques à la validation des factures, des ventes, et des achats. Ca peut se tranformer en piège assez amusant... ou pas. Il suffit de faire des tests sur une base de données restaurée contenant de vraies données d'un client, pour que le client en question finisse par venir aux nouvelles en demandant pourquoi il reçoit autant de devis et de factures alors qu'il n'a rien demandé :-)

Il y a plusieurs façons de désactiver ça, par exemple faire en sorte qu'il n'y ait pas de serveur de courrier sortant configuré (menu Configuration → configuration → courriels → serveurs de courrier sortants), ou encore supprimer les modèles de mails en question (menu Configuration → configuration → courriels → modèles).

Mais ces deux méthodes sont un peu trop radicales, et il peut être utile de permettre l'envoi de mail ponctuellement. La vraie bonne façon consiste à cocher « opt-out » dans l'onglet « Ventes et achats » du partenaire. Et pour désactiver tous ces mails de manière permanente, il faut supprimer l'action du serveur dans les activités de workflow suivantes dans le menu Configuration → paramétrage → Workflows → Workflows :

  • account.invoice.basic → open
  • sale.order.basic → router
  • Purchase Order Basic Workflow → router

Pour faire ça de manière permanente dans un module de configuration client, il suffit d'inclure un petit fichier XML, à ajouter dans __openerp__.py :

<?xml version="1.0"?>
<openerp>
  <data>
    <!-- prevent from sending email when validating SO, PO and invoices -->
    <record id="purchase.act_confirmed" model="workflow.activity">
      <field name="action_id"/>
    </record>
    <record id="account.act_open" model="workflow.activity">
      <field name="action_id"/>
    </record>
    <record id="sale.act_wait_ship" model="workflow.activity">
      <field name="action_id"/>
    </record>
  </data>
</openerp>