Introducción
Hace años, el proceso de aprobación consistía en que los trabajadores pasaban un formulario en papel por la planta para obtener la aprobación necesaria para completar los procesos empresariales. Normalmente, iban en sobres de correo entre empresas, pero los casos urgentes se llevaban a mano a través del proceso. En un caso, un cliente convocaba a todas las partes interesadas de un proceso a una reunión semanal para revisar muchas solicitudes y aprobarlas o rechazarlas como una junta de revisión. Como se puede imaginar, estos procesos de aprobación en papel y las reuniones semanales eran excepcionales para ralentizar la toma de decisiones y la adquisición de material.
Avancemos unos años (o décadas) hasta Acumatica ERP. Con un sólido motor de aprobación, el papel ha sido sustituido por aprobaciones electrónicas agilizadas con notificaciones, aprobación a través de navegador o aplicación móvil y toma de decisiones que se ejecuta a la velocidad del negocio. El motor de aprobación se puede aprovechar en pantallas personalizadas y se pueden definir varias condiciones para automatizar determinadas aprobaciones y rechazos en función de los requisitos empresariales.
Si bien la aprobación electrónica dista mucho de ser una novedad en la era actual de la informática digital, los procesos empresariales no siempre son tajantes cuando se trata de aprobaciones. Algunos procesos empresariales pueden requerir una revisión periódica, y sólo las recomendaciones de cambio deben enviarse para su aprobación. El reto consiste en diferenciar entre un documento "revisado" y un documento "aprobado" o "rechazado".
Caso práctico
SETECH Supply Chain Solutions gestiona los materiales indirectos de sus clientes. El núcleo de sus servicios es Planificar cada pieza. Este proceso empresarial básico requiere que cada artículo del inventario se revise periódicamente para garantizar que la disponibilidad de los materiales se ajusta a las necesidades de sus clientes. El requisito de negocio establece que un plan que ha sido revisado debe tener el estado Revisado, pero los planes presentados para su aprobación deben seguir el proceso de aprobación normal que da como resultado el estado Aprobado o Rechazado. Dado que el proceso de aprobación estándar, cuando está activado, da como resultado Aprobado o Rechazado, se necesitaba una personalización para permitir omitir condicionalmente el proceso de aprobación y establecer el estado en un tercer estado denominado Revisado. El proceso de aprobación estándar busca un mapa de aprobación y crea automáticamente un registro en la pestaña Detalles de aprobación, por lo que incluso un plan marcado como Revisado tendría un registro de aprobación huérfano, lo que resultaba engañoso. También es importante tener en cuenta que la versión en uso es Acumatica ERP 2021 R1.
Mientras que el nuevo motor de flujo de trabajo cambia fácilmente el estado a Revisado, evitar que el registro de aprobación quede huérfano requiere algo de codificación creativa.
Solución
En primer lugar, hay que definir los campos DAC para apoyar el proceso de aprobación. Fíjese en los campos estándar " Retenido", " Aprobado" y " Rechazado". Ahora note la adición de un campo extra llamado RequestApproval que se establecerá de acuerdo al valor del registro Setup (de una pantalla de Preferencias ) habilitando o deshabilitando las aprobaciones. Este campo será utilizado por el flujo de trabajo en la pantalla personalizada para determinar programáticamente si las condiciones del registro requieren que se envíe una aprobación.
Campos DAC
GIST: https://gist.github.com/BrianMRO/4063f8214a301c36b1f3516dd96f0e63
A continuación, deben definirse las vistas. La vista principal para MyDAC se llama Documento, y la vista de Aprobación de Configuración para MySetupApproval se llama SetupApproval. Esta es la tabla que contiene los Mapas de Aprobación definidos en la configuración de aprobación de la pantalla. Dado que esta tabla contiene los mapas de aprobación que utilizará el motor de aprobación, se utiliza un constructor que devuelve null si el plan(MiDAC) no requiere aprobación según el campo RequestApproval. Este constructor es la "magia" que evita que un registro huérfano llene la pestaña Detalles de Aprob ación.
Configurar las vistas
GIST: https://gist.github.com/BrianMRO/d1cc58b6deff39ff48d4c08b8f645b90
A continuación, es necesario añadir el sistema de aprobación. El motor de aprobación se especifica mediante la inclusión de EPApprovalAutomation, que hace referencia a los campos retenido, aprobado y rechazado de MyDAC, así como a la tabla de aprobación de configuración MySetupApproval. Para mayor comodidad, se ha incluido el código CacheAttached para EPApproval como recordatorio de que estos campos deben especificarse para llevar los valores de MyDAC a la pantalla de aprobación estándar.
Añadir configuraciones de aprobación estándar
GIST: https://gist.github.com/BrianMRO/0d1a2baa173dad741300246cb519cae6
Por último, la aprobación opcional requiere establecer MyDAC.RequestApproval de acuerdo con la lógica empresarial cuando se ejecuta la acción RemoveHold. (RemoveHold se define en los nuevos flujos de trabajo de la interfaz de usuario para sustituir la desmarcación de la casilla de verificación de retención en versiones anteriores de Acumatica). En este caso de negocio, la modificación de ciertos valores requiere aprobación, pero otros valores pueden actualizarse como parte de una simple revisión.
Hacer que la aprobación sea opcional
GIST: https://gist.github.com/BrianMRO/1fb4359ee10b740c3d25d0b05e55f288
Observe el importante paso de actualizar la vista SetupApproval. Esta actualización hace que la lista de mapas de aprobación se complete o se vacíe. Es la falta de un mapa de aprobación para seleccionar lo que impide el registro huérfano en la pestaña Detalles de aprobación.
Para completar la configuración, se modificó el flujo de trabajo en la interfaz de usuario del proyecto de personalización para que pasara de Retener en función de la configuración del campo RequestApproval. A continuación se describen los estados y transiciones utilizados para controlar el flujo del registro de planificación. Al eliminar la retención, un plan marcado con RequestApproval = false pasará a Revisado, mientras que un plan con RequestApproval = true pasará a Pendiente de aprobación.
Resumen
Desde el aumento de los costes laborales hasta una inflación superior a la media en prácticamente todas las compras, el coste de los negocios parece estar disparándose más allá del punto de ruptura para muchas empresas. Aunque las finanzas siempre se han centrado en el control de costes, la gestión de costes a través de cada proceso empresarial nunca ha sido tan crítica. Afortunadamente, Acumatica proporciona un sólido flujo de trabajo de aprobación capaz de inyectar requisitos de aprobación conscientes de los costes y adaptados a cada empresa, que van desde todas las compras hasta sólo las que alcanzan un umbral especificado. Con un poco de personalización creativa, este marco robusto también se puede aplicar a otros procesos empresariales. En este post, mostré cómo se puede utilizar una simple personalización para gestionar un proceso de negocio principal en torno a la disponibilidad de inventario que aprovecha una aprobación de flujo de trabajo completa incluida en el cliente para los cambios o una ruta opcional de revisión interna cuando no se recomiendan cambios.
Espero que te haya resultado útil. ¡Feliz codificación!