Evaluar el problema y la solución
Revisado: Nov, 2023
La aplicación móvil de Acumatica utiliza la pantallaFS400100para generar laopción de menú «Lista de citas». Cuando los técnicos de campo abren esta pantalla, disponen de dos opciones de filtro:intervalo de fechasymiembro del personal. En los filtros falta un estado que permita eliminarlas citasen espera,completadas,cerradas ocanceladas. El objetivo: eliminar el desorden para que los técnicos de campo puedan centrarse únicamente en las citas que necesitan.
Una solución rápida y sencilla sería exponer una consulta genérica (GI) a la aplicación móvil con estos filtros. El problema es que la navegación GI en la aplicación móvil carece de la misma funcionalidad que tiene el núcleo de Acumatica, a saber, poder abrir la pantalla de citas transaccionales cuando se muestra.
Una opción mejor es simplemente modificar lapantalla «Lista de citas»y añadir un estado. ¿Qué enfoque deberíamos adoptar para hacerlo?
Evaluación del Código vigente
Lo primero que queremos hacer es acceder a la pantalla«Resumen de la cuenta» (FS400100) en Acumatica. Mediante la práctica función «Inspeccionar elemento» (CTRL+ALT+CLIC), podemos identificar que el código de lógica de negocio (BLC) es «AppointmentInq» y que los dos DAC son «AppointmentInqFilter» y «FSAppointmentFSServiceOrder».
Fíjate en que el filtro de cabecera, DACAppointmentInqFilter,no incluye elcampo «Status»en la sección de cabecera del filtro de la pantalla de consulta (FS400100). Por lo tanto, tendremos que añadirlo.
A continuación, debemos analizar la consulta que filtrará los registros. Se trata de lavista «Citas», definida en el BLC mediante el DAC«FSAppointmentFSServiceOrder», con algunas uniones a otras tablas.
Fíjate en lo siguiente:
- Está decorado conPXFilterable
- Utiliza elBQLestándar tradicional y aún no se ha actualizado aBQL Fluent.
- No utiliza la nueva interfazIEnumerable
Soluciones de diseño
Opción 1
Añade el campo a una extensión DAC, anula la vista de selección«Citas»de la extensión del gráfico y añade el campo de filtro a la aplicación móvil.
Pros: Rápido y fácil de hacer... Contras: Difícil de mantener ya que los cambios de versiones tienen que seguir el ritmo de los cambios de vista y no es el enfoque recomendado por Acumatica.
En esta opción, tendremos que añadir lo siguiente a lavista de filtro existente:
.And<Current<AppointmentInqFilter.usrStatus>.IsNull
,Or<Current<AppointmentInqFilterExt.usrStatus>.IsEqual<FSAppointmentFSServiceOrder.status>>
Segunda opción
Añade el campo a una extensión DAC, sustituye la vista por unavista delegaday añade el campo de filtro a la aplicación móvil.
Ventajas: Acumatica ofrece un ejemplo en el curso de formaciónT300; lo encontrarás en la sección 11.7. Código
Pruebas y errores
Al principio, tenía mi instrucción actual al revés en la cláusula«WhereAnd». Es decir, la coloqué en la parte«FSAppointmentFSServiceOrder»de la cláusula«Where». Esto provocó una situación extraña en la que el código se compilaba sin errores, pero al ejecutar el proceso, Acumatica arrojaba unerrorde sintaxis no válida cerca de «);». Me pareció un error de SQL, así que pude localizar el problema analizando el código SQL generado a través del«Request Profiler». A partir de ahí, pude ver en elparámetro P25 que mi«UsrStatus» se estabarellenando, pero que mi«Status»de la cita estaba en blanco. Así pues, el SQL decía:«and (@P25 = )». El valor que faltaba provocó el error y se pudo solucionar corrigiendo la instrucción de la cláusula«Where»en el método.
Además, durante las pruebas, me di cuenta de que se me había olvidado establecer la opción«Commit Changes» en«true»para el campo«UsrStatus». Esto provocaba que los registros no se actualizaran a menos que también se actualizara otrocampo de filtro.
Actualizar la aplicación móvil
Por último, debemos añadir elcampo de filtroa la aplicación móvil. Lalista de citasse encuentra en la pantalla«Resumen de citas» (FS400100). Al consultar elWSDL/MSDL,vemos que nuestro campo«UsrStatus»se ha añadido al contenedor «Selection».

Una línea de actualización rápida en la pantalla «Comandos» de la aplicación móvil para actualizar el FS400100 y una actualización rápida del menú para forzar la actualización de la aplicación.
Y así de fácil, la aplicación móvil ahora incluye nuestro filtro:
Espero que esta entrada te haya resultado útil. ¡Feliz codificación!