
Revisado: Nov, 2023
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 llegar al ERP de Acumatica. Gracias a un sólido motor de aprobaciones, el papel ha sido sustituido por un proceso de aprobaciones electrónicas optimizado que incluye notificaciones, la posibilidad de aprobar desde el navegador o una aplicación móvil, y una toma de decisiones que se adapta al ritmo del negocio. El motor de aprobaciones se puede integrar en pantallas personalizadas, y se pueden definir diversas condiciones para automatizar determinadas aprobaciones y rechazos según los requisitos de la empresa.
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 para sus clientes. El núcleo de sus servicios es el programa «Plan for Every Part». Este proceso empresarial fundamental exige que cada artículo en stock se revise periódicamente para garantizar que la disponibilidad de los materiales se ajuste a las necesidades de sus clientes.
El requisito empresarial establece que un plan que haya sido revisado debe pasar a tener el estado «Revisado», mientras que los planes presentados para su aprobación deben seguir el proceso de aprobación habitual, que da lugar a los estados «Aprobado» o «Rechazado ». Dado que el proceso de aprobación estándar, cuando está habilitado, da lugar a los estados «Aprobado» o «Rechazado», fue necesario realizar una personalización para permitir eludir de forma condicional el proceso de aprobación y establecer el estado en un tercer estado denominado «Revisado».
El proceso de aprobación estándar solicita un mapa de aprobación y crea automáticamente un registro en la pestaña «Detalles de la aprobación», por lo que incluso un plan marcado como «Revisado» tendría un registro de aprobación sin asignar, lo cual resultaba confuso. También es importante señalar que la versión utilizada 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, hay que definir las vistas. La vista principal de MyDAC se llama «Document», y la vista de aprobación de configuración de 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 para devolver null si el plan (MyDAC) no requiere aprobación según el campo RequestApproval.
Este constructor es la «clave» que evita que un registro huérfano aparezca en la pestaña «Detalles de la aprobació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, los costes empresariales parecen estar disparándose hasta superar el punto de ruptura para muchas empresas. Aunque el departamento financiero siempre se ha centrado en el control de costes, la gestión de los mismos en todos los procesos empresariales nunca ha sido tan crucial. Afortunadamente, Acumatica ofrece un sólido flujo de trabajo de aprobación capaz de incorporar requisitos de aprobación orientados al control de costes y adaptados a cada empresa, que abarcan desde todas las compras hasta solo aquellas que superan un umbral específico.
Con un poco de personalización creativa, este sólido marco también se puede aplicar a otros procesos empresariales. En esta entrada, he mostrado cómo se puede utilizar una sencilla personalización para gestionar un proceso empresarial fundamental relacionado con la disponibilidad de existencias, que aprovecha un flujo de trabajo completo de aprobación por parte del cliente para los cambios o una vía opcional de revisión interna cuando no se recomiendan cambios.
Espero que te haya resultado útil. ¡Feliz codificación!