Évaluation du problème et de la solution
Révision : Nov, 2023
L'application mobile Acumatica utilise l'écran FS400100 pour générer l' élément de menu « Liste des 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 toutefois un filtre permettant d'exclure les rendez-vous en attente , terminés , clôturés ou annulés . L'objectif : simplifier la liste afin que les techniciens de terrain puissent se concentrer uniquement sur les rendez-vous importants.
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 solution consiste à modifier l' écran Liste des rendez-vous et à ajouter un statut. Quelle méthode adopter ?
Évaluation du code existant
La première étape consiste à accéder à l'écran « Résumé du compte » (FS400100) dans Acumatica. À l'aide de l'outil « Inspecter l'élément » ( CTRL+ALT+CLIC ), nous pouvons identifier le code de logique métier (BLC) : AppointmentInq, ainsi que les deux DAC : AppointmentInqFilter et FSAppointmentFSServiceOrder.
Veuillez noter 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 requête ( FS400100 ). Il faut donc l'ajouter.
Ensuite, on doit regarder la requête qui va filtrer les enregistrements. Il s'agit de la vue Appointments déclarée sur le BLC à l'aide du DAC FSAppointmentFSServiceOrder et de quelques jointures avec d'autres tables.
Notez ce qui suit :
- Il est décoré avec PXFilterable
- Utilise le langage BQL standard traditionnel et n'est pas encore mis à jour vers BQL Fluent.
- N'utilise pas la nouvelle interface IEnumberable
Solutions de conception
Première option
Ajoutez le champ à une extension DAC et remplacez la vue de sélection Rendez-vous de l'extension graphique, puis 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 les éléments suivants à la vue de filtre existante :
.And<Current<AppointmentInqFilter.usrStatus>.IsNull
,Or<Current<AppointmentInqFilterExt.usrStatus>.IsEqual<FSAppointmentFSServiceOrder.status>>
Deuxième option
Ajoutez le champ à une extension DAC et remplacez la vue par une vue déléguée . Ajoutez ensuite le champ de filtre à l'application mobile.
Avantages – Acumatica fournit un exemple dans le cours de formation T300 , où vous le trouverez dans la section 11.7. Code
Tests & Gotchas
Au départ, j'avais inversé l'ordre de ma requête dans la clause WHERE . Autrement dit, je l'avais placée dans la partie FSAppointmentFSServiceOrder de cette clause. Cela a créé une situation étrange : le code se compilait sans erreur, mais lors de l'exécution, Acumatica a généré une erreur de syntaxe invalide près de « ); » . Il me semblait qu'il s'agissait d'une erreur SQL, et j'ai pu la localiser en analysant le code SQL généré par le profileur de requêtes . J'ai alors constaté que le paramètre P25 indiquait que mon UsrStatus était rempli, mais que le statut du rendez-vous était vide. Le code SQL était donc : et (@P25 = ) . La valeur manquante était à l'origine de l'erreur, qui a pu être corrigée en rectifiant la clause WHERE dans la méthode.
De plus, lors des tests, j'ai constaté que j'avais oublié d'activer l'option « Valider les modifications » pour le champ UsrStatus . Par conséquent, les enregistrements ne s'actualisaient pas tant qu'un autre champ de filtre n'était pas également mis à jour.
Mettre à jour l’application mobile
Finalement, on doit ajouter le champ de filtre à l'application mobile. La liste des rendez-vous se trouve dans l'écran « Résumé des rendez-vous » (FS400100 ). En consultant le WSDL/MSDL, on constate que notre champ UsrStatus a bien été ajouté au conteneur de sélection.

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 .
Et juste comme ça, l’application mobile comprend maintenant notre filtre:
J’espère que vous avez trouvé ce post utile. Bon codage!