É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.
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 :
- Il est décoré de PXFilterable
- Utilise le BQL standard traditionnel et n’est pas encore mis à jour vers BQL Fluent
- 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.
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:
J’espère que vous avez trouvé ce post utile. Bon codage!