Foire aux questions / Anveo EDI Connect / Comment ajouter une condition IF à votre cartographie
This is an automatic translation. The original post is available in Anglais.

Comment ajouter une condition IF à votre cartographie

Si vous avez des compétences dans n’importe quel langage de programmation, vous connaissez certainement l’instruction IF-THEN-ELSE : si un champ de table ou une variable a une valeur spécifique X, alors faites ceci, sinon faites autre chose. Il est possible de reproduire ce comportement dans une cartographie, il y a plusieurs façons de le faire et nous voulons les expliquer dans cet article.

Dans le premier cas, supposons que vous souhaitez exporter une facture de vente enregistrée. Vous avez un en-tête de facture de vente et plusieurs lignes de facture. Les lignes de facture contiennent quelques postes et quelques commentaires au-dessus et entre les lignes. Sans aller plus loin dans votre structure cartographique, je suis sûr que vous avez une ligne de boucle pour l’en-tête de votre facture de vente et quelques lignes de mappage de données sous la ligne, suivie d’une ligne de boucle pour vos lignes de vente et leurs lignes de mappage :

En-tête
de facture de vente – Document
EDI – Mappage des données d’en-tête de facture ligne 1
– Mappage des données d’en-tête de facture ligne 2
– Mappage des données d’en-tête de facture ligne ….
– Ligne
de facturation des ventes — Ligne de mappage des données de la ligne de facturation ligne 1
— et ainsi de suite…
Les traits d’union indiquent le niveau d’indentation de la cartographie.

La question est : comment séparez-vous les lignes d’article des lignes avec les commentaires ? Il est dangereux de supposer que l’ordre des lignes d’article et de commentaire est toujours le même, il vous faut donc une solution indépendante de l’ordre.

La solution consiste à ajouter deux nouvelles lignes de boucle en retrait sous la ligne de la facture de vente. Dans le scénario illustré ci-dessus, toutes les lignes de commentaire ont le type « vide », toutes les autres lignes ont un certain type, ce qui permet de les distinguer. La première ligne de la nouvelle boucle est une boucle au-dessus de la table des lignes de la facture de vente, avec le même lien et les mêmes filtres de données que la première boucle, mais vous ajoutez un nouveau filtre : Type=CONST(‘ ‘). Vous pouvez lire ceci comme « Si le type de ligne de facture de vente est vide » – votre première partie de l’état IF !
Maintenant pour la partie « THEN » : toutes les lignes de mappage qui sont en retrait sous cette nouvelle ligne forment la partie « THEN » et vous pouvez mettre les commentaires dans le tableau « EDI Additional Information » par exemple, avec tous les liens et filtres de données nécessaires.

Et qu’en est-il de toutes les autres lignes avec vos postes (et comptes généraux et ressources) ? Eh bien, indépendamment de vos règles générales d’exportation qui s’appliquent à votre mappage, ces lignes ont un type qui est différent de vide. Cela signifie que vous pouvez ajouter une deuxième ligne à votre mappage, sous la ligne IF, avec le même lien d’élément de données et les mêmes filtres que votre première boucle, mais maintenant vous pouvez ajouter le filtre sur le type comme ceci : Type=FILTER(0). Vous pouvez le lire comme « si le type de ligne de la facture de vente est quelque chose d’ELSE que vide » – votre partie ELSE de l’état. Dans ce cas, vous souhaitez probablement créer des lignes de document EDI qui contiennent les informations des postes (et des ressources et des comptes généraux). Vous devez donc indenter la ligne de mappage de ligne de document EDI sous cette autre ligne et ajouter les lignes de mappage de données de manière appropriée.

Si vous souhaitez examiner cet exemple de plus près, vous pouvez utiliser le modèle pour exporter les factures de vente comptabilisées à partir de l’assistant : créez une nouvelle cartographie NAV vierge avec le code et le code du projet, puis exécutez l’assistant à partir du ruban « Action » via « Assistant de création et de mise à jour » et sélectionnez la première option :


Au lieu d’insérer la deuxième ligne de facture, vous pouvez également insérer une ligne de type conditionnel. Revenons à la ligne de la boucle « Sales Invoice Line » : elle parcourt chaque ligne de facture, c’est-à-dire chaque ligne de facture est transmise à l’mappage l’une après l’autre. S’il s’agit d’une ligne de commentaire, l’information sera inscrite dans la table Renseignements supplémentaires EDI – ce qui signifie qu’il y a un enregistrement dans le filtre.

Avec la ligne de type conditionnel, vous pouvez profiter du fait que si vous avez une ligne sans commentaire, le filtre mentionné ci-dessus ne trouve pas d’enregistrement. La ligne conditionnelle peut vérifier ce cas, avec la fonction « ISEMPTY ». Le nom est littéralement, s’il n’y a pas d’enregistrement dans le filtre de la ligne Commentaire de la facture client, toutes les lignes de mappage indentées sous la ligne conditionnelle seront exécutées. C’est ici que les lignes de documents EDI seront écrites. Les propriétés complètes de la ligne de cartographie ressemblent à ceci :

Si vous avez importé le modèle dans un nouveau mappage, vous pouvez changer la ligne de mappage nommée « ELSE » par cette ligne conditionnelle.

Une autre façon de créer un conditionnel est d’utiliser une conversion de valeur. Par exemple, vous devez exporter les codes d’unité de mesure de vos articles vers un message de type EDIFACT. Il est très probable que les codes de votre système NAV ne correspondent pas à ceux qui sont attendus dans EDIFACT, vous devez donc les traduire : si le code est « PALLET », écrivez « PAL » dans la table tampon. Si c’est « PIECE », écrivez « PCE ». Si « HEURE », écrire « HUR ». Et ainsi de suite.

Vous POUVEZ utiliser le filtrage décrit ci-dessus et ajouter une ligne de ventes (expédition probablement dans ce cas) sous la ligne originale pour chaque code d’unité de mesure et écrire le code correspondant sur la ligne de document EDI, mais il est beaucoup plus facile d’utiliser une conversion de valeur. Chaque code d’unité de mesure « source » se voit attribuer un code d’unité de mesure « destination », ce code de destination est écrit dans le champ destination de la ligne de mappage. Pour paramétrer une traduction de valeur, reportez-vous à l’article de la base de connaissances [insert link= » » here]= » »]