C'est une traduction automatique. Le message original est disponible en Anglais.

ANVEDI Callback

Les informations sur cette page sont destinées aux installations sur site utilisant les fichiers FOB uniquement.

Si vous utilisez Microsoft Dynamics NAV 2017 ou une version plus récente et qu’Anveo EDI Connect 5.00 offre une nouvelle logique de personnalisation basée sur les événements. Nous recommandons vivement de passer aux nouveaux événements d’intégration, si possible, afin de faciliter les mises à jour vers les nouvelles versions.

Le Codeunit ANVEDI Callback avec l’ID 5327310 est le point central si vous voulez changer le comportement d’Anveo EDI Connect. Nous gardons l’API de ce Codeunit constante, afin que vous n’ayez pas à écraser cet objet lorsque vous mettez à jour notre module. Plusieurs fonctions peuvent être modifiées par vous et certaines fonctions d’aide ne doivent pas être modifiées. Si vous avez mis à jour le module et qu’il vous manque une fonction d’aide qui aurait pu être ajoutée dans une version plus récente, il existe un deuxième objet appelé EDI Callback - Template avec ID 5327313 où vous trouverez la nouvelle fonctionnalité.

OnFunction

Le module vous permet de définir votre propre fonctionnalité, qui peut être appelée à partir des mappages EDI. Vous pouvez définir autant de fonctions que vous le souhaitez. Vous devez utiliser la casse prédéfinie et ajouter des appels aux fonctions intégrées FunctionName..FunctionName5.

Vous ne devez pas mettre de code en dehors de la structure de cas prédéfinie, car cette fonction peut être appelée assez souvent et tout code supplémentaire peut avoir des impacts négatifs sur les performances.

CASE TRUE OF
  // ... other functions

  FunctionName('EXAMPLE', 'HelloWorld'):
    BEGIN
      FunctionResult('Hello World!');
      EXIT;
    END;
END;
Exemple : Fonction « Hello World » dans OnFunction

Le nombre à la fin de la fonction d’aide locale FunctionName définit le nombre de paramètres. Vous pouvez définir des fonctions comportant jusqu’à cinq paramètres. Vous pouvez accéder au contenu des paramètres en appelant les fonctions GetTextParameter(ParNumber) et les fonctions similaires pour d’autres types de données. Le numéro du paramètre est compté de « 1 » à « 5 ».

Chaque fonction doit retourner une valeur en appelant la fonction locale avec le nom FunctionResult.

Vous ne devez appeler la fonction FunctionResult qu’une seule fois. Il est bon d’ajouter une déclaration EXIT directement après pour éviter d’appeler la fonction plusieurs fois.

Vous pouvez choisir les noms des objets et des fonctions comme vous le souhaitez.

Les 29 premiers caractères de la combinaison du nom de l’objet et de la fonction doivent être uniques pour pouvoir spécifier les paramètres à partir de la mapping. Vous devez essayer de faire en sorte que les noms soient courts.

Voici une liste complète des fonctions disponibles à utiliser dans la déclaration CASE. A partir d’Anveo EDI Connect 4.00 :

  • FunctionName(ObjectName: Text; FunctionName: Text)
  • FunctionName1(ObjectName: Text; FunctionName: Text; ParamName1: Text)
  • FunctionName2(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text)
  • FunctionName3(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text; ParamName3: Text)
  • FunctionName4(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text; ParamName3: Text; ParamName4: Text)
  • FunctionName5(ObjectName: Text; FunctionName: Text; ParamName1: Text; ParamName2: Text; ParamName3: Text; ParamName4: Text; ParamName5: Text)

Voici une liste des fonctions que vous pouvez utiliser pour accéder aux paramètres :

  • GetTextParameter(ParNum : Integer) : Text
    • Obtient le paramètre et essaie de le transformer en texte de type données.
  • GetIntegerParameter(ParNum : Integer) : Integer
    • Obtient le paramètre et essaie de le transformer en un type de données entier.
  • GetBooleanParameter(ParNum : Integer) : Boolean
    • Obtient le paramètre et essaie de le transformer en données de type booléen.
  • GetDecimalParameter(ParNum : Integer) : Decimal
    • Obtient le paramètre et essaie de le convertir en données de type décimal.
  • GetDateParameter(ParNum : Integer) : Date
    • Obtient le paramètre et essaie de le faire correspondre à la date du type de données.
  • GetTimeParameter(ParNum : Integer) : Time
    • Obtient le paramètre et essaie de le faire passer au type de données temps.
  • GetDateTimeParameter(ParNum : Integer) : DateTime
    • Obtient le paramètre et essaie de le transformer en données de type date/heure.
  • GetParameter(ParNum : Integer;VAR EDIVariant : Codeunit
    • Obtient le paramètre en tant qu’instance de la ANVEDI Variant de l’Codeunit.

CallbackRegistration

Cette fonction est appelée chaque fois qu’il se passe quelque chose dans le module, auquel vous pouvez réagir. La fonction contient une structure de cas, où vous pouvez vérifier sur le paramètre passé CallbackSupport ce qui s’est passé.

Vous ne devez pas mettre de code en dehors de la structure de cas prédéfinie, car cette fonction peut être appelée assez souvent et tout code supplémentaire peut avoir des impacts négatifs sur les performances.

Cette structure peut paraître inhabituelle pour les développeurs C/AL, mais nous pouvons ainsi ajouter des fonctionnalités, sans avoir à mettre à jour le Codeunit de ANVEDI Callback.

Les événements disponibles sont définis par le ANVEDI Callback Support de Codeunit. Dans les sections suivantes, nous aborderons les événements disponibles.

OnJobCallback

Vous pouvez utiliser l’codeunit des emplois du module pour définir des emplois personnalisés. L’codeunit permet de prendre en charge l’utilisation de plusieurs paramètres. Vous pouvez trouver plus d’informations sur la documentation relative au gestionnaire de l’emploi.

OnAcceptTransmission

Cette fonction est appelée pour déterminer si un fichier ou un message doit être accepté ou ignoré par le module. Le module ne mémorise pas si une transmission a été ignorée et appelle cette fonction chaque fois qu’il voit une transmission. Le fichier n’est pas encore lu, vous ne pouvez donc décider qu’en fonction des métadonnées disponibles.

Paramètres :

EDITransmission

Un enregistrement de la table EDI Transmission avec les données connues à ce jour. Le dossier n’est pas encore écrit.

Si vous réagissez à cet événement, vous devez appeler la fonction suivante :

HandleAcceptTransmission(Result : Boolean;VAR EDITransmission : Record "ANVEDI Transmission")

Paramètres :

Result

Recevoir ou non la transmission. La valeur True signifie que vous voulez recevoir les données, la valeur False que vous voulez ignorer la transmission.

EDITransmission

Vous devez passer l’enregistrement de l’appel OnAcceptTransmission à ce paramètre.

CASE TRUE OF
  // ...
  CallbackSupport.OnAcceptTransmission(ANVEDITransmission):
    BEGIN
      // Ignore files with the name "FileList.txt"
      // Usually you also want to check the communication channel etc. to only run this for specific channels
      IF ANVEDITransmission."Tag 2" = 'FileList.txt' THEN BEGIN
        CallbackSupport.AcceptTransmission(FALSE. ANVEDITransmission);
      END ELSE BEGIN
        CallbackSupport.AcceptTransmission(TRUE. ANVEDITransmission);
      END;
    END;
  END;
END;
Exemple : OnAcceptTransmission

OnBeforeList

Ce code est appelé avant que le module ne recherche de nouvelles données. Cela peut être utilisé pour émettre une commande ou un script externe pour recevoir les fichiers, avant que le module ne recherche de nouvelles données.

Paramètres :

EDICommunicationChannel

Spécifie un enregistrement de données du tableau des EDI Communication Channel pour lequel de nouveaux messages doivent être recherchés.

Cet événement ne nécessite pas d’appel à une autre fonction car il ne supporte aucune valeur de retour.

OnAfterList

Ce code est appelé après que le module ait recherché de nouvelles données.

Paramètres :

EDICommunicationChannel

Spécifie un enregistrement de données de la table des EDI Communication Channel.

Cet événement ne nécessite pas d’appel à une autre fonction car il ne supporte aucune valeur de retour.

OnBeforeReceive

Cet événement est appelé avant qu’une transmission ne soit récupérée.

Paramètres :

EDITransmission

Spécifie un enregistrement de données de la table de EDI Transmission.

Cet événement ne nécessite pas d’appel à une autre fonction car il ne supporte aucune valeur de retour.

OnAfterReceive

Cet événement est appelé après la réception d’une transmission.

Paramètres :

EDITransmission

Spécifie un enregistrement de données de la table de EDI Transmission.

Cet événement ne nécessite pas d’appel à une autre fonction car il ne supporte aucune valeur de retour.

OnBeforeArchive

Cet événement est appelé avant qu’une transmission ne soit archivée.

Paramètres :

EDITransmission

Spécifie un enregistrement de données de la table de EDI Transmission.

Cet événement ne nécessite pas d’appel à une autre fonction car il ne supporte aucune valeur de retour.

OnAfterArchive

Cet événement est appelé après l’archivage d’une transmission.

Paramètres :

EDITransmission

Spécifie un enregistrement de données de la table de EDI Transmission.

Cet événement ne nécessite pas d’appel à une autre fonction car il ne supporte aucune valeur de retour.

OnBeforeDelete

Cet événement est appelé avant qu’une transmission ne soit supprimée.

Paramètres :

EDITransmission

Spécifie un enregistrement de données de la table de EDI Transmission.

Cet événement ne nécessite pas d’appel à une autre fonction car il ne supporte aucune valeur de retour.

OnAfterDelete

Cet événement est appelé après la suppression d’une transmission.

Paramètres :

EDITransmission

Spécifie un enregistrement de données de la table de EDI Transmission.

Cet événement ne nécessite pas d’appel à une autre fonction car il ne supporte aucune valeur de retour.

OnBeforeSend

Cet événement est appelé avant l’envoi d’une transmission.

Paramètres :

EDITransmission

Spécifie un enregistrement de données de la table de EDI Transmission.

En réagissant à cet événement, vous devez appeler la fonction :

HandleBeforeSendTransmission(Result, EDITransmission)
Result

S’il faut envoyer la transmission. La valeur True signifie que la transmission doit être envoyée.

EDITransmission

La transmission que vous avez reçue avec l’appel de l’événement.

OnComposeMessage

Cet événement est appelé lors de la composition d’une transmission.

Paramètres :

EDITransmission

Spécifie un enregistrement de données de la table de EDI Transmission.

Cet événement ne nécessite pas d’appel à une autre fonction car il ne supporte aucune valeur de retour.

OnAfterSend

Cet événement est appelé après l’envoi d’une transmission.

Paramètres :

EDITransmission

Spécifie un enregistrement de données de la table de EDI Transmission.

En réagissant à cet événement, vous devez appeler la fonction :

HandleAfterSendTransmission(Result, EDITransmission)
Result

Le résultat est actuellement ignoré.

EDITransmission

La transmission que vous avez reçue avec l’appel de l’événement.

OnReplacePlaceholder

Cette fonction est appelée lorsque l’on évalue une chaîne de caractères pouvant contenir des variables définies par l’utilisateur, comme un nom de fichier.

Vous trouverez un exemple ci-dessous :

If Placeholder = 'MyNumber' THEN BEGIN
    IF EDILinkedDocument.FINDSET THEN REPEAT
      RecID := EDILinkedDocument."Record ID";
      IF (RecID.TABLENO = DATABASE::"EDI Document") THEN BEGIN
        RecRef.GET(EDILinkedDocument."Record ID");
        RecRef.SETTABLE(EDIDocument);
        CallbackSupport.HandleReplacePlaceholder(TRUE, EDIDocument."System Document No.");
        EXIT;
      END;
    UNTIL EDILinkedDocument.NEXT = 0;
  
    CallbackSupport.HandleReplacePlaceholder(FALSE, '');
  END ELSE BEGIN
    CallbackSupport.HandleReplacePlaceholder(FALSE, '');
  END;
Exemple de code : OnReplacePlaceholder

Paramètres :

Placeholder

Le nom de la variable entre les parenthèses bouclées pour laquelle une valeur est recherchée.

Lorsque vous réagissez à cet événement, vous devez appeler la fonction :

CallbackSupport.HandleReplacePlaceholder(Result,Value)

Paramètres :

Result

Si vous voulez rendre une valeur. Si vous retournez True, vous devez spécifier une valeur pour la variable. Vous pouvez passer outre les variables du système.

Value

La valeur qui doit être utilisée.

OnError

Cet événement est appelé lorsqu’une erreur se produit dans la file d’attente de traitement.

Paramètres :

EDIProcessingQueue

Un exemple de la table EDI Processing Queue dont le traitement a échoué.

AfterProcess

Cet événement est appelé après le traitement d’une entrée dans la table EDI Processing Queue. Vous devez vérifier le statut de l’entrée passée et réagir en conséquence.

Paramètres :

EDIProcessingQueue

Un exemple de la table EDI Processing Queue qui a été traitée.

LookupLinkedDocument

Cette fonction est appelée à partir de la liste des documents liés, si l’utilisateur veut ouvrir la page de la carte. Il y a quelques pages prédéfinies dans le module et nous essayons de revenir à la page de recherche par défaut, au cas où cette fonction retournerait False.

LookupLinkedDocument(RecRef: RecordRef) : Boolean
RecRef

L’enregistrement pour lequel l’utilisateur veut ouvrir la page.

Valeur de retour

Une valeur booléenne. Renvoie la valeur True, si la page a été ouverte par cette fonction ; False sinon.

     CASE RecRef.NUMBER OF
       DATABASE::"Sales Header":
          BEGIN
            RecRef.SETTABLE(SalesHeader);
            PAGE.RUN(PAGE::"Sales Order", SalesHeader);
            EXIT(TRUE);
          END;
      END;
Exemple de code : Ouvrir la page de la carte pour la commande de vente

BeforeConvert

Cette fonction est appelée avant le lancement d’un mapping. L’appel se trouve dans la transaction de la base de données du mapping. Vous pouvez annuler l’exécution du mapping, avant même que celui-ci n’ait commencé, en retournant la valeur True. En général, nous ne recommandons pas d’utiliser cette fonction. Si vous souhaitez appeler un code personnalisé, veuillez utiliser soit la nouvelle fonction de CallbackRegistration, soit la fonction OnFunction.

AfterConvert

Cette fonction est appelée après qu’un mapping ait été terminé avec succès. L’appel se trouve dans la transaction de la base de données du mapping. En général, nous ne recommandons pas d’utiliser cette fonction. Si vous souhaitez appeler un code personnalisé, veuillez utiliser soit la nouvelle fonction de CallbackRegistration, soit la fonction OnFunction.

Dans Anveo EDI Connect 4.00, nous avons ajouté aux événements la fonction CallbackRegistration appelée OnError et AfterProcess. Veuillez utiliser la nouvelle fonctionnalité, si possible.

Références croisées

Vous pouvez définir votre propre logique de référencement. Cette fonctionnalité est appelée, lorsque le type de référence croisée est réglé sur callback. Souvent, nous recommandons d’utiliser des mappages au lieu d’un code de rappel personnalisé pour faciliter la lecture des mappages. Le code de référence croisée personnalisé est, de notre point de vue, plus difficile à maintenir.

ValidateCrossReferenceNumber

Vérifiez si un numéro de référence externe est valable.

cette fonction est dépréciée et ne doit pas être utilisée.

GetInternalNo

Renvoie un numéro interne à partir d’un numéro externe.

GetInternalNo(TableID: Integer; FieldNo: Integer; RelationTableID: Integer; RelationFieldNo: Integer; RelationTableView: Text[1024]; RelationTableViewPar1: Variant; VAR InternalNo: Code[20]; EDICrossReferenceType: Record 5327361; ExternalNo: Text[64]; EDIProject: Code[20]) : Boolean

GetExternalNo

Renvoie un numéro externe à partir d’un numéro interne.

GetExternalNo(TableID: Integer; FieldNo: Integer; RelationTableID: Integer; RelationFieldNo: Integer; RelationTableView: Text[1024]; RelationTableViewPar1: Variant; InternalNo: Code[20]; EDICrossReferenceType: Record 5327361; VAR ExternalNo: Text[64]; EDIProject: Code[20]) : Boolean

UpdateCrossReference

Est appelé si l’utilisateur tente de mettre à jour un renvoi.

UpdateCrossReference(TableID : Integer; FieldNo: Integer; RelationTableID: Integer; RelationFieldNo: Integer; RelationTableView: Text[1024]; RelationTableViewPar1: Variant; InternalNo: Code[20]; EDICrossReferenceType: Record 5327361; CrossReference: Text[64]; EDIProject : Code[20])

Fonctions déchargées

La fonctionnalité ci-dessous n’est que partiellement mise en œuvre et n’est donc pas sécurisée. Nous recommandons d’utiliser les filtres de sécurité par défaut de Microsoft Dynamics NAV 2013R2 et de laisser les deux fonctions vides.

ApplyUserFilter

Permet de filtrer les données transmises de manière à ce que l’utilisateur puisse changer le filtre ultérieurement. L’utilisation de cette fonction n’est plus recommandée. La fonction pourrait être supprimée dans les versions plus récentes.

ApplySecurityFilter

Permet de filtrer les données de manière à ce que le filtre ne puisse pas être modifié par l’utilisateur. Cette fonction n’est pas appelée dans tous les cas. L’utilisation de cette fonction n’est plus recommandée. La fonction pourrait être supprimée dans les versions plus récentes.