Description des fonctions de surcharge mobilité
Fonctions et procédures implicites
Ce sont toutes les ouvertures utilisées mais non présentes dans le A5TTMOBISYNC.
Lors d’un parcours des enregistrements d’une table, nous utilisons les fonctions ReaderXXX_YYY (ou autre) des modules xxPMFICSQL.dhop ; par conséquent, de multiples ouvertures sont disponibles :
XXX_ReaderSelect_Av et XXX_ReaderSelect_Ap pour les fonctions ReaderSelect_XXX,
XXX_ReaderUpdate_Av pour les fonctions ReaderUpdate_XXX,
XXX_ReaderDelete_Av pour les fonctions ReaderDelete_XXX,
XXX_ReaderNext_Av et XXX_ReaderNext_Ap pour les fonctions ReaderNext_XXX,
XXX_Select_Av et XXX_Select_Av pour les fonctions Select_XXX/Seek_XXX,
XXX_Insert_Av pour les fonctions Insert_XXX,
XXX_Update_Av pour les fonctions Update_XXX,
XXX_Delete_Av pour les fonctions Delete_XXX.
Fonctions et procédures du A5TTMOBISYNC
Fonctions Xxx_Ecriture_Av (infinity vers mobile)
Ces fonctions servent à modifier l'enregistrement Xxx courant. Désormais, nous gérons le retour de ces fonctions :
'0' pour accepter l'enregistrement,
'1' pour le rejeter (ne pas l'écrire dans le fichier Xxx.txt, mais continuer la synchronisation).
Le paramètre idFic est l'identifiant du fichier dans lequel sera écrite la ligne, avec cet identifiant vous pourrez donc ajouter des lignes supplémentaires si besoin.
Fonctions Xxx_Ecriture_Av (mobile vers infinity)
Ces fonctions servent à modifier l'enregistrement Xxx courant. Désormais, nous gérons le retour de ces fonctions :
'0' pour accepter l'enregistrement,
'1' pour le rejeter (ne pas l'écrire dans le fichier Xxx.txt, mais continuer la synchronisation).
Dans ce sens de synchronisation, les fonctions concernées seront les suivantes :
IPAR_Ecriture_Av,
ENT_Ecriture_Av,
EAD_Ecriture_Av,
MOUV_Ecriture_Av,
ITXT_Ecriture_Av : texte lié à l’entête,
ITXT_MOUV_Ecriture_Av : texte lié à la ligne.
Fonctions Xxx_Lecture_Ap (mobile vers infinity)
Ces fonctions servent à accepter ou rejeter l'enregistrement Xxx courant : '0' pour accepter l'enregistrement,
'1' pour le rejeter (passer à l'enregistrement suivant de la liste).
En cas de retour '1', on pourra donc substituer le traitement standard à un traitement spécifique pour l'enregistrement Xxx courant ; en cas de retour '0', compléter ou exécuter le traitement standard.
Fonctions Xxx_Traitement_Av (mobile vers infinity)
Ces fonctions servent à compléter et/ou accepter/rejeter l'enregistrement Xxx courant avant écriture dans la base ERP :
'0' pour accepter l'enregistrement,
'1' pour le rejeter (passer à l'enregistrement suivant de la liste).
Fonctions SyncInfMob_DonneesXxx_Spe (infinity vers mobile)
Ces fonctions servent à choisir le traitement à effectuer :
'0' pour effectuer un traitement spécifique ou inhiber le traitement standard,
'1' pour arrêter la synchronisation et générer une erreur,
'2' pour effectuer le traitement standard (et éventuellement le compléter).
Autres fonctions
Les autres fonctions sont spécifiques à certains traitements, leur description, utilisation, étant décrites en commentaire dans le code source du A5TTMOBISYNC.dhsp.
Fonctions publiques MOPM000
Ce chapitre traitera des fonctions publiques du module MOPM000.dhop.
Constitution des fichiers TXT
Function Char Formater_Nombre(nombre)
Cette fonction permet de formater un nombre en format dans la base mobile : au maximum, le nombre aura 5 décimales comme ce qui suit 'XXXXXXXXXXXXXX.DDDDD'.
Function String Constituer_Ligne(type)
Cette fonction transforme un élément table en ligne à écrire dans le fichier txt, en passant le type d'entité en paramètre (voir les constantes de types dans le A5TTMOBISYNC.dhop).
Exemple : table tArticle. L'appel à cette fonction concaténera les valeurs de chaque champ en une ligne formatée comme suit :
Gestion de fichiers
Function Int Ouvrir_FichierW(&idfic, cheminSynchro, nomFichier)
Permet d'ouvrir le fichier nomFichier.txt (fonction Windows) depuis le répertoire cheminSynchro, la fonction affecte l'identifiant IdFic.
Function Int Fermer_FichierW(idFic)
Ferme le fichier identifié par l'identifiant idFic.
Function Int Ecrire_Ligne(&idFic, buffer)
Écrit le contenu du buffer (128k caractères max) dans le fichier identifié par idFic.
Function Int Ajouter_Ligne(&cptLigne, &buffer, &idFic, ligne, nbLigne, forcerAjout)
Ajoute une ligne ligne au buffer si le buffer n'est pas plein. Écrit le contenu du buffer dans le fichier identifié par IdFic si :
le buffer est plein,
on force l'ajout de son contenu (forcerAjout = TRUE).
Divers
Function Int Verifier_CaracteresPermis(chaine)
Vérifie que la chaîne passée en paramètre contient ou non des caractères interdits (ici, interdits en saisie lors de la création d'un répertoire) et renvoie :
'0' si aucun caractère interdit n'est détecté, '1' sinon.
Function Int Appeler_Ouverture(nomFonction, nbParametres, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, nomModule)
Cette fonction permet d'appeler une fonction/procédure nomFonction dans le module nomModule, en passant jusqu'à 12 paramètres différents :
si nomModule n'est pas renseigné, on cherchera la fonction dans MZ.MtCle,
pour passer x paramètres, affecter x à nbParametres et passer les x paramètres, la fonction renvoie :
'0' si la fonction est une procédure ou n'est pas trouvée, le retour de la fonction trouvée.
Fonctions de parcours de record sql génériques
Function Long ReaderOpen_RSQL(InstanceRS, &ReaderId)
Permet d'ouvrir un reader identifié par ReaderId pour une instance de record InstanceRS. La fonction renvoie toujours '0' et renseigne ReaderId.
Function Int ReaderClose_RSQL(InstanceRS, &ReaderId)
Permet de fermer un reader identifié par ReaderId pour une instance de record InstanceRS. La fonction renvoie toujours '0' et remet à zéro ReaderId ; elle supprime également toutes les conditions et les clauses posées sur le record Sql InstanceRS.
Function Int ReaderSelect_RSQL(InstanceRS, &ReaderId, nomIRS)
Exécute la requête sur le record sql InstanceRS. La fonction renvoie :
'1' si la requête échoue, '0' sinon.
Si le paramètre nomIRS est renseigné, deux ouvertures sont disponibles et peuvent être créées dans le module MZ.MtCle :
nomIRS_ReaderSelect_Av, nomIRS_ReaderSelect_Ap.
Function Int ReaderNext_RSQL(InstanceRS, ReaderId, nomIRS)
Passe à l'élément suivant du record sql InstanceRS. La fonction renvoie :
'1' si aucun autre élément n'est disponible, '0' sinon.
Si le paramètre nomIRS est renseigné, deux ouvertures sont disponibles et peuvent être créées dans le module MZ.MtCle :
nomIRS_ReaderNext_Av, nomIRS_ReaderNext_Ap.
Comment surcharger ?
Synchronisation infinity vers mobile
Initialiser des données avant synchronisation
Si vous voulez initialiser certaines données, certaines listes avant d'extraire les données dans les fichiers .txt, vous pourrez le faire dans la fonction SyncInfMob_DonneesDossier_Av.
Ajouter une table spécifique
Pour synchroniser une table spécifique, il est préconisé de le faire :
dans la fonction SyncInfMob_DonneesDossier_Av, si vous avez besoin de certaines de ces données dans la suite de l'extraction,
dans la fonction SyncInfMob_DonneesDossier_Ap dans le cas contraire.
Ajouter des informations spécifiques dans une ligne traitée en standard
Comme le décrit ce chapitre, il est possible de compléter, ignorer la ligne courante qui sera écrite dans un fichier .txt. Les données spécifiques devront être affectées aux champs InfoXXX, réservés distributeur.
Synchronisation mobile vers infinity
La synchronisation mobile vers infinity suit les étapes suivantes pour chaque dossier paramétré :
Intègre les fichiers présents dans le répertoire \[DOSSIER]\Export\
lance le batch d’export des données de la base mobile vers les fichiers .txt,
intègre ces fichiers.
L’intégration suit l’algorithme suivant :
récupération des données de chaque fichier dans une liste particulière, dont la structure des éléments correspond à celle des lignes dudit fichier,
traitement de ces listes (intégration),
génération de fichiers d’erreur (si présence d’erreurs) ayant même structure dans un répertoire \[DOSSIER]\Export\Error\AAAAMMJJHHMMSS.
RÉCUPÉRATION DES DONNÉES D’UN FICHIER NON GÉRÉ PAR LE STANDARD
Lors du parcours des fichiers présents dans le répertoire \[DOSSIER]\Export, si un des fichiers n’est pas reconnu, la fonction Recuperer_DonneesFichier est appelée.
Le nom complet du fichier est envoyé par un PingLocal('SYNC_NOMFICHIER', cheminOri). Vous pourrez donc effectuer un prétraitement sur ce fichier si besoin : par exemple, comme dans le standard, insérer les lignes dans une liste qui sera traitée par la suite.
INTÉGRER DES DONNÉES DE FICHIERS SPÉCIFIQUES
Pour intégrer les données de vos tables spécifiques, vous pouvez intervenir dans la fonction Integrer_DonneesSpecifiques, dont l’exécution s’effectuera après les fichiers gérés par le standard.