FJFrigo · Lançamentos · Transporte › 6-Requisição de Abastecimento · 266

Requisição de Abastecimento

O vale de combustível: quem abasteceu (funcionário), onde (posto), com qual veículo, quantos litros a que preço — e, na requisição de Entrega, as notas que o veículo levou. Cada regra traz a mensagem exata, quando dispara e de onde veio.

Tabelas: requisicao_abastecimento, requisicao_abastecimento_faturas Origem: não existe no sistema antigo (Harbour) — porte do ceif (RequisicaoAbastecimentoGrid/Form/FaturasMasterDetail). O código 266 foi dado no web; não há linha em opcao_sistema.

Bloqueia

Não grava. statuscode 400 com a frase abaixo, que a tela mostra como está.

Confirma

Pergunta antes de seguir. Nesta tela quem pergunta é sempre a própria tela (caixa do navegador); o servidor não tem pergunta.

Aviso

Passa, mas com um comportamento que surpreende quem está conferindo — ou é conferido só na tela.

Sem sistema antigo

A referência desta tela é o ceif, não um .prg. Onde se diz "no ceif", é o Java/Vaadin (D:\gitfj\ceif-master).

A

Grade e abrir

RequisicaoAbastecimentoService.listar / buscar
Aviso

(sem mensagem) — a grade mostra só a filial da sessão, as 3.000 mais novas

QuandoSempre: excluido = 0 AND idfilial = <filial da sessão>, ORDER BY id DESC LIMIT 3000. Não há filtro de período nem de outra filial.

OrigemA requisicao_abastecimento_grid.sql do ceif, com a filial da sessão.

Atençãoexcluido é bit(1) nesta tabela (nasceu no ceif), não o 'T'/'F' do legado.

Todos
Bloqueia

Requisição 100123 não encontrada.

QuandoAbrir, alterar, excluir, autorizar, imprimir ou digitalizar uma requisição que não existe ou já foi excluída.

OrigemexigirAlcance, antes de qualquer ação por id.

Todos
Bloqueia

Requisição 100123 é de uma filial fora do seu alcance.

QuandoA requisição é de uma filial que não é a da sessão nem está entre as filiais do usuário (usuario_filial).

OrigemDecisão do porte (FiliaisDoUsuario), como no 2322/2332/2333; o ceif não confere.

AtençãoRequisição de outra filial permitida abre por id (ver, imprimir, ver anexos), mas não aparece na grade (que é só da sessão) e não se altera daqui — ver a regra seguinte.

Todos
Bloqueia

Requisição 100123 é da filial 5 - entre na filial dela para que ela possa ser alterada.

QuandoAlterar, excluir, autorizar ou anexar/apagar anexos de requisição de uma filial do usuário que não é a da sessão. A última palavra muda com a ação: alterada, excluída, autorizada (anexos: alterada).

OrigemRegra do projeto: lançamento de outra filial não se altera nem se exclui. A busca de notas e de logísticas é da filial da sessão, e regravar pela sessão misturaria filiais.

Todos
Aviso

Requisição já autorizada - não pode ser alterada.

QuandoConferido só na tela: duplo clique numa linha autorizada; o botão Alterar já fica desabilitado nela. O servidor recusa com a mesma frase (seção B).

Todos
B

Incluir e alterar

RequisicaoAbastecimentoService.validar

A tela confere na mesma ordem e com as mesmas frases antes de enviar (data, tipo, funcionário, setor, veículo, posto, notas da Entrega); o servidor confere de novo, nesta ordem: data, funcionário, setor, veículo, posto, tipo, notas, valores. Gravação numa transação só (cabeçalho + notas).

Bloqueia

Informe a data da requisição.

QuandoData vazia. Grava à meia-noite (data_requisicao é datetime).

Origemdata_requisicao é NOT NULL; no ceif, @NotNull do modelo.

Todos
Bloqueia

Data da requisição inválida: 2026-9-1.

QuandoA data não é aaaa-mm-dd (curta ou impossível). Antes dava erro inesperado (500).

Todos
Bloqueia

Informe o funcionário.

QuandoSem funcionário (idemitente). A busca da tela é de emitente funcionário.

Todos
Bloqueia

Informe o setor.

QuandoSem setor (almoxarifado_setor).

Todos
Bloqueia

Informe o veículo.

QuandoSem veículo (veiculos).

Todos
Bloqueia

Informe o posto.

QuandoSem posto (idposto).

Todos
Bloqueia

O posto 100123 não está cadastrado como Fornecedor (tipo de emitente FOR).

QuandoO posto informado não tem o tipo de emitente FOR. A busca da tela só oferece FOR; o servidor confere de novo na gravação.

OrigemO combo do ceif filtra o tipo 2 (Fornecedor), só na tela.

Todos
Bloqueia

Selecione o tipo de requisição

QuandoTipo vazio ou fora de 1 Entrega, 2 Visita, 3 Administrativo. (A frase não tem ponto final, como no ceif.)

Todos
Bloqueia

Obrigatório escolher uma logística de entrega ou uma fatura

QuandoTipo 1 (Entrega) sem nenhuma nota na grade.

OrigemA regra do RequisicaoAbastecimentoForm.clickOk do ceif.

AtençãoVisita e Administrativo não exigem nota, mas gravam as que vierem — como o ceif, que grava a grade qualquer que seja o tipo (em central nenhuma requisição 2 ou 3 tem nota).

Todos
Bloqueia

Valores não podem ser negativos.

QuandoOdômetro, litros, valor do litro ou valor total negativo. Vazio grava zero.

OrigemDo porte; o ceif não confere.

Todos
Bloqueia

Requisição já autorizada - não pode ser alterada.

QuandoGravar a alteração de uma requisição com idusuario_autorizou preenchido.

Origemceif, warn.requisicao-abastecimento-ja-autorizado.

AtençãoNão há coluna autorizado: autorizada é ter quem autorizou.

Todos
Bloqueia

Registro id=100123 nao encontrado em 'requisicao_abastecimento'

QuandoO UPDATE não achou linha: a requisição foi excluída ou autorizada por outra pessoa entre a conferência e a gravação. Chega com statuscode 404.

Todos
Aviso

(sem mensagem) — o valor total é calculado, não digitado

QuandoSempre: total = litros × valor do litro, arredondado nas casas da moeda local da filial. O campo fica cinza; a tela mostra a conta e o servidor a refaz ao gravar, ignorando o total que vier. Abrir uma requisição do ceif já mostra o total recalculado (o ceif gravava o digitado).

Todos
C

Notas (faturas)

requisicao_abastecimento_faturas

A grade de notas é regravada inteira a cada Gravar (DELETE + INSERT). Nada referencia a tabela, então não se perde vínculo.

Aviso

(sem mensagem) — escolher uma logística SUBSTITUI a grade de notas

QuandoAo trocar o combo "Logística de entrega", a grade passa a ser uma linha por pedido da rota, com a venda viva dele, o peso líquido dos produtos tipo 1 e a placa da rota. As notas escolhidas antes somem, sem pergunta.

OrigemA faturamento-logistica-entrega-sem-agrupamento.sql do ceif. O combo só oferece logísticas da filial dos últimos 30 dias.

AtençãoPedido da rota sem venda viva não entra na grade (o ceif o trazia como linha vazia e a gravava). Medido: a logística 10206400 da filial 20 tem 26 pedidos e 25 notas.

Todos
Aviso

Nenhuma nota nos últimos 30 dias.

Quando"Buscar notas" só oferece vendas (faturamento_venda) da filial da sessão, com documento numerado, não excluídas, emitidas nos últimos 30 dias.

AtençãoA coluna Requisição mostra se a nota já está em outra requisição viva; a gravação a recusa (regra seguinte). Nota já na grade não entra de novo.

Todos
Bloqueia

A nota da venda 1020178973 (documento 000012345) já está na requisição 10207.

QuandoGravar com uma nota que ENTROU nesta gravação e já está em outra requisição viva (a de menor id é citada).

AtençãoNota já gravada nesta requisição passa: em central 355 notas estão em duas requisições do ceif (mesmo dia, veículo e posto), e regravar uma delas não pode ser barrado.

Todos
Bloqueia

Nota sem venda (documento 000012345) - escolha a nota pela busca de notas ou pela logística.

QuandoUma linha de nota chega sem a venda (idfaturamento). As buscas não oferecem mais esse caso; a recusa cobre quem chama a API direto.

Todos
Bloqueia

A nota da venda 1020178973 (documento 000012345) está repetida na requisição.

QuandoA mesma venda duas vezes na grade.

Todos
D

Excluir

Exclusão lógica
Confirma

Excluir a requisição 100123?

QuandoPergunta da tela, antes de enviar. O botão fica desabilitado em linha autorizada.

Todos
Bloqueia

Requisição já autorizada - não pode ser excluída.

QuandoExcluir requisição com quem autorizou preenchido.

Origemceif, Grid.clickDelete.

AtençãoA exclusão marca excluido = 1, usuário e data; as notas ficam penduradas no registro excluído.

Todos
E

Autorizar

Mão única
Confirma

Autorizar a requisição 100123?

QuandoPergunta da tela. O botão fica desabilitado sem a regra (dica: "Sem a regra AUTORIZAR_REQUISICAO_ABASTECIMENTO") e em linha já autorizada.

Todos
Bloqueia

Usuário não possui esse tipo de permissão [AUTORIZAR_REQUISICAO_ABASTECIMENTO].

QuandoO usuário não tem a regra (direta, pelo grupo do ceif ou pelo grupo de usuário). O master passa sempre.

OrigemA regra do ceif, já no catálogo (sistema CEIF).

Todos
Bloqueia

Requisição já autorizada.

QuandoAutorizar de novo. Não existe desautorizar, como no ceif.

Todos
Aviso

(sem mensagem) — autoriza quem está logado, sem senha

QuandoO ceif pede a senha de quem autoriza (compara em texto com usuario.senha); aqui vale a sessão, como no 241. Grava idusuario_autorizou e data_autorizacao.

Todos
F

Impresso, QR e link público

RequisicaoAbastecimentoPdf · /publico/requisicao-abastecimento

O impresso segue o RequisicaoAbastecimentoReport do ceif. O QR "Autenticidade" aponta para /publico/requisicao-abastecimento/<banco>/<id>/demonstrativo.pdf?c=<código>, aberto sem login por quem escaneia (posto, motorista). O código é um HMAC do banco + id com a chave app.jwt.secret.

Bloqueia

Link inválido.

QuandoHTTP 404, texto puro. Link público com código ausente ou errado, de outro id, ou com nome de banco fora de [A-Za-z0-9_]{1,64}. Conferido antes de tocar no banco — sem o código certo não se descobre nem se o banco existe.

OrigemDivergência do ceif, que pedia para redigitar o id que ia no próprio link.

Todos
Bloqueia

Requisição 100123 não encontrada ou excluída.

QuandoHTTP 404, texto puro. Link com código certo, mas a requisição foi excluída depois de impressa.

Todos
Bloqueia

(HTTP 500, sem corpo)

QuandoQualquer outra falha do link público. O motivo fica só no log do servidor ("Demonstrativo publico da requisicao … falhou").

AtençãoErro do link público nunca passa pelo tratador comum: não devolve pilha nem base a quem não tem sessão.

Todos
Aviso

(sem mensagem) — trocar o JWT_SECRET invalida os QR já impressos

QuandoO código do link é assinado com a mesma chave do login. Trocada a chave, todo QR impresso antes passa a dar 404.

Todos
Bloqueia

Falha ao gerar o impresso da requisição 100123

QuandoErro do OpenPDF ao montar o documento (erro inesperado — vem com o código de ocorrência). QR que não se gera não derruba: o impresso sai sem a caixa de autenticidade.

Todos
G

Digitalizar

scaneados do banco _digital
Bloqueia

Requisição já autorizada - os anexos não podem ser alterados.

QuandoAnexar ou apagar anexos de requisição autorizada (ver continua livre; a janela abre só para leitura). Também só na filial da sessão (seção A). Grava em scaneados do <banco>_digital, sigla ra (o CTipo.REQUISICAO_ABASTECIMENTO do ceif), tipo "1".

Todos
H

Permissões

Quem pode passar
Regra / controleO que libera
AUTORIZAR_REQUISICAO_ABASTECIMENTO (regra específica, sistema CEIF)O botão Autorizar. Já está no catálogo (448); em central não estava concedida a ninguém em 24/09/2026 — só o master autoriza. Conceder no 443, 444 ou 447.
MenuAbrir a tela, incluir, alterar, excluir, imprimir e digitalizar: basta ver o item no menu. Não há regra nomeada para isso.
ROLE_REQABASTECIMENTO (ceif)Não é lida. No ceif a tela inteira é desse papel (regra GERAL, controle_acesso_grupo_regra, grupos 113/ADM/CONS em central); a web não confere regra geral.
I

Como o erro chega na tela

Para o QA reproduzir e reportar

Recusa de regra: HTTP 200 com statuscode 400 e a frase, que a tela mostra em vermelho acima da grade (ou no rodapé do formulário). Registro sumido entre a leitura e a gravação: statuscode 404. As mensagens marcadas "só na tela" não chegam ao servidor. O link público responde HTTP de verdade: 404 com uma frase curta em texto puro, 500 sem corpo. Erro inesperado traz o código de ocorrência de 8 caracteres — copie-o no chamado.

J

Regras chumbadas no código

Esperadas — não abrir como defeito
O queValor
Tipos de requisição1 Entrega, 2 Visita, 3 Administrativo (o enum TipoRequisicao do ceif)
Janela de notas e logísticas oferecidas30 dias contados de hoje
Gradeno máximo 3.000 linhas
Placa da notacortada em 10 caracteres
Anexossigla ra, tipo "1"
K

Diferenças e decisões pendentes

O que muda em relação ao ceif
PontoSituação
origem das notassó faturamento_venda. O ceif oferece a UNION de venda, compra de carne e compra/saída de almoxarifado, mas idfaturamento tem chave estrangeira para faturamento_venda — as outras origens morreriam no INSERT
idtipo_faturamento da notagravado; as 1.550 linhas do ceif em central estão nulas
logística escolhidaa nota leva venda, tipo e cliente; o ceif levava só documento, peso e placa
coluna autorizadonão existe na tabela; o AutorizarRequisicaoAbastecimentoQuery do ceif manda uma
autorizarsem senha, pela sessão (o ceif pede a senha e compara em texto)
impressoa coluna das notas mostra o cliente (o ceif repetia o posto em toda linha), entra o funcionário, sem "R$"
link do QRassinado (HMAC); o ceif pedia para redigitar o id
transação e alcancegravação numa transação só; ver/imprimir pelas filiais do usuário, gravar/excluir/autorizar/anexar só na filial da sessão
valor totalcalculado no servidor (litros × valor do litro, casas da moeda local); o ceif grava o digitado
postoconferido FOR no servidor; no ceif só o combo filtra
notaspedido sem venda não entra (o ceif grava a linha vazia); nota nova que já está em outra requisição viva é recusada (o ceif deixa)
anexostravados em requisição autorizada (o ceif não trava)
Pendentegatear a tela inteira por uma regra nomeada (hoje só o menu), como o ROLE_REQABASTECIMENTO do ceif
testeexercitado em central (24 de 24, conexão que nunca confirma); não testado na tela

Nenhuma regra bate com essa busca. Tente um trecho menor da mensagem, ou limpe os filtros.