Inicio Blog Cómo añadir un estado al filtro de la aplicación móvil de Acumatica para el servicio de campo

Adición de un estado al filtro de la aplicación móvil de Acumatica para el servicio de campo

Troy Vars | 29 de noviembre de 2021

Adición de un estado al filtro de la aplicación móvil de Acumatica para el servicio de campo

Evaluar el problema y la solución

La aplicación Acumatica Mobile utiliza la pantalla FS400100 para generar el elemento de menú Lista de citas. Cuando los técnicos de campo visualizan esta pantalla, tienen dos opciones de filtro: intervalo de fechas y miembro del personal. En los filtros falta un estado para eliminar las citas en espera, completadas, cerradas o canceladas. El objetivo: eliminar el desorden para que los técnicos de campo puedan centrarse sólo 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 modificar simplemente la pantalla Lista de citas y añadir un estado. ¿Qué enfoque debemos adoptar para ello?

Evaluación del Código vigente

Lo primero que queremos hacer es navegar a la pantalla de Resumen de Cuenta FS400100 en Acumatica. Usando el práctico Elemento de Inspección, CTRL+ALT+CLICK, podemos identificar que el Código de Lógica de Negocio (BLC) es AppointmentInq y los dos DACs AppointmentInqFilter y FSAppointmentFSServiceOrder.

Adición de un estado al filtro de la aplicación móvil de Acumatica para el servicio de campo

Observe que el filtro de cabecera, DAC AppointmentInqFilter, no contiene el campo Estado en la sección de cabecera del filtro de la pantalla de consulta(FS400100). Por lo tanto, tendremos que añadirlo.

A continuación, tenemos que ver la consulta que filtrará los registros. Esta es la Vista de Citas declarada en el BLC utilizando el DAC FSAppointmentFSServiceOrder con algunas uniones a otras tablas.

Fíjate en lo siguiente:

  1. Está decorado con PXFilterable
  2. Utiliza el estándar tradicional BQL y aún no está actualizado a BQL Fluent
  3. No utiliza el nuevo IEnumberable

Soluciones de diseño

Opción 1

Añada el campo a una extensión DAC y anule la vista de selección Citas de la extensión de gráficos y añada 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 la vista de filtro existente:

.And<Current<AppointmentInqFilter.usrStatus>.IsNull

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

Segunda opción

Añadir el campo a una extensión DAC y anular la vista con una vista delegada y añadir el campo de filtro a la aplicación móvil.

Pros - Acumatica proporciona un ejemplo en el curso de formación T300, donde lo encontrará en la sección 11.7.

Aquí está el código:

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

Pruebas y errores

Al principio, tenía mi declaración actual al revés en la declaración Where And. Es decir, la coloqué en mi parte FSAppointmentFSServiceOrder de la cláusula Where. Esto creó una situación extraña en la que el código se compiló sin errores, pero al ejecutar el proceso Acumatica arrojó un error de Sintaxis no válida cerca de );. Esto me pareció un error SQL, así que pude rastrear el problema mirando el SQL generado a través de Request Profiler. Desde allí, pude ver en el parámetro P25 que mi UsrStatus estaba siendo rellenado pero mi Status de la cita estaba en blanco. Así que el SQL decía: and (@P25 = ). El valor que faltaba causó el error y se pudo solucionar corrigiendo la cláusula Where del método.

Además, durante las pruebas, me di cuenta de que me había olvidado de establecer el Commit Changes a true en el campo UsrStatus. Esto provocó que los registros no se actualizaran a menos que también se actualizara otro campo de filtro.

Actualizar la aplicación móvil

Por último, necesitamos añadir el campo de filtro a la Aplicación Móvil. La Lista de Citas se encuentra en la pantalla Resumen de Citas FS400100. Mirando el WSDL/MSDL, vemos que nuestro campo UsrStatus se añade al contenedor de Selección.

Adición de un estado al filtro de la aplicación móvil de Acumatica para el servicio de campo

Una línea de actualización rápida en la pantalla de Comandos para la Aplicación Móvil para Actualizar FS400100 y una actualización rápida en el Menú para forzar la actualización de la aplicación.

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

Y así de fácil, la aplicación móvil ahora incluye nuestro filtro:

Adición de un estado al filtro de la aplicación móvil de Acumatica para el servicio de campo

Adición de un estado al filtro de la aplicación móvil de Acumatica para el servicio de campo

 

 

Espero que esta entrada te haya resultado útil. ¡Feliz codificación!

Autor del blog

Troy es desarrollador y consultor senior de CS3 Technology, LLC. Su pasión por la programación comenzó a una edad temprana cuando su familia compró un PC Tandy y una guía para principiantes de BASIC. Un tutorial que utilizaba el comando PRINT con una serie de espacios y X para mostrar una imagen de Snoopy y Woodstock en la pantalla, le inculcó el amor por hacer que un PC hiciera cosas por él. Troy aprovechó su afición a la programación para pasar de empleado de almacén a gestor de relaciones comerciales a nivel ejecutivo. Por el camino, implantó SAP en 5 continentes y desarrolló varios portales web conectados mediante ABAP y BAPI. El Día de los Inocentes de 2015, comenzó el viaje de más de 5 años para ser un evangelista de Acumatica. En el camino, adquirió conocimientos de C#, .Net Framework y el poderoso potencial de personalización de Acumatica xRP Framework. Todo ello mientras completaba 15 implementaciones con pantallas personalizadas e integraciones en varios sitios de clientes. El talento único de Troy es que combina un alto nivel de perspicacia empresarial y conocimientos técnicos. Esto lo coloca a menudo en el papel de traductor y/o facilitador en entornos de grupo.

Reciba las actualizaciones del blog en su bandeja de entrada.