Correção da mistura de pedidos/vendas em estações online (mesmo caixa) nos aplicativos FACILITE Balcão e FACILITE Orçamento NT 0473/2026
Resumo da Nota Técnica
Em clientes que trabalham com servidor e estações online, ao efetuar vendas simultâneas pelos aplicativos FACILITE Balcão e/ou FACILITE Orçamento, os pedidos podiam misturar itens e/ou números quando as estações utilizavam o mesmo código de caixa. A abordagem aterior para evitar a mistura exigia configurar o ConfigECF para trabalhar off-line e definir um número de PDV diferente em cada estação (o que também definia caixas diferentes), porém muitos clientes desejam operar com apenas um caixa. Havia sido criado o parâmetro "4.18.764 - GERAÇÃO DE NUMERO DE PEDIDO POR GENERATORS E TRIGGERS" para tratar a numeração, mas isso não resolveu totalmente a mistura. A partir desta versão, a concorrência entre estações foi corrigida nos aplicativos FACILITE Balcão e FACILITE Orçamento, permitindo vendas simultâneas no mesmo caixa sem misturar pedidos, desde que o parâmetro 4.18.764 esteja ativado com Status igual a "Sim".
Detalhes da Nota Técnica
O problema ocorria com maior frequência quando, ao mesmo tempo, uma estação utilizava o FACILITE Orçamento e outra o FACILITE Balcão, compartilhando a mesma base Firebird e, em muitos casos, o mesmo código de caixa. Na análise foram identificados pontos que permitiam a mistura mesmo com a numeração por generators/triggers:
- Geração de número de pedido por MAX+1 sem bloqueio atômico entre estações (caminho legado, quando o parâmetro 4.18.764 não está ativado).
- Reaproveitamento automático de pedido aberto do mesmo caixa por outro computador/estação.
- Pré-reserva de número de pedido na abertura da tela (Timer/FormShow) antes da gravação efetiva do cabeçalho.
- No lançamento do produto, a estação podia assumir o pedido "em venda" do outro terminal com base no maior número do mesmo caixa, anexando itens no pedido alheio.
Com as correções aplicadas nesta versão nos projetos FACILITE Balcão e FACILITE Orçamento:
- O número do pedido passa a ser gerado de forma atômica somente no momento do insert do cabeçalho (generator/trigger), sem pré-consumo desnecessário na abertura da tela.
- Pedido aberto em um computador não é mais reaproveitado automaticamente por outro terminal, mesmo que compartilhem o mesmo código de caixa.
- No lançamento de produtos, a estação mantém o pedido da própria sessão e não assume o pedido em venda de outro computador pelo MAX do caixa.
- Os itens passam a ser gravados no pedido da sessão corrente, evitando cruzamento de itens entre Balcão e Orçamento.
- O cabeçalho do pedido registra a identificação do computador da estação, apoiando o controle de concorrência.
IMPORTANTE: O processo de não misturar os pedidos somente funcionará com o parâmetro "4.18.764 - GERAÇÃO DE NUMERO DE PEDIDO POR GENERATORS E TRIGGERS" ativado, ou seja, com Status = "Sim". Caso o parâmetro esteja com Status = "Não", permanece o caminho legado de numeração (MAX+1) e o risco de mistura entre estações continua.
A correção foi homologada em cenário de duas estações na mesma base, inclusive com o mesmo código de caixa, utilizando FACILITE Balcão e FACILITE Orçamento de forma simultânea, sem novos casos de mistura de pedidos/itens no checkpoint de testes.
Parâmetros Envolvidos
Através do aplicativo FACILITE Comércio, menu Utilitários, Parâmetros do Sistema, aba Parâmetros Gerais.
- "4.18.764 - GERAÇÃO DE NUMERO DE PEDIDO POR GENERATORS E TRIGGERS": deve estar com Status = "Sim". Este parâmetro é obrigatório para que a solução de não misturar pedidos entre estações funcione. Com Status = "Não", o sistema utiliza o caminho legado de numeração e a correção descrita nesta Nota Técnica não terá o efeito esperado.
Observação: não confundir o parâmetro 4.18.764 com o parâmetro 4.18.767, que não é o parâmetro de geração de número de pedido por generators e triggers.