Envoi d'un rapport par email : adresse mail destinataire et pièce jointe

43 views
Skip to first unread message

Fabien Castarède

unread,
Jul 6, 2016, 1:58:04 PM7/6/16
to tryton-fr
Est-il possible et comment faire pour envoyer un rapport (ex. rapport vente) au tiers associé au document par email en utilisant le bouton "Rapport par email" du client Tryton ? Plus précisément, pour que le nouveau message créé dans mon client mail ait en pièce jointe le document et comme adresse destinataire l'email du tiers définis par défaut ?

J'ai essayé de définir le champ "Email" du rapport (via "Administration > UI > Actions > Rapports > Vente") avec la valeur {"to":Eval("party.email")} mais Tryton me renvoie une erreur concernant le champ "Email" lorsque j'essaye d'enregistrer la modification. Il semblerait qu'il ne soit pas possible d'utiliser un champ relation.

Donc j'ai voulu d'abord essayé quelque chose de plus simple afin de valider le format de ma valeur et notamment l'expression PYSON : {"subject":Eval("id")}. J'ai toujours une erreur : "Définition de mail incorrecte sur le rapport "Vente". L'expression PYSON ne semble pas fonctionner. Est-ce bien avec une expression PYSON qu'on définit une valeur dynamique dans ce champ et quelle forme doit-elle avoir ?

J'ai modifié le code du module afin de logger l'exception et avoir plus d'indices, mais je ne vois pas...

{"params": [[229], {"email": "{\"subject\":Eval(\"id\")}"}, {"locale": {"date": "%d.%m.%Y", "thousands_sep": " ", "grouping": [3, 0], "decimal_point": ","}, "_timestamp": {"ir.action.keyword,208": "1466174688.16162", "ir.action.report,229": "1466521372.54229"}, "language": "fr_FR", "groups": [11, 1, 5, 2, 6, 7, 3, 13, 4, 12, 14, 8, 9, 10], "date_format": "%d.%m.%Y", "employee": null, "language_direction": "ltr", "company": 1, "company.rec_name": "LE MARCHAND DE SABLE"}], "id": 1, "method": "model.ir.action.report.write"}
[["model", "sale.sale"], ["name", "Sale"], ["report", "custom_reports/sale.odt"], ["report_name", "sale.sale"], ["template_extension", "odt"]]
{"subject":Eval("id")}
1532 139973819180800 [2016-07-06 17:53:33,947] ERROR root Expecting value: line 1 column 12 (char 11)
Traceback (most recent call last):
  File "/home/fabien/DEV/www/wsgi/lmds/lib/python2.7/site-packages/trytond/ir/action.py", line 585, in check_email
    value = PYSONDecoder().decode(report.email)
  File "/home/fabien/DEV/www/wsgi/lmds/lib/python2.7/site-packages/simplejson/decoder.py", line 370, in decode
    obj, end = self.raw_decode(s)
  File "/home/fabien/DEV/www/wsgi/lmds/lib/python2.7/site-packages/simplejson/decoder.py", line 401, in raw_decode
JSONDecodeError: Expecting value: line 1 column 12 (char 11)

Quelqu'un aurait-il une idée ? Merci.

Cédric Krier

unread,
Jul 6, 2016, 6:25:04 PM7/6/16
to tryton-fr
On 2016-07-06 10:58, Fabien Castarède wrote:
> Est-il possible et comment faire pour envoyer un rapport (ex. rapport
> vente) au tiers associé au document par email en utilisant le bouton
> "Rapport par email" du client Tryton ? Plus précisément, pour que le
> nouveau message créé dans mon client mail ait en pièce jointe le document
> et comme adresse destinataire l'email du tiers définis par défaut ?
>
> J'ai essayé de définir le champ "Email" du rapport (via "Administration >
> UI > Actions > Rapports > Vente") avec la valeur {"to":Eval("party.email")}
> mais Tryton me renvoie une erreur concernant le champ "Email" lorsque
> j'essaye d'enregistrer la modification. Il semblerait qu'il ne soit pas
> possible d'utiliser un champ relation.
>
> Donc j'ai voulu d'abord essayé quelque chose de plus simple afin de valider
> le format de ma valeur et notamment l'expression PYSON :
> {"subject":Eval("id")}. J'ai toujours une erreur : "Définition de mail
> incorrecte sur le rapport "Vente". L'expression PYSON ne semble pas
> fonctionner. Est-ce bien avec une expression PYSON qu'on définit une valeur
> dynamique dans ce champ et quelle forme doit-elle avoir ?

En fait, ça doit être un PySON encodé.
Depuis l'interface, c'est un peu fastidieux mais il y a une proposition
pour un widget: https://bugs.tryton.org/issue4631
Sinon depuis XML il suffit d'ajouter l'attribut pyson="1".
Pour info, l'évaluation a été supprimée pour des raisons de sécurité
voir https://bugs.tryton.org/issue4416

--
Cédric Krier - B2CK SPRL
Email/Jabber: cedric...@b2ck.com
Tel: +32 472 54 46 59
Website: http://www.b2ck.com/

Fabien Castarède

unread,
Jul 7, 2016, 5:33:10 AM7/7/16
to tryton-fr


Le jeudi 7 juillet 2016 00:25:04 UTC+2, Cédric Krier a écrit :
On 2016-07-06 10:58, Fabien Castarède wrote:
> Est-il possible et comment faire pour envoyer un rapport (ex. rapport
> vente) au tiers associé au document par email en utilisant le bouton
> "Rapport par email" du client Tryton ? Plus précisément, pour que le
> nouveau message créé dans mon client mail ait en pièce jointe le document
> et comme adresse destinataire l'email du tiers définis par défaut ?
>
> J'ai essayé de définir le champ "Email" du rapport (via "Administration >
> UI > Actions > Rapports > Vente") avec la valeur {"to":Eval("party.email")}
> mais Tryton me renvoie une erreur concernant le champ "Email" lorsque
> j'essaye d'enregistrer la modification. Il semblerait qu'il ne soit pas
> possible d'utiliser un champ relation.
>
> Donc j'ai voulu d'abord essayé quelque chose de plus simple afin de valider
> le format de ma valeur et notamment l'expression PYSON :
> {"subject":Eval("id")}. J'ai toujours une erreur : "Définition de mail
> incorrecte sur le rapport "Vente". L'expression PYSON ne semble pas
> fonctionner. Est-ce bien avec une expression PYSON qu'on définit une valeur
> dynamique dans ce champ et quelle forme doit-elle avoir ?

En fait, ça doit être un PySON encodé.
Depuis l'interface, c'est un peu fastidieux mais il y a une proposition
pour un widget: https://bugs.tryton.org/issue4631
Sinon depuis XML il suffit d'ajouter l'attribut pyson="1".


Je ne suis pas sûr de comprendre. J'ai un module qui supplante quelques rapports, notamment celui d'une vente. Dans mon XML je déclare mon rapport de la manière suivante :

<record model="ir.action.report" id="report_sale_custom">
    <field name="name">Sale</field>
    <field name="report_name">sale.sale</field>
    <field name="model">sale.sale</field>
    <field name="report">custom_reports/sale.odt</field>
    <field name="template_extension">odt</field>
</record>

Est-ce que je dois ajouter une ligne pour définir le champ email comme cela ?

<record model="ir.action.report" id="report_sale_custom">
    <field name="name">Sale</field>
    <field name="report_name">sale.sale</field>
    <field name="model">sale.sale</field>
    <field name="report">custom_reports/sale.odt</field>
    <field name="template_extension">odt</field>
    <field name="email" pyson="1">{"subject":Eval("id")}</field>
</record>

Pour l'instant j'obtiens toujours la même erreur lorsque je met à jour le module en ligne de commande.

Cédric Krier

unread,
Jul 7, 2016, 5:50:03 AM7/7/16
to tryton-fr
On 2016-07-07 02:33, Fabien Castarède wrote:
> Je ne suis pas sûr de comprendre. J'ai un module qui supplante quelques
> rapports, notamment celui d'une vente. Dans mon XML je déclare mon rapport
> de la manière suivante :
>
> <record model="ir.action.report" id="report_sale_custom">
> <field name="name">Sale</field>
> <field name="report_name">sale.sale</field>
> <field name="model">sale.sale</field>
> <field name="report">custom_reports/sale.odt</field>
> <field name="template_extension">odt</field>
> </record>
>
> Est-ce que je dois ajouter une ligne pour définir le champ email comme cela
> ?
>
> <record model="ir.action.report" id="report_sale_custom">
> <field name="name">Sale</field>
> <field name="report_name">sale.sale</field>
> <field name="model">sale.sale</field>
> <field name="report">custom_reports/sale.odt</field>
> <field name="template_extension">odt</field>
> <field name="email" pyson="1">{"subject":Eval("id")}</field>

Il faut que ce soit:

<field name="email" eval="{'subject': Eval('id')}" pyson="1"/>

> </record>

L'expression doit d'abord être évaluée avant d'être encodée un PySON.

Fabien Castarède

unread,
Jul 7, 2016, 6:18:04 AM7/7/16
to tryt...@googlegroups.com
Ok, j’ai compris, je viens de tester ça fonctionne. Merci beaucoup.
Reply all
Reply to author
Forward
0 new messages