Valores Money en Dynamics 365 CE y Power Platform

El tipo de dato «Money» en Dynamics 365 CRM, que es parte del ecosistema de Dataverse (por lo tanto, este artículo es valido tanto para Dynamics 365 CE como para Power Platform), ofrece una manera especializada de gestionar valores monetarios dentro de la plataforma. Esta especialización permite que las aplicaciones que dependen de Dataverse, manejen cantidades de dinero de manera consistente y precisa, teniendo en cuenta aspectos como los tipos de cambio y la precisión decimal necesaria para operaciones financieras.

La elección entre usar el tipo «Money» y el tipo «Decimal» en Dynamics 365 CRM o Microsoft Dataverse depende de las necesidades específicas de tu aplicación o solución y de la naturaleza de los datos que estás manejando. Ambos tipos ofrecen precisión decimal, pero tienen características y usos óptimos diferentes. Aquí hay algunas consideraciones para ayudarte a decidir.

Cuando usar el tipo Money

Utiliza «Money» cuando estés trabajando con datos que representan valores monetarios. Esto incluye precios, costos, ingresos, gastos, y cualquier otro valor que implique una transacción financiera. El tipo «Money» está optimizado para estas operaciones, incluyendo la conversión entre diferentes monedas y la integración con los tipos de cambio actualizados.

Si tu aplicación necesita realizar cálculos financieros y es crucial mantener la precisión y coherencia en estas operaciones, «Money» es la elección adecuada. Esto se debe a su integración con la funcionalidad de tipos de cambio y su capacidad para manejar correctamente la precisión decimal en contextos financieros.

Para datos que serán utilizados en informes financieros, donde la precisión y la representación adecuada de los valores monetarios son críticos, el tipo «Money» ofrece ventajas significativas.

Cuando usar el tipo Decimal

El tipo «Decimal» es más adecuado para datos numéricos que requieren precisión decimal pero no representan valores monetarios. Esto incluye mediciones, proporciones, porcentajes, y otros datos cuantitativos que no están directamente vinculados a operaciones financieras.

Aunque ambos tipos permiten configurar la precisión, el «Decimal» es una opción generalista que se puede utilizar en una variedad más amplia de contextos donde la interpretación del número no está estrictamente ligada a valores monetarios.

En situaciones donde los valores no necesitan ser convertidos entre diferentes monedas o no están asociados con transacciones financieras, «Decimal» puede ser la opción más simple y directa.

La decisión entre «Money» y «Decimal» se reduce a si estás manejando valores monetarios específicos con necesidades de conversión de moneda y precisión en cálculos financieros («Money»), o si estás trabajando con datos numéricos que requieren precisión decimal pero no están atados a contextos financieros específicos («Decimal»).

Crear valores Money en Dataverse

Para crear un campo de tipo moneda, tenemos que seleccionar el tipo de datos «Divisa» a la hora de crearlo.

Opción para crear un nuevo campo de tipo divisa en Power Platform Dataverse

Al crear el campo, podemos observar como internamente se han creado dos campos: el que acabamos de crear y un campo adicional con el mismo nombre, pero con la coletilla «(Base)».

Este campo adicional se crea automáticamente para almacenar el valor de la cantidad de dinero en la moneda base configurada para la organización en Dynamics 365 CRM. La creación de este campo base es crucial para facilitar las conversiones de moneda y mantener la integridad de los datos financieros en un entorno multi-moneda. Permite que las aplicaciones y los informes generen cálculos y comparaciones financieras consistentes, independientemente de la moneda original de las transacciones.

    Como usar los valores Money en nuestro código

    Si estamos trabajando en un plug-in o un código externo que extienda la funcionalidad de nuestra aplicación y tenemos que acceder o modificar algún valor «Money», hemos de tener en cuenta algunas consideraciones concretas de este tipo de valor.

    En Dynamics 365 CRM, cuando trabajas con campos de tipo «Money», la manera de acceder a su valor es un poco diferente debido a que el campo «Money» es un tipo complejo y no un decimal directamente. El valor se encuentra encapsulado dentro de una estructura específica llamada Money. Por lo tanto, cuando intentas obtener el valor de un campo de tipo «Money», debes hacerlo obteniendo primero el objeto Money y luego acceder a su propiedad «Value» que es de tipo decimal.

    Para obtener los valores de tipo Money tendrias que hacerlo de esta manera:

    if(entidad.Attributes.Contains("precio"))
    {
    // Primero se obtiene el objeto Money del campo
    Money precioMoney = (Money)entidad.GetAttributeValue<Money>("precio");

    // Luego se accede a la propiedad Value para obtener el decimal
    decimal precio = precioMoney.Value;

    }

    Para asignar un valor a un campo de tipo Money a través de un plugin en Dynamics 365 CRM, debes crear una instancia de la clase Money con el valor que deseas asignar y luego utilizar ese objeto para establecer el valor del campo. Aquí te muestro cómo puedes hacerlo:

    decimal valorParaAsignar = 1000m;
    Money valorMoney = new Money(valorParaAsignar);
    espacio["price"] = valorMoney;

    Gracias por leerme. Últimamente le estoy dedicando mucho tiempo a generar contenido para Youtube y Twich. Te invito a que te pases por los canales y me sigas 🙂

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *