Accueil Blog Changements dans Acumatica Multicurrency pour les développeurs

Changements dans Acumatica Multicurrency pour les développeurs

Nous examinons les récents changements apportés par Acumatica à la multidevise, qui affectent les personnalisations des développeurs effectuées sur Acumatica Cloud ERP. Il est important que les développeurs et consultants tiers prennent connaissance de ces changements.
Sergey Nikomarov | 23 mars 2022

Changements dans Acumatica Multicurrency pour les développeurs

Introduction

Les équipes de développeurs de la logique métier d'Acumatica ont retravaillé l'implémentation multidevise depuis un certain temps afin de la rendre plus facile à comprendre et à personnaliser. Ce travail a entraîné des changements importants dans les fonctionnalités de notre implémentation multidevise qui affectent les développeurs et qu'il nous semble important de partager avec vous.

Nouvelle extension graphique

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:

API de la plate-forme : Mise en œuvre du support multidevise sur un formulaire personnalisé

Toutefois, le passage à la nouvelle logique peut nécessiter quelques modifications de la part des développeurs partenaires. Ces changements vous affecteront si vos CAD personnalisés ou vos extensions de CAD contiennent des champs qui stockent de l'argent dans une certaine devise. Dans ce cas, vous devez revoir votre code et l'adapter à ces changements. De plus, cela peut être particulièrement important pour les développeurs de personnalisation qui intègrent leur code avec les modules Acumatica.

Aperçu des changements

Pour montrer pourquoi elle est importante, je dois d'abord faire un tour d'horizon des changements intervenus dans la multidevise.

Il existe désormais deux ensembles d'attributs de devise pour les champs DAC. Les anciens attributs se trouvent dans l'espace de noms PX .Objects.CM et le nouvel ensemble dans l'espace de noms PX.Objects.CM.Extensions. La plupart des attributs de devise de ces deux ensembles ont les mêmes noms.

Par exemple, il existe à la fois PX.Objects.CM.PXDBBaseCuryAttribute et PX.Objects.CM.Extensions.PXDBBaseCuryAttribute.

Cela facilite le passage à la nouvelle implémentation multidevise, car il n'est pas nécessaire d'apprendre de nouveaux noms d'attributs ou de se souvenir de deux ensembles d'attributs. Mais en même temps, il est plus facile de rater l'attribut de devise incorrect dans le mauvais espace de noms lors de l'examen d'un code CAD. Soyez donc prudent.

Lorsque vous déclarez ou révisez un champ de CED dans une extension de CED/CAD qui stockera des informations dépendant de la devise (par exemple, un montant dans une certaine devise), vous devrez déclarer sur la propriété du champ de CED un attribut de devise approprié provenant de l'un de ces deux ensembles.

Il est très important de ne PAS mélanger les anciens attributs et les nouvelles extensions du graphique monétaire , car cela entraînerait des problèmes dans le système.

Tout d'abord, vous devez déterminer quels graphiques utilisent le CED contenant le champ CED susmentionné.

Les anciens attributs de devise de l'espace de noms PX.Objects.CM contiennent l'implémentation du support multidevise.

Avec les nouveaux attributs de devise, l'espace de noms PX.Objects.CM.Extensions s'appuie sur les extensions de graphes multidevises qui contiennent désormais un support d'implémentation multidevise.

Nouveaux attributs de la monnaie

Nous disposons de nouveaux attributs de devises qui sont conçus pour fonctionner avec les extensions du graphique des devises. Les règles suivantes s'appliquent donc :

  1. Si tous les graphiques utilisant votre CED n'ont pas d'extension de graphique monétaire correspondante et que vous n'avez pas l'intention d'introduire une nouvelle extension de graphique monétaire, vous devez utiliser les anciens attributs monétaires.
  2. Si tous les graphiques utilisant votre CED ont des extensions de graphiques en devises correspondantes, vous devez utiliser les nouveaux attributs de devises.
  3. Si seuls certains des graphes utilisant votre CED ont des extensions de graphes de devises correspondantes, vous devez déclarer des événements de graphes attachés au cache pour ces graphes dans les champs de votre CED. Dans la déclaration de l'événement cache attached, vous devez déclarer un attribut de devise adapté au graphique. Pour ce faire, utilisez les règles 1 et 2.

Ceci couvre les bases de la sélection d'un attribut de devise. Vous trouverez plus de détails dans ces deux articles de notre portail d'aide :

API de la plate-forme : Mise en œuvre du support multidevise sur un formulaire personnalisé

API de la plate-forme : Insertion d'un document multidevise

L'importance d'intégrer les changements dans les attributs de la monnaie

Revenons maintenant à la raison pour laquelle il est important d'intégrer ces changements.

Tout d'abord, les anciens attributs de devises sont désormais hérités et ne recevront donc plus beaucoup de support et d'améliorations à l'avenir. Il est possible qu'ils soient abandonnés à un moment donné dans le futur lorsque tous les modules Acumatica et les grandes personnalisations seront migrés vers la nouvelle implémentation multidevise.

Deuxièmement, certaines personnalisations doivent intégrer les changements dans la multidevise pour fonctionner correctement dans les versions plus récentes et futures d'Acumatica.

Comme je l'ai mentionné précédemment, les anciens attributs ne doivent pas être mélangés avec les nouvelles extensions du graphique monétaire.

Imaginons une situation dans laquelle une personnalisation étend le CED PX.Objects.APTran avec un champ CED personnalisé SomeBusinessSpecificAmt qui utilise un ancien attribut de devise. Le CED APTran est utilisé dans l'écran "Factures et ajustements". Dans ce cas, la logique de gestion de l'écran est stockée dans le graphe PX.Objects.AP.APInvoiceEntry.

Maintenant, si les développeurs d'Acumatica ajoutent une extension de graphique de devises à ce graphique et que vous publiez cette personnalisation, l'ancienne et la nouvelle logique multidevise seront mélangées. Cela entraînera des erreurs dans le système.

Résumé

Les développeurs d'Acumatica ont retravaillé le support multidevise dans les modules Acumatica depuis plusieurs années. Ils intègrent progressivement ces changements dans les différents modules d'Acumatica.

L'historique des modifications que nous avons apportées au fil du temps ressemble à ceci :

  • Acumatica 2018R2 : la prise en charge a été ajoutée au graphique des opportunités dans le CRM.
  • Acumatica 2019 : le module Field Services mis en œuvre avec la nouvelle fonctionnalité multidevise.
  • Après les services extérieurs, le support a été ajouté aux devis et aux proformas dans les projets.
  • Dans Acumatica 2021R2 : AP, AR, et d'autres modules financiers ont été retravaillés
  • Actuellement, les développeurs sont en train de retravailler les modules de distribution

Les personnalisations qui étendent ces modules doivent intégrer les changements que nous avons apportés à la multidevise et que nous avons décrits ici aujourd'hui.

Veuillez revoir votre personnalisation dans les cas suivants :

  • Les personnalisations qui contiennent des CAD personnalisés avec des champs de CAD stockant des données relatives aux devises et des extensions de graphiques Acumatica existants qui utilisent ces CAD personnalisés dans leur logique.
  • Les personnalisations qui contiennent des extensions DAC personnalisées aux DAC Acumatica et ces extensions DAC déclarent des champs DAC avec des données liées à la devise.

Si vous avez des questions, veuillez les poser dans notre Forum public des développeurs de la Communauté - Sujets divers pour les développeurs.

Bon codage !

Auteur du blog

Sergey a rejoint Acumatica en 2017 et a commencé en tant que développeur d'applications dans l'équipe OEM, où il a fait beaucoup de développement Acumatica Framework - en plus de faire plusieurs personnalisations. Un exemple est une grande personnalisation pour le contrôle budgétaire automatisé pour Censof, un partenaire OEM. En 2019, il a rejoint l'équipe de développement de la plateforme en tant que développeur de systèmes. Et plus récemment, Sergey est responsable d'Acuminator et de notre développement et maintenance RVT. Participant à un certain nombre de hackathons internes d'Acumatica, Sergey a fait partie de l'équipe gagnante - avec Vladimir Panchenko - qui a créé Acuminator. Lors d'un hackathon ultérieur, son équipe a poursuivi le développement de la carte de code ainsi que d'autres améliorations d'Acuminator.

Recevez les mises à jour du blog dans votre boîte de réception.