¿Cómo se evita que los usuarios creen conjuntos de entrada erróneos, cuando no hay una forma práctica de examinar la entrada?
La escena
Modifico un pequeño paquete ERP escrito en Visual FoxPro. Una parte del paquete se refiere a la impresión de manifiestos de camiones y facturas que se enviarán con los conductores en sus rutas de entrega. La rutina de impresión, cuando no se alimenta como entrada, intentará imprimir todo, lo que provocará que se desperdicien resmas y resmas de papel de impresora en una impresora de alta velocidad.
No estoy en condiciones de volver a escribir ninguno de los elementos de la interfaz GUI, ni puedo adaptar ningún marco, kit de herramientas u otro código externo para usar en esta situación. Las razones están relacionadas con la política de la oficina, no sugiera que pueda anular el marco ERP existente, ya que no es una opción para mí.
La cuestión
Los usuarios se encuentran en un entorno de alta presión y tiempo crítico. Cada proceso se mide en minutos o incluso segundos, lo que significa que tengo que minimizar el tiempo de procesamiento tanto como sea posible. Debido a este entorno y las posibles distracciones, los usuarios frecuentemente ignoran los cuadros de diálogo, presionando la tecla [Enter] que hace que el foco se mueva rápidamente a través del formulario y eventualmente aterriza en el botón de acción para el diálogo de entrada, lo que provoca que activen una impresión automática .
La entrada consta de un rango de fechas, un rango de ruta y un rango de orden de venta.
La entrada para el rango de fechas no se puede configurar automáticamente en "fecha de hoy", ya que se requiere una impresión posterior frecuente. Además, los usuarios finales trabajan durante la medianoche, es decir, el cambio de fecha hace que esto sea poco práctico sin manipular una rutina que detecte automáticamente el cambio, etc.
La entrada para las rutas no se puede codificar, ni se puede deducir de las rutas que ya se han enviado, ya que se requieren reimpresiones (ver arriba).
La entrada para pedidos de ventas solo tiene significado al imprimir pedidos individuales o rangos específicos.
Entonces, francamente, no hay una forma práctica de validar la entrada .
El botón de acción que activa la impresión no se puede bloquear. Cualquier sugerencia de que se coloque un cuadro de diálogo de bloqueo delante del usuario será ignorada. No tengo libertad para discutir por qué esto no es una opción, aparte del concepto que ya se ha discutido en otra parte del sitio (desde un punto de vista diferente) y fue rechazado.
El bloqueo de impresiones cuando todas las entradas están vacías se rechazó como una decisión de diseño ya que el software debe acomodar esto como una característica.
Los usuarios
Se ha pedido repetidamente a los usuarios que no hagan esto. Frecuentemente ignoran este consejo. Activar este desafortunado evento no es algo que sus capataces / gerentes abordarán, por lo que no hay presión para terminar con el comportamiento.
La organización
No tengo nada que decir sobre el flujo de trabajo involucrado, solo la modificación de los componentes de software existentes afectados por ese flujo de trabajo.
El vendedor
El proveedor obtiene el paquete en segundo lugar como una instalación personalizada del proveedor de software original. El proveedor requiere que se les envíen todos los cambios de código para su integración en su base de código. Los cambios significativos en la arquitectura darán lugar a mayores costos futuros durante las migraciones de versiones debido a la extensa personalización involucrada; en algunos casos, los programadores incluso me han dicho que ignorarán por completo los cambios tan grandes y que harán lo que quieran.
El software
No tengo nada que decir en la selección o instalación del software, por lo que cambiar la plataforma está fuera de discusión.
En cuanto al entorno del software, cada factura impresa es una sola llamada. No hay una instalación de impresión por lotes, y debido a cómo la instalación de impresión está integrada en el sistema (y también algunas peculiaridades del lenguaje) no es factible hacer un envoltorio de lote alrededor de esa API. Para colmo, esta parte del programa llama a otro programa que imprime la factura, que a su vez llama a la API de imprimir un informe, que imprime una sola factura. Diseño horrible, lo sé.
Los formularios de entrada son una combinación extraña de un encabezado de formulario que carece de cuadros de entrada, pero puede contener otros elementos de la GUI. Los cuadros de entrada se definen en tiempo de ejecución.
El objetivo
El software evitará que los usuarios impriman erróneamente toda la documentación.
¿Cómo resolverías este problema?