Curso de Desarrollo de Envío de Emails y Notificaciones para BC
Desarrollo paso a paso para envío de emails y notificaciones en Dynamics 365 Business Central. Se trata de un caso real de un desarrollo que tuvimos que hacer para un cliente implementado en el cloud.
Se trata un curso muy interesanta ya que vamos a combinar todos los elementos de un desarrollo en un entorno real. En este curso:
– Vamos a hacer un desarrollo de un caso real.
– El desarrollo es para Dynamics 365 Business Central alojado en el cloud, por lo que la solución en 100% extensiones.
– En vscode mostramos todos los plugins que usamos en nuestro día a día (6 extensiones, además del AL Language).
– Hemos creado snippets de usuario que nos ayudan en el desarrollo. Explicamos cómo se crean y cómo se usan.
– Hacemos Source control Managent con Git. Se trata de una muy buena oportunidad para ver Git combinado con AL en un caso real.
– Usamos la metodología TDD – Test Driven Development, por lo que todo el desarrollo está cubierto por test automatizados.
– Tenemos activado el Code Analyzer para que el sistema nos ayude a cumplir con las guias de estilo y con las buenas prácticas de desarrollo.
Lección 1. Repaso del Requisito
En este curso vamos a hacer un desarrollo paso a paso para Dynamics 365 Business Central.
Se trata de un requisito real que tuvimos que desarrollar para un cliente.
Partimos de un documento de requisitos y hacemos todos los pasos:
- Un análisis
- El desarrollo
- Los tests para dejar el desarrollo listo para implementar
Ir al video de la Lección 1. Repaso del Requisito
Lección 2. Inicializar el Entorno Git y AL
El proyecto Git ya lo tenemos creado en DevOps, aunque actualmente el repositorio está vacío. DevOps va actuar como repositorio remoto, mientras que en nuestra máquina vamos a tener una copia local, que vamos a ir sincronizando con el remoto.
En Visual Studio Code abrimos la carpeta y lo enlazamos con el repositorio remoto con la URL que nos proporciona DevOps.
Con una acción de Visual Studio Code inicializamos el proyecto local, y a través de lineas de comando lo enlazamos con el remoto.
Ir al video de la Lección 2. Inicializar el Entorno Git y AL
Lección 3. Crear el campo Proveedor de Correduría
En esta lección veremos una funcionalidad muy interesante de la extensión CRS AL Language Extension, y es el Rename automático de nombres de ficheros. De esta forma sabemos que todos los ficheros necesarios para este desarrollo tendrán nombres que cumplirán todos las mismas reglas.
Una de las buenas prácticas de desarrollo es añadir un prefijo/sufijo a todos los nombres de objetos, campos y elementos. El Code Analyzer nos ayuda a detectar los sitios donde nos lo hemos olvidado, y la extensión CRS nos lo pone automáticamente en algunos casos.
Lección 4. Añadir el TableRelation y testearlo
En esta lección vamos a añadir la propiedad TableRelation para que al usuario le aparezca el desplegable para seleccionar un proveedor desde la lista de proveedores.
También crearemos los test para comprobar que el campo cumple con la funcionalidad que esperamos:
- Si el usuario selecciona un proveedor que existe, el sistema lo permite y no hay ningún problema.
- Si el usuario selecciona un proveedor que no existe, el sistema muestra un error. Con la instrucción asserterror aseguramos que sale el error, y con el GetLastErrorText capturamos el mensage para verificar que efectivamente se trata del texto que estávamos esperando.
Ir al video de la Lección 4. Añadir el TableRelation y testearlo
Lección 5. Añadir más campos y Snippets de usuario
En esta lección seguimos el DRP y vemos que tenemos que crear más campos. Al mostrar los campos en la página lo haremos creando una nueva pestña, un nuevo grupo.
No obstante, vemos algunos de los snippets de usuario que tenemos creados y que nos ayudan a poner el prefijo y las ApplicationArea, de forma que no lo tengamos que escribir cada vez y podamos ir más rápido.
Como ya tenemos commits previos en Git, en esta lección también vemos como Git monitoriza los cambios que vamos haciendo y nos enseña de una forma muy fácil todos los cambios que hemos realizado desde el último commit.
Ir al video de la Lección 5. Añadir más campos y Snippets de usuario
Lección 6. Enviar correos a un smtp de pruebas
En esta lección empezamos con el envío de emails. Necesitamos una Codeunit que contenga toda la funcionalidad relacionada con este envío.
Estos emails se van a mandar cada día. El desancadenador de la funcionalidad será una cola de proyecto que tendremos configurada para que se ejecute una vez al día.
Es importante tenerlo en cuenta, ya que las Colas de proyecto siempre ejecutan el trigger OnRun de la Codeunit, por lo que tenemos que hacer que nuestra funcionalidad empiece en el OnRun.
Lección 7. SenderName y SenderAddress
En esta lección vamos a sustituir los valores hardcoded de SenderName y SenderAddress por valores que estén configurados en la Base de Datos.
En la tabla de configuración de SMTP no hay ningún campo del estándar donde poder informar de estos valores, por lo que vamos a crear una TableExtension para crear los campos, que mostraremos en la página a través de una PageExtension.
Ir al video de la Lección 7. SenderName y SenderAddress
Lección 8. Crear libreria para los test
En esta lección vamos a ir un poco más allá y vamos a forzar el valor de todos los campos de la tabla Smtp Mail Setup. Así nos vamos a asegurar que usaremos los servidores de Mailtrap siempre que se ejecute un test en el que se envían emails.
Para ello vamos a crear una codeunit nueva, a la que llamaremos ClipIns Insurance Library. Aquí crearemos todos los procedimientos de creación de datos que necesitemos para nuestros tests. El primer procedimiento que crearemos se llama CreateTestSmtpSetup y nos va a servir para forzar los valores de Mailtrap.
Ir al video de la Lección 8. Crear libreria para los test
Lección 9. Determinar los usuarios receptores
En esta lección seguimos modificando el envío de emails para que el sistema no utilice valores hardcoded, sino que vaya a buscar los valores en registros de la base de datos.
En el requisito se explica que los usuarios que deben recibir los emails de notificación son los que tienen marcado el campo Alerta de Seguros en la configuración de usuarios. Se pueden enviar email a un usuario, a más de uno o a ninguno.
Lección 10. Testear número de emails enviados
En esta lección creamos unos cuantos procedimientos de test en Visual Studio Code, para comprobar que se mandan el número de emails que esperamos según la cantidad de usuarios y de seguros configurados en Business Central.
En este caso tenemos que comprobar lo siguiente:
- Si no hay usuarios, se mandan 0 emails.
- Si hay 1 usuario pero no está marcado para recibir notificaciones, se mandan 0 emails.
- Si hay 1 usuario, pero no tiene email, se mandan 0 emails.
- Si hay 1 usuario y 1 seguro, se manda 1 email.
- Si hay 2 usuarios y 1 seguro, se mandan 2 emails.
- Si hay 1 usuario y 2 seguros, se manda 1 email.
- Si hay 2 usuarios y 2 seguros, se mandan 2 emails.
Ir al video de la Lección 10. Testear número de emails enviados
Debe iniciar sesión para crear nuevos temas.