1 votes

Erreur Dynamics CRM "Une devise est requise si une valeur existe dans un champ monétaire" après avoir converti l'activité en cas.

Nous avons une instance Dynamics CRM 4.0 avec quelques attributs personnalisés de type "money" sur l'entité Case et sur toutes les entités Activity (Email, Phone Call, etc.) Lorsque j'utilise la fonctionnalité intégrée "Convert Activity to Case", je constate que le Case résultant n'a pas de devise définie, même si l'Activity à partir duquel il a été créé en a une. Chaque fois que le cas est ouvert, l'utilisateur obtient cette erreur JavaScript :

Une devise est requise si une valeur existe dans un champ monétaire. Sélectionnez une devise et réessayez.

C'est extrêmement ennuyeux ! Comment puis-je le réparer ? Y a-t-il un moyen de définir la devise ? Cela doit être fait de manière synchrone, car le dossier est ouvert immédiatement lorsqu'il est créé à partir d'une activité. Ainsi, même si je lance un flux de travail pour définir la devise, l'utilisateur obtiendra toujours cette erreur au moins une fois. Sinon, puis-je simplement supprimer l'avertissement d'une manière ou d'une autre ? Je ne me soucie pas vraiment de définir la devise, je veux juste que l'erreur disparaisse.

3voto

Jinho Points 31

Je pense que ce code sera utile pour la prochaine personne qui a le même problème. J'ai passé une journée entière à comprendre ce que j'ai fait ci-dessous.

Il y a deux étapes à franchir :

  1. définir la devise par défaut
  2. définir le symbole de la monnaie pour le champ de l'argent.

Voici l'exemple de code.

var currency = crmForm.all.transactioncurrencyid;

if (currency.DataValue == null) {
    var lookupData = new Array();
    var lookupItem= new Object();

    //Get transaction currency value from :
    select **TransactionCurrencyId** from MSCRM.dbo.TransactionCurrency
        lookupItem.id = '{The GUID that you get from the SELECT statement above}';
        lookupItem.typename = 'transactioncurrency';
        lookupItem.name = 'US Dollar';
        lookupData[0] = lookupItem;
        currency.DataValue = lookupData;
    //set default currency symbol for all the Money field.
    var defaultSymbol = '$';
    for(var i=0; i < crmForm.all.length ; i++)   {
        var oCtr = crmForm.all[i];
        if(!IsNull(oCtr.IsMoney) && !oCtr.IsBaseCurrency)
        {
            oCtr.CurrencySymbol = defaultSymbol;
        }
    }
}

2voto

Pham Ho Points 21

Définir la devise par défaut dans Personnaliser l'espace de travail, onglet Général Les NOUVEAUX enregistrements utiliseront cette devise Pour les enregistrements EXISTANTS (avant que le(s) champ(s) monétaire(s) ne soit(soient) ajouté(s)), utilisez la recherche avancée pour trouver les enregistrements sans valeur monétaire, puis utilisez l'édition en masse pour définir la devise.

1voto

hadi teo Points 837

Vous pouvez consulter cet article CRM 4 Calculs des devises par Mitch Milam

Mise à jour : Après avoir fait des recherches, j'ai découvert que vous devez peut-être définir le lookup transactioncurrencyid quelque part. Donc dans votre cas, cela pourrait être onsave ou dans l'exécution des codes du workflow. Je l'ai lu ici Erreur : Attribuer une valeur décimale à un champ monétaire de CRM 4.0 en utilisant Javascript

1voto

Polshgiant Points 1194

Si votre formulaire comporte un champ monétaire, le CRM doit savoir quelle devise utiliser. Vérifiez qu'une devise par défaut est définie dans vos préférences utilisateur (Personnaliser le lieu de travail à partir de la page principale, puis l'onglet Général). En d'autres termes, une devise par défaut doit être définie pour chacun de vos utilisateurs.

J'ai également réussi à contourner ce problème en ajoutant le champ de la devise au formulaire, en lui attribuant la valeur par défaut de dollars américains, puis en masquant le champ. Cependant, si ma mémoire est bonne, ce n'est pas l'idéal car la monnaie en dollars américains est un enregistrement dans le système et peut avoir des GUID différents dans différents environnements.

1voto

mike Points 11

Ce problème ennuyeux a été résolu sur mon système en découvrant le transactioncurrencyid utilisé pour les dollars américains, puis en mettant à jour la colonne transactioncurrencyid dans la table de la base de données de l'entité pour tous les enregistrements d'entité existants. Après cette opération, j'ai pu ajouter des valeurs monétaires dans le formulaire de l'entité sans autre problème. Je ne suis pas sûr que cette solution soit idéale pour tout le monde, mais comme je ne voulais pas écrire de code pour le faire et que je ne devais pas avoir à le faire puisque si j'ajoutais des attributs monétaires à une entité nouvellement définie, il n'était pas nécessaire d'écrire du code de ma part pour remplir le champ transactioncurrencyid - il le faisait simplement par défaut. En résumé, ce problème ne semble se produire que si les champs monétaires sont ajoutés à une entité existante à laquelle sont associées des données existantes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X