Accueil Blog Ajouter un statut au filtre de l'application mobile Acumatica pour le service extérieur

Ajouter un statut au filtre de l'application mobile Acumatica pour le service extérieur

Troy Vars | 29 novembre 2021

Ajouter un statut au filtre de l'application mobile Acumatica pour le service extérieur

Évaluer le problème et la solution

L'application Acumatica Mobile utilise l'écran FS400100 pour générer l'élément de menu Liste de rendez-vous. Lorsque les techniciens de terrain affichent cet écran, ils disposent de deux options de filtrage : plage de dates et membre du personnel. Il manque aux filtres un statut permettant de supprimer les rendez-vous en attente, terminés, clôturés ou annulés. L'objectif : éliminer le désordre pour que les techniciens de terrain puissent se concentrer sur les rendez-vous dont ils ont besoin.

Une solution rapide et facile serait d'exposer une demande générique (IG) à l'application mobile avec ces filtres. Le problème est que la navigation de l'IG sur l'application mobile n'a pas la même fonctionnalité que celle du noyau d'Acumatica, à savoir la possibilité d'ouvrir l'écran de rendez-vous transactionnel lorsqu'il est affiché.

Une meilleure option consiste à modifier simplement l'écran Liste des rendez-vous et à ajouter un statut. Quelle est l'approche à adopter pour ce faire ?

Évaluation du code existant

La première chose à faire est de naviguer vers l'écran Account Summary FS400100 dans Acumatica. En utilisant le très pratique Inspect Element, CTRL+ALT+CLICK, nous pouvons identifier le Business Logic Code (BLC) AppointmentInq et les deux DACs AppointmentInqFilter et FSAppointmentFSServiceOrder.

Ajouter un statut au filtre de l'application mobile Acumatica pour le service extérieur

Remarquez que le filtre d'en-tête, DAC AppointmentInqFilter, ne contient pas le champ Status dans la section d'en-tête du filtre de l'écran d'interrogation(FS400100). Nous devons donc l'ajouter.

Ensuite, nous devons examiner la requête qui filtrera les enregistrements. Il s'agit de la vue Rendez-vous déclarée sur la BLC qui utilise le CED FSAppointmentFSServiceOrder avec quelques jointures vers d'autres tables.

Remarquez ce qui suit :

  1. Il est décoré de PXFilterable
  2. Utilise le standard traditionnel BQL et n'est pas encore mis à jour vers BQL Fluent
  3. N'utilise pas la nouvelle version de IEnumberable

Solutions de conception

Première option

Ajouter le champ à une extension DAC et remplacer la sélection de l'affichage des rendez-vous à partir de l'extension graphique et ajouter le champ de filtrage à l'application mobile.

Avantages : Rapide et facile à réaliser... Inconvénients : Difficile à maintenir car les changements de versions doivent suivre les changements de vues et ce n'est pas l'approche recommandée par Acumatica.

Dans cette option, nous devrons ajouter les éléments suivants à la vue de filtre existante :

.And<Current<AppointmentInqFilter.usrStatus>.IsNull

,Or<Current<AppointmentInqFilterExt.usrStatus>.IsEqual<FSAppointmentFSServiceOrder.status>>

Deuxième option

Ajouter le champ à une extension DAC et remplacer la vue par une vue déléguée & Ajouter le champ de filtrage à l'application mobile

Pour - Acumatica fournit un exemple dans le cours de formation T300, où vous le trouverez à la section 11.7.

Voici le code :

GIST : https://gist.github.com/anaxetogrind/dc53fe2e62bfde79b9a36e0d26192818

Tests et problèmes

Au départ, j'avais inversé ma déclaration courante dans la déclaration Where And. En d'autres termes, je l'ai placée dans la partie FSAppointmentFSServiceOrder de la clause Where. Cela a créé une situation étrange où le code a été compilé sans erreur, mais lors de l'exécution du processus, Acumatica a lancé une erreur de syntaxe invalide près de ) ;. Cela m'a semblé être une erreur SQL, et j'ai donc pu retracer le problème en regardant le code SQL généré via le Request Profiler. De là, j'ai pu voir dans le paramètre P25 que mon UsrStatus était renseigné mais que mon Status du rendez-vous était vide. Le code SQL se lisait donc comme suit : et (@P25 = ). La valeur manquante était à l'origine de l'erreur et pouvait être résolue en corrigeant la clause Where dans la méthode.

Par ailleurs, au cours des tests, j'ai remarqué que j'avais oublié d'attribuer la valeur " true " au champ " UsrStatus" dans la case " Commit Changes". De ce fait, les enregistrements n'étaient pas actualisés à moins qu'un autre champ de filtre ne soit également mis à jour.

Mise à jour de l'application mobile

Enfin, nous devons ajouter le champ de filtre à l'application mobile. La liste des rendez-vous se trouve dans l'écran de résumé des rendez-vous FS400100. En regardant le WSDL/MSDL, nous voyons que notre champ UsrStatus est ajouté au conteneur Selection.

Ajouter un statut au filtre de l'application mobile Acumatica pour le service extérieur

Une ligne de mise à jour rapide sur l'écran des commandes de l'application mobile pour mettre à jour FS400100 et une mise à jour rapide du menu pour forcer la mise à jour de l'application.

GIST: https://gist.github.com/anaxetogrind/9862b713ed15116d5cb5194a9e4ea988

Et c'est ainsi que l'application mobile intègre désormais notre filtre :

Ajouter un statut au filtre de l'application mobile Acumatica pour le service extérieur

Ajouter un statut au filtre de l'application mobile Acumatica pour le service extérieur

 

 

J'espère que ce billet vous a été utile. Bon codage !

Auteur du blog

Troy est développeur et consultant principal pour CS3 Technology, LLC. Sa passion pour la programmation a commencé dès son plus jeune âge, lorsque sa famille a acheté un PC Tandy et un guide d'initiation à BASIC. Un tutoriel qui utilisait la commande PRINT avec une série d'espaces et de X pour afficher une image de Snoopy et Woodstock à l'écran, lui a inculqué l'amour de faire faire des choses à un PC. Troy a mis à profit son amour de la programmation en passant du statut d'employé d'entrepôt à celui de directeur des relations commerciales. Au cours de son parcours, il a mis en œuvre SAP sur cinq continents et a développé plusieurs portails web connectés via ABAP et BAPI. Le jour du poisson d'avril 2015, il a commencé son voyage de plus de 5 ans pour devenir un évangéliste Acumatica. En cours de route, il a acquis des connaissances en C#, .Net Framework, et le puissant potentiel de personnalisation d'Acumatica xRP Framework. Tout en réalisant 15 implémentations avec des écrans personnalisés et des intégrations sur différents sites clients. Le talent unique de Troy est qu'il combine un haut niveau de sens des affaires et de connaissances techniques. Cela le place souvent dans le rôle de traducteur et/ou de facilitateur dans les groupes.

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