Como impedir que os usuários criem conjuntos de entradas incorretos, quando não há uma maneira prática de verificar a entrada?
A cena
Modifico um pequeno pacote ERP escrito no Visual FoxPro. Uma parte da embalagem diz respeito a manifestos e faturas de caminhões de impressão a serem enviados com os motoristas em suas rotas de entrega. A rotina de impressão, quando não é alimentada como entrada, tenta imprimir tudo, resultando em resmas e resmas de papel da impressora sendo desperdiçadas em uma impressora de alta velocidade.
Não estou em condições de reescrever nenhum dos elementos da interface GUI, nem posso adaptar estruturas, kits de ferramentas ou outro código externo a ser usado nessa situação. Os motivos estão relacionados à política do escritório; por favor, não sugira que eu possa substituir a estrutura existente do ERP, pois não é uma opção para mim.
O problema
Os usuários estão em um ambiente de alta pressão e tempo crítico. Cada processo é medido em minutos ou até segundos, o que significa que tenho que minimizar o tempo de processamento o máximo possível. Devido a esse ambiente e às possíveis distrações, os usuários frequentemente ignoram as caixas de diálogo, pressionando a tecla [Enter], que faz com que o foco se mova rapidamente pelo formulário e, eventualmente, aponte para o botão de ação da caixa de diálogo de entrada, resultando em uma impressão automática. .
A entrada consiste em um intervalo de datas, intervalo de rota e intervalo de pedidos de vendas.
A entrada para o intervalo de datas não pode ser definida automaticamente como "data de hoje", pois é necessária uma impressão posterior frequente. Além disso, os usuários finais trabalham durante a meia-noite, ou seja, a rolagem de datas torna isso impraticável sem criar uma rotina que detecte automaticamente a alteração, etc.
A entrada para rotas não pode ser codificada, nem deduzida de rotas que já foram enviadas, porque são necessárias novas impressões (veja acima).
A entrada para pedidos de vendas só tem significado ao imprimir pedidos únicos ou intervalos específicos.
Portanto, francamente, não há maneira prática de validar informações .
O botão de ação que aciona a impressão não pode ser bloqueado. Qualquer sugestão de que uma caixa de diálogo de bloqueio seja colocada na frente do usuário será ignorada. Não tenho a liberdade de discutir por que isso não é uma opção, além do conceito já ter sido discutido em outras partes do site (de um ponto de vista diferente) e ter sido rejeitado.
O bloqueio de impressões quando todas as entradas estão vazias foi rejeitado como uma decisão de design, pois o software deve acomodar isso como um recurso.
Os usuários
Os usuários foram solicitados repetidamente a não fazer isso. Eles freqüentemente ignoram esse conselho. Desencadear esse evento infeliz não é algo que seus capatazes / gerentes abordem, portanto não há pressão para acabar com o comportamento.
A organização
Não tenho voz no fluxo de trabalho envolvido, apenas a modificação dos componentes de software existentes afetados por esse fluxo de trabalho.
O vendedor
O fornecedor obtém uma segunda fonte do pacote como uma instalação personalizada do fornecedor de software original. O fornecedor exige que todas as alterações de código sejam enviadas de volta para integração em sua base de código. Alterações significativas na arquitetura resultarão em aumento de custos futuros durante a migração de versões devido à extensa personalização envolvida; em alguns casos, os programadores me disseram que ignorariam completamente essas grandes mudanças e farão o que quiserem.
O software
Não tenho voz na seleção ou instalação do software, portanto, mudar a plataforma está fora de questão.
Em relação ao ambiente do software, cada fatura impressa é uma única chamada. Não há um recurso de impressão em lote, e por causa de como o recurso de impressão é integrado ao sistema (e algumas peculiaridades do idioma), não é possível criar um invólucro em lote em torno dessa API. Além disso, essa parte do programa chama outro programa que imprime a fatura, que por sua vez chama a API de imprimir um relatório, que imprime uma única fatura. Design horrível, eu sei.
Os formulários de entrada são uma combinação estranha de um cabeçalho de formulário que não possui caixas de entrada, mas pode conter outros elementos da GUI. As caixas de entrada são definidas em tempo de execução.
O objetivo
O software impedirá que os usuários imprimam erroneamente toda a papelada.
Como você resolveria esse problema?