Accueil Blog (en) Ajout d’un statut au filtre d’application mobile Acumatica pour le service sur le terrain

Ajout d’un statut au filtre d’application mobile Acumatica pour le service sur le terrain

Troy Vars | 29 novembre 2021

Ajout d’un statut au filtre d’application mobile Acumatica pour le service sur le terrain

Évaluation du problème et de la solution

L’application mobile Acumatica utilise l’écran FS400100 pour générer l’élément de menu Liste de rendez-vous. Lorsque field techs affiche cet écran, ils ont deux options de filtre: plage de dates et membre du personnel. Il manque dans les filtres un état à supprimer en attente, terminé, fermé ou annulé les rendez-vous. L’objectif: éliminer l’encombrement afin que les techniciens de terrain puissent se concentrer uniquement sur les rendez-vous dont ils ont besoin.

Une solution rapide et facile serait d’exposer une enquête générique (GI) à l’application mobile avec ces filtres. Le problème est que la navigation GI sur l’application mobile n’a pas la même fonctionnalité que le noyau Acumatica a, à savoir être en mesure d’ouvrir l’écran de rendez-vous transactionnel lorsqu’il est affiché.

Une meilleure option consiste simplement à modifier l’écran Liste de rendez-vous et à ajouter un statut. Quelle approche allons-nous adopter à cet égard?

Évaluation du code existant

La première chose que nous voulons faire est de naviguer vers l’écran Résumé du compte FS400100 dans Acumatica. À l’aide de l’élément dandy Inspect de la main, CTRL + ALT + CLIC, nous pouvons identifier le code de logique métier (BLC) est AppointmentInq et les deux DAC AppointmentInqFilter et FSAppointmentFSServiceOrder.

Ajout d’un statut au filtre d’application mobile Acumatica pour le service sur le terrain

Notez que le filtre d’en-tête, DAC AppointmentInqFilter, ne contient pas le champ État dans la section d’en-tête du filtre de l’écran de demande (FS400100).  Par conséquent, nous devrons 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 le BLC à l’aide du DAC FSAppointmentFSServiceOrder avec quelques jointures à d’autres tables.

Notez ce qui suit :

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

Solutions de conception

Première option

Ajoutez le champ à une DAC d’extension et remplacez la vue de sélection Rendez-vous à partir de l’extension graphique et ajoutez le champ de filtre à l’application mobile.

Avantages: Rapide et facile à faire... Inconvénients: Difficile à maintenir car les modifications de version doivent suivre les changements de vue et ce n’est pas l’approche recommandée par Acumatica.

Dans cette option, nous devrons ajouter le follwing à la vue de filtre existante:

.And<Current<AppointmentInqFilter.usrStatus>.IsNull

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

Deuxième option

Ajoutez le champ à une DAC d’extension et remplacez la vue par une vue déléguée & Ajoutez le champ de filtre à l’application mobile

Avantages – 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 & Gotchas

Au début, j’avais ma déclaration actuelle dans le mauvais sens dans la déclaration Where And .  C’est-à-dire que je l’ai placé sur ma partie FSAppointmentFSServiceOrder de la clause Where . Cela a créé une situation étrange où le code compilé sans erreur, mais lors de l’exécution du processus, Acumatica a jeté une syntaxe non valide près de); erreur. Cela m’a semblé être une erreur SQL, j’ai donc pu retracer le problème en regardant le SQL généré via le Profileur de demande. De là, je pouvais voir dans le paramètre P25 que mon UsrStatus était en cours de remplissage, mais mon statut du rendez-vous était vide. Donc SQL lire: et (@P25 = ). La valeur manquante est à l’origine de l’erreur et peut être corrigée en corrigeant l’instruction de clause Where dans la méthode.

De plus, lors des tests, j’ai remarqué que j’avais oublié de définir les modifications de validation sur true sur le champ UsrStatus . Les enregistrements n’ont donc pas été actualisés à moins qu’un autre champ de filtre ne soit également mis à jour.

Mettre à jour l’application mobile

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

Ajout d’un statut au filtre d’application mobile Acumatica pour le service sur le terrain

Une ligne de mise à jour rapide sur l’écran 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 juste comme ça, l’application mobile comprend maintenant notre filtre:

Ajout d’un statut au filtre d’application mobile Acumatica pour le service sur le terrain

Ajout d’un statut au filtre d’application mobile Acumatica pour le service sur le terrain

 

 

J’espère que vous avez trouvé ce post utile.  Bon codage!

Auteur du blog

Troy est développeur et consultant principal pour CS3 Technology, LLC. Sa passion pour la programmation a commencé à un âge précoce lorsque sa famille a pris un PC Tandy et un guide pour débutants à base. 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 pour lui. Troy a tiré parti de son amour de la programmation en passant d’un employé d’entrepôt à un gestionnaire des relations d’affaires de niveau exécutif. En cours de route, il a mis en œuvre SAP sur 5 continents et développé plusieurs portails Web connectés via ABAP et BAPI. Le poisson d’avril de 2015, il a commencé le voyage de plus de 5 ans pour être un évangéliste Acumatica. En cours de route, il a acquis des connaissances sur C #, .Net Framework et le puissant potentiel de personnalisation d’Acumatica xRP Framework. Tout en complétant 15 implémentations avec des écrans personnalisés et des intégrations à divers 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 d’animateur en groupe.

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