211 lines
7.8 KiB
ReStructuredText
211 lines
7.8 KiB
ReStructuredText
==================
|
|
Correo electrónico
|
|
==================
|
|
|
|
.. inheritref:: electronic_mail/electronic_mail:paragraph:introduccion
|
|
|
|
**Tryton** nos permite gestionar el envío de correos electrónicos a través
|
|
del sistema para una gestión más eficaz de nuestra correspondencia electrónica.
|
|
Podemos llevar así un registro más eficiente de nuestras actividades, evitando posibles
|
|
pérdidas de información que se pueden producir cuando la mensajería electrónica
|
|
no está integrada en nuestro ERP.
|
|
|
|
.. inheritref:: electronic_mail/electronic_mail:section:configuracion
|
|
|
|
Configuración
|
|
=============
|
|
|
|
Debemos tener configurado como mínimo un servidor SMTP para que se realicen
|
|
los envíos correctamente. Para configurar un servidor SMTP debemos ir a la opción
|
|
*Administración* > *SMTP* > *Servidores*.
|
|
|
|
Allí deberemos introducir un nombre y los datos de conexión al servidor SMTP.
|
|
Por favor, contacte con su administrador del correo electrónico en caso de
|
|
desconocer los datos.
|
|
|
|
Una vez introducida esta información podemos verificar que la conexión se
|
|
realiza correctamente utilizando el botón *Test conexión*.
|
|
|
|
Si marcamos el campo *Por defecto*, este servidor se utilizará para todos los
|
|
envíos en los que no se haya forzado ningún envío.
|
|
|
|
Si queremos forzar que todos los correos desde la dirección de correo
|
|
introducida en el campo *Correo electrónico* debemos marcar la opción *Usar
|
|
email*.
|
|
|
|
===================
|
|
Plantillas de correo
|
|
====================
|
|
|
|
Las plantillas de correo electrónico nos permiten crear una acción para enviar
|
|
un correo electrónico a partir de los registros de algún modelo. Además también
|
|
podemos asociarlas con un disparador para que el sistema envíe automáticamente
|
|
un correo electrónico cuando se dé el disparador. Por ejemplo, esto nos puede
|
|
ser útil para enviar un correo electrónico al cliente cuando se realice el
|
|
envío de uno de sus albaranes.
|
|
|
|
.. inheritref:: electronic_mail/electronic_mail:section:plantillas
|
|
|
|
Plantillas
|
|
==========
|
|
|
|
En Tryton podemos crear plantillas de correo electrónico que permitan enviar
|
|
mensajes predefinidos de forma manual desde una pantalla en concreto (por
|
|
ejemplo, desde facturas o pedidos), así como automatizar totalmente el envío
|
|
(por ejemplo, mandar la factura por correo electrónico cuando se confirme el
|
|
documento de factura). Para los tags se usan expresiones Genshi_
|
|
(**recomendable**), Jinja2_ (si se encuentra instalado) o Python. Consulte el
|
|
apartado plantillas para ver ejemplos.
|
|
|
|
.. figure:: images/plantilla.png
|
|
|
|
.. _Genshi: http://genshi.edgewall.org/wiki/Documentation/0.4.x/text-templates.html
|
|
|
|
.. _Jinja2: http://jinja.pocoo.org/docs/
|
|
|
|
Como podemos observar hemos utilizado las expresiones $(record.nombre_campo)
|
|
para indicar que queremos reemplazar estas expresiones por los valores del
|
|
registro desde el que estamos creando el correo electrónico.
|
|
|
|
Además, como hemos marcado la opción *Crear acción*, en el menú de albaranes de
|
|
clientes tendremos disponible una nueva acción llamada *Envío albarán*, que
|
|
podremos utilizar para enviar esta plantilla al cliente.
|
|
|
|
.. Si clicamos en esta opción se generará la siguiente pantalla:
|
|
Imagen pantalla enviar correo
|
|
|
|
Podremos observar como nos modifica las expresiones con los valores del
|
|
registro seleccionado. En caso de querer personalizar el texto podemos
|
|
modificar los campos antes de realizar el envío.
|
|
|
|
.. inheritref:: electronic_mail/electronic_mail:section:envio
|
|
|
|
Envío
|
|
=====
|
|
|
|
.. inheritref:: electronic_mail/electronic_mail:section:disparadores
|
|
|
|
Disparadores
|
|
------------
|
|
|
|
En las plantillas deberá especificar los disparadores para que se envie el
|
|
correo electrònico. Puede añadir a la plantilla varios disparadores con sus
|
|
condiciones.
|
|
|
|
El correo electrónico sólo se enviará en caso que la condición del disparador
|
|
sea cierta. Se puede utilizar la palabra clave `self` para hacer referencia
|
|
al registro actual.
|
|
|
|
Los disparadores se pueden evaluar en alguna de las siguientes condiciones:
|
|
|
|
- *Al momento*: Se comprobará cada 5 minutos si algún registro del modelo
|
|
cumple con la condición dada.
|
|
- *Al crear*: Se comprovará la condición para cada registro que se cree.
|
|
- *Al modificar*: Se comprobara que el registro no cumpla la condición
|
|
antes de modificar y si lo cumpla despues de la modificación del mismo.
|
|
De esa forma solo se obtendran los registros en que los canvios haya
|
|
provocado que la condición cambie de Falso a Verdadero.
|
|
- *Al eliminar*: Se evaluará la condición antes de eliminar los registros.
|
|
|
|
.. note:: Si se marca la opción *Al momento* no se podrá marcar ninguna de las
|
|
otras condiciones y viceversa.
|
|
|
|
Ejemplos
|
|
~~~~~~~~
|
|
|
|
Se quiere enviar la plantilla cada vez que se cree un nuevo registro del modelo::
|
|
|
|
Crearemos un disparador marcando la opción `Al crear` y pondremos como
|
|
condicion `True`.
|
|
|
|
Se quiere enviar la plantilla cada vez que se elimine un registro del modelo::
|
|
|
|
Crearemos un disparador marcando la opción `Al eliminar` y pondremos como
|
|
condicion `True`.
|
|
|
|
Se quiere enviar la plantilla cada vez que una venta se passe al estado
|
|
`Confirmado`::
|
|
|
|
En una plantilla relacionado con el modelo de `Ventas` crearemos un
|
|
disparador marcando la opción `Al modificar` y pondremos como condicion
|
|
`self.state == 'confirmed'`.
|
|
|
|
Se quiere enviar la plantilla cada vez que se introduzca (creación o
|
|
modificación) una factura con importe superior a 10.000::
|
|
|
|
En una plantilla relacionado con el modelo de `Facturas` crearemos un
|
|
disparador marcando la opción `Al modificar` y la opción `Al crear`.
|
|
Pondremos cómo condicion `self.total_amount > Decimal('10.000')`.
|
|
|
|
.. inheritref:: electronic_mail/electronic_mail:section:informes
|
|
|
|
Informes
|
|
========
|
|
|
|
En la plantilla puede seleccionar los informes que se adjuntarán en el correo
|
|
electrónico.
|
|
|
|
Si no se especifica ningún nombre en el informe, el nombre del adjunto vendrá
|
|
definido por el nombre del modelo+extensión. Si deseamos personalizar los
|
|
nombres de los adjuntos, podemos editar el informe y añadir en el campo
|
|
**Nombre del informe** expresiones para personalizar el informe.
|
|
|
|
Por ejemplo en un pedido de venta podemos personalizar el informe con el nombre:
|
|
|
|
.. code::
|
|
|
|
empresa_pedido_${record.reference or record.sale_date}
|
|
|
|
.. important:: Si personalizamos el nombre del informe, este no debe contener la
|
|
extensión del fichero. En el momento de enviar el correo, se
|
|
añadirá la extensión según el tipo de fichero (MIMEType). Por
|
|
defecto, los informes son documentos ODT
|
|
(application/vnd.oasis.opendocument.text)
|
|
|
|
.. inheritref:: electronic_mail/electronic_mail:section:firma
|
|
|
|
Firma
|
|
=====
|
|
|
|
En la plantilla podemos seleccionar la opción **Firma**. Esta opción nos
|
|
añadirá la firma del usuario de Tryton en la firma del correo.
|
|
|
|
Destinatarios
|
|
=============
|
|
|
|
A continuación se muestran algunos ejemplos para añadir en el campo "Destinatarios"
|
|
en la plantilla de correo para obtener los correos electrónicos a que se deben enviar:
|
|
|
|
Correo por defecto del tercero:
|
|
|
|
.. code::
|
|
|
|
${record.email or ''}
|
|
${record.get_mechanism('email') or ''}
|
|
|
|
Todos los correos del tercero:
|
|
|
|
.. code::
|
|
|
|
${','.join([x.email for x in record.party.contact_mechanisms if x.type == 'email']) or ''}
|
|
|
|
Todos los correos relacionados con las direcciones del tercero:
|
|
|
|
.. code::
|
|
|
|
${','.join([x.email for x in record.addresses if x.email]) or record.get_mechanism('email') or ''}
|
|
|
|
Enviar correos a los usuarios que han creado o modificado un registro:
|
|
|
|
.. code::
|
|
|
|
${record.write_uid and record.write_uid.email or record.create_uid.email}
|
|
|
|
En el caso que el objeto sea una factura, pedido de venta, la información del correo
|
|
estaría dentro del campo "party". Consulte a los campos del modelo para saber que campo
|
|
debemos relacionarlo.
|
|
|
|
.. code::
|
|
|
|
${record.invoice_address.email or record.party.get_mechanism('email') or ''}
|