Inicio Blog Cambios en Acumatica Multicurrency para desarrolladores

Cambios en Acumatica Multicurrency para desarrolladores

Revisamos los cambios recientes de Acumatica a la multidivisa que afectan a las personalizaciones de desarrolladores realizadas en Acumatica Cloud ERP. Es importante que los desarrolladores y consultores de terceros revisen estos cambios.
Sergey Nikomarov | 23 de marzo de 2022

Cambios en Acumatica Multicurrency para desarrolladores

Introducción

Los equipos de desarrolladores de lógica empresarial de Acumatica han estado reelaborando la implementación multidivisa desde hace algún tiempo para que sea más fácil de entender y personalizar. Con este trabajo, hay algunos cambios importantes en la funcionalidad de nuestra implementación multidivisa que afectan a los desarrolladores y que creemos que es importante compartir con usted.

Nueva extensión del gráfico

We have a new generic graph extension: MultiCurrencyGraph<TGraph, TPrimary> that stores the common multicurrency logic. From this graph extension developers should derive their specific currency graph extension to support multicurrency in their graph. The details of this process are described in this article from Acumatica help portal:

Plataforma API: Implementación del soporte multidivisa en un formulario personalizado

Sin embargo, el cambio a la nueva lógica puede requerir algunos cambios por parte de los desarrolladores asociados. Los cambios le afectarán si hay campos DAC en sus DAC personalizados o extensiones DAC que almacenen dinero en alguna moneda. En este caso necesitará revisar su código y ajustarlo a estos cambios. Además, esto puede ser especialmente importante para los desarrolladores de personalizaciones que integran su código con módulos de Acumatica.

Resumen de los cambios

Para mostrar por qué es importante, primero debo hacer un repaso de los cambios en la multidivisa.

Ahora hay dos conjuntos de atributos de moneda para los campos DAC. Los atributos antiguos se encuentran en el espacio de nombres PX.Objects . CM y el nuevo conjunto se encuentra en el espacio de nombres PX.Objects.CM.Extensions. La mayoría de los atributos de moneda de estos dos conjuntos tienen los mismos nombres.

Por ejemplo, existen PX. Objects.CM. PXDBBaseCuryAttribute y PX.Objects.CM.Extensions.PXDBBaseCuryAttribute.

Esto facilita el cambio a la nueva implementación multidivisa, ya que no es necesario aprender nuevos nombres de atributos ni recordar dos conjuntos de atributos. Pero al mismo tiempo, hace que sea más fácil pasar por alto el atributo de moneda incorrecto del espacio de nombres equivocado durante la revisión de un código DAC. Así que, por favor, tenga cuidado.

Cuando declare o revise un campo DAC en una extensión DAC/DAC que almacenará alguna información dependiente de la moneda (por ejemplo, cantidad de dinero en alguna moneda) necesitará declarar en la propiedad del campo DAC un atributo de moneda apropiado de uno de estos dos conjuntos.

Es muy importante NO mezclar los antiguos atributos heredados con las nuevas extensiones del gráfico de divisas , ya que esto provocará problemas en el sistema.

En primer lugar, hay que averiguar qué gráficos utilizan el DAC que contiene el mencionado campo DAC.

Los antiguos atributos de moneda del espacio de nombres PX.Objects. CM contienen en su interior la implementación del soporte multidivisa.

Con los nuevos atributos de moneda, el espacio de nombres PX.Objects.CM.Extensions se basa en las extensiones del gráfico multidivisa que ahora contienen soporte de implementación multidivisa.

Nuevos atributos de moneda

Disponemos de nuevos atributos de divisa diseñados para trabajar conjuntamente con las extensiones del gráfico de divisas. Por lo tanto, se aplican las siguientes reglas:

  1. Si todos los gráficos que utilizan su CAD no tienen las correspondientes extensiones de gráfico de divisas y no va a introducir una nueva extensión de gráfico de divisas, deberá utilizar los antiguos atributos de divisas.
  2. Si todos los gráficos que utilizan su DAC tienen las correspondientes extensiones de gráfico de divisas, deberá utilizar los nuevos atributos de divisas.
  3. Si sólo algunos de los gráficos que utilizan su DAC tienen extensiones de gráfico de divisas correspondientes, deberá declarar eventos de gráfico adjuntos a caché para estos gráficos para sus campos DAC. En la declaración del evento adjunto a la caché, debe declarar un atributo de moneda adecuado para el gráfico. Para ello, utilice las reglas 1 y 2.

Esto cubre lo básico de cómo elegir un atributo de moneda. Puedes encontrar más detalles en estos dos artículos de nuestro portal de ayuda:

Plataforma API: Implementación del soporte multidivisa en un formulario personalizado

Plataforma API: Inserción de un documento multidivisa

La importancia de integrar los cambios en los atributos de las divisas

Volvamos ahora a la razón por la que es importante integrar estos cambios.

En primer lugar, los atributos de moneda antiguos son ahora heredados y, por lo tanto, no recibirán mucho soporte ni mejoras en el futuro. Existe la posibilidad de que se descarten en algún momento en el futuro cuando todos los módulos de Acumatica y las grandes personalizaciones se migren a la nueva implementación multidivisa.

En segundo lugar, algunas personalizaciones deben integrar los cambios en multidivisa para que funcionen correctamente en las versiones más recientes y futuras de Acumatica.

Como he mencionado anteriormente, los atributos antiguos no deben mezclarse con las nuevas extensiones del gráfico de divisas.

Imagine una situación en la que existe una personalización que amplía el DAC PX.Objects.AP Tran con un campo DAC personalizado SomeBusinessSpecificAmt que utiliza un atributo de moneda antiguo. El DAC APTran se utiliza en la pantalla "Facturas y ajustes". En este caso, la lógica de negocio de la pantalla se almacena en el gráfico PX.Objects.AP.APInvoiceEntry.

Ahora bien, si los desarrolladores de Acumatica añaden una extensión de gráfico de divisas a este gráfico y usted publica esta personalización, la lógica multidivisa antigua y la nueva se mezclarán. Esto dará lugar a errores en el sistema.

Resumen

Los desarrolladores de Acumatica han estado reelaborando el soporte multidivisa en los módulos de Acumatica durante los últimos años. Están integrando gradualmente estos cambios en varios módulos de Acumatica.

La historia de los cambios que hemos realizado a lo largo del tiempo es más o menos así:

  • Acumatica 2018R2: se agregó el soporte al gráfico de Oportunidades en CRM.
  • Acumatica 2019: el módulo Field Services implementado con la nueva funcionalidad multidivisa
  • Después de los Servicios de Campo, el soporte se añadió a los presupuestos y proformas en los proyectos
  • En Acumatica 2021R2: AP, AR, y otros módulos de finanzas fueron reelaborados
  • Actualmente, los desarrolladores están reelaborando los módulos de distribución

Las personalizaciones que amplíen estos módulos deberán integrar los cambios que hemos introducido hoy en la multidivisa.

Por favor, revise su personalización en los siguientes casos:

  • Personalizaciones que contienen DAC personalizados con campos DAC que almacenan datos relacionados con la divisa y extensiones de gráficos a gráficos existentes de Acumatica que utilizan estos DAC personalizados en su lógica.
  • Las personalizaciones que contienen extensiones DAC personalizadas para los DAC de Acumatica y estas extensiones DAC declaran campos DAC con datos relacionados con la moneda.

Si tiene alguna pregunta, publíquela en nuestro Foro público para desarrolladores de la Comunidad - Temas varios para desarrolladores.

¡Feliz codificación!

Autor del blog

Sergey se unió a Acumatica en 2017 y comenzó como desarrollador de aplicaciones en el equipo de OEM, donde realizó gran parte del desarrollo del marco de Acumatica, además de varias personalizaciones. Un ejemplo es una gran personalización para el control presupuestario automatizado para Censof, un socio OEM. En 2019, se unió al equipo de Desarrollo de Plataformas como desarrollador de sistemas. Y más recientemente, Sergey es responsable de Acuminator y nuestro desarrollo y mantenimiento de RVT. Participante en varios hackathons internos de Acumatica, Sergey formó parte del equipo ganador -junto con Vladimir Panchenko- que creó Acuminator. En un hackathon posterior, su equipo lo amplió aún más al desarrollar el Mapa de código con algunas otras mejoras para Acuminator.

Reciba las actualizaciones del blog en su bandeja de entrada.