FJFrigo · Lançamentos · Almoxarifado › E-Acompanhamento de Compras · 24E

Acompanhamento de Compras

Mostra cada item que precisa ser comprado — de CAN aprovada (24D) ou de Solicitação de Orçamento direta (24A) — e até onde ele chegou: orçamento (246), solicitação de compra (241) e comprador. Daqui também se autoriza ou desautoriza o orçamento. Cada regra traz a mensagem exata, quando dispara e a origem no ceif.

Tabelas: almoxarifado_can, almoxarifado_can_itens, almoxarifado_solicitacao_orcamento (+ _produtos, _servicos), almoxarifado_orcamento (+ _produtos, _servicos, _can_itens, _solicitacao_orcamento_itens), almoxarifado_solicitacao_compra (+ _orcamento, _orcamento_itens), usuario.tipo_comprador_almox, filial.controla_can_almox Programa antigo: não existe no legado — veio do ceif (AlmoxarifadoAcompanhamentoComprasGrid + almoxarifado_acompanhamento_compras_grid.sql) Rota: /lancamento/almoxarifado-acompanhamento-compras

Bloqueia

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

Confirma

Pergunta antes de seguir. Nesta tela a única pergunta é da própria tela (window.confirm), antes de enviar.

Aviso

Passa, mas com um comportamento que surpreende quem está conferindo, ou é conferido só na tela. No Autorizar em lote, os recusados aparecem como aviso: os demais são gravados.

Sem sistema antigo

Não há menu24e.prg em C:\FJFrigoConcepcion: a cadeia CAN → orçamento → SC é do ceif. A coluna "Origem" cita a classe do ceif.

A

Abrir e listar

Os filtros e o botão Atualizar

A tela abre com o período ontem .. hoje (como o ceif) e a filial da sessão. Filial, grupo, subgrupo, comprador e tipo de comprador vão ao servidor; Status e Pesquisa filtram só as linhas já carregadas, sem nova consulta.

Bloqueia

Você não tem permissão para o Acompanhamento de Compras [ALMOXACOMPANHAMENTOCOMPRAS].

QuandoListar ou autorizar sem a regra (nem como regra geral do grupo do ceif, nem como regra específica, nem master). A tela nem chega a listar: mostra no lugar da grade "Você não tem permissão para o Acompanhamento de Compras [ALMOXACOMPANHAMENTOCOMPRAS]. Peça a concessão ao seu grupo no ceif ou ao master." e desabilita o Atualizar.

Origem@RolesAllowed({"ROLE_ALMOXACOMPANHAMENTOCOMPRAS", "ROLE_MASTER"}) do AlmoxarifadoAcompanhamentoComprasGrid.

Todos
Aviso

Informe o período.

QuandoConferido só na tela: Atualizar com uma das datas vazia.

Todos
Bloqueia

Informe a data inicial.

QuandoChamada ao servidor sem data inicial.

Todos
Bloqueia

Informe a data final.

QuandoChamada ao servidor sem data final.

Todos
Bloqueia

Data inicial inválida: <valor>

QuandoData inicial fora do formato aaaa-mm-dd (só por chamada direta; o campo da tela é type="date"). A mesma frase existe para a final: "Data final inválida: <valor>".

Todos
Bloqueia

A data final não pode ser menor que a data inicial.

QuandoPeríodo invertido.

Todos
Bloqueia

Seu usuário não tem acesso a nenhuma filial.

QuandoListar ou autorizar com o usuário sem nenhuma filial em usuario_filial (nem a do cadastro).

Todos
Bloqueia

Você não tem acesso à filial <id>.

QuandoFilial escolhida fora das filiais do usuário (usuario_filial). O combo da tela só oferece as filiais da sessão; a frase aparece por chamada direta.

OrigemNão existe no ceif — lá qualquer filial é aceita (divergência, ver G).

Todos
Aviso

Seu usuário não tem tipo de comprador do almoxarifado definido (LOCAL, CORPORATIVO ou TODOS) - os itens de CAN não são mostrados. Peça ao suporte para definir.

Quandousuario.tipo_comprador_almox vazio e o usuário não é master. A grade vem só com os itens de SO direta (as origens de CAN recebem 1 = 2).

OrigemFiel ao ceif, que também esconde as linhas de CAN. A frase é nova (o ceif esconde calado).

AtençãoMaster sem tipo vale como TODOS aqui; no ceif ele também ficaria sem CAN. Em central, 3.078 usuários estão sem tipo.

Todos
Aviso

(sem mensagem) — o combo Tipo comprador fica travado

QuandoO usuário tem tipo LOCAL ou CORPORATIVO: o combo nasce com esse valor e não se troca, e o servidor ignora qualquer outro tipo pedido. Só quem tem TODOS (ou é master sem tipo) escolhe.

OrigemCeif (AlmoxarifadoAcompanhamentoComprasGrid).

AtençãoO tipo filtra almoxarifado_can_itens.tipo_comprador e o tipo de emitente do comprador do orçamento (LOCAL = 5, CORPORATIVO = 20). Orçamento sem comprador passa. As linhas de SO direta não têm tipo e aparecem em qualquer escolha.

Todos
Aviso

(sem mensagem) — com grupo ou subgrupo escolhido, os serviços somem

QuandoFiltro de grupo/subgrupo de produto preenchido: as origens CAN_SERVICO e SO_SERVICO não entram na consulta.

OrigemDivergência do ceif: lá o filtro só alcança os produtos e todos os serviços continuavam na grade.

Todos
Aviso

(sem mensagem) — o comprador só filtra itens de CAN

QuandoFiltro de comprador preenchido: ele corta as linhas de CAN (ao.idcomprador), mas as de SO direta continuam todas.

OrigemFiel ao ceif ({filtros} × {filtros_so} do almoxarifado_acompanhamento_compras_grid.sql).

Todos
B

O que a grade mostra

Para conferir uma linha contra o banco

São quatro origens numa UNION:

  • CAN_PRODUTO / CAN_SERVICO — item de CAN com decisao_compra APROVADO ou APROVADO_PARCIAL, item vivo, CAN não cancelada, período por data_reuniao, filial da CAN;
  • SO_PRODUTO / SO_SERVICO — item de SO autorizada (autorizado = 1 ou idusuario_autorizou preenchido), só em filial com controla_can_almox = 'F' (65 de 75 filiais em central), período pela data da SO.

Para cada item: o orçamento vivo que o cotou, só a cotação vencedora (a marcada vencedor; sem marcação, a de menor valor) e a SC ligada a ela. Status = do orçamento: Aprovado (tem idusuario_autorizou), Finalizado (tem idusuario_finalizou), Iniciado cotação (há vínculo) ou Pendente. "Data orçamento" é a do evento desse status. "Aprovação unidade" = SC com os dois autorizados (administrador e gerente).

Aviso

(sem mensagem) — o mesmo item em duas linhas

QuandoDuas cotações empatadas no menor valor, sem vencedor marcado: as duas aparecem.

OrigemFiel ao ceif (o aop_melhor só elimina valores maiores). Em central, 2 casos em 60 dias.

Todos
Aviso

(sem mensagem) — "Cód. SC" pode mostrar SC excluída

QuandoA grade liga a SC por almoxarifado_solicitacao_compra_orcamento_itens vivo, mas não filtra almoxarifado_solicitacao_compra.excluido. Uma SC excluída cujo vínculo de item continua vivo aparece como SC do item.

AtençãoVer G: o Autorizar confere o vínculo com SC por outro critério.

Todos
C

Autorizar / Desautorizar

Os dois botões da barra

Os botões gravam a autorização do orçamento (246) dos itens marcados: idusuario_autorizou, data_hora_autorizou e idusuario_alterou (desautorizar põe os dois primeiros a nulo). Autorizar leva só os itens com status Finalizado; desautorizar, os Aprovado. As conferências são refeitas no servidor, com o orçamento relido do banco, numa transação. O lote não para no primeiro recusado: os válidos são gravados e os demais voltam na mensagem de resultado.

Aviso

Nenhum item marcado tem status Finalizado com orçamento.

QuandoConferido só na tela: nenhum dos itens marcados (ou a linha ativa, sem marcação) tem o status que o botão usa. No Desautorizar a frase diz "… status Aprovado …".

OrigemCeif filtra pelo status da linha.

Todos
Confirma

Autorizar 3 orçamento(s)? Ao autorizar um item, todos os itens do mesmo orçamento ficam autorizados.

QuandoPergunta da tela, antes de enviar. O número conta orçamentos distintos, não itens. No Desautorizar a pergunta é própria: "Desautorizar 3 orçamento(s)? Todos os itens do mesmo orçamento voltam a Finalizado."

Todos
Bloqueia

Você não tem permissão para autorizar orçamentos [AUTORIZAR_ALMOX_ORCAMENTO_E_ACOMPANHAMENTO_ALMOX].

QuandoSem a regra (o master passa). No Desautorizar: "Você não tem permissão para desautorizar orçamentos [AUTORIZAR_ALMOX_ORCAMENTO_E_ACOMPANHAMENTO_ALMOX]." A tela já deixa os dois botões desabilitados, com a dica "Sem a regra AUTORIZAR_ALMOX_ORCAMENTO_E_ACOMPANHAMENTO_ALMOX".

OrigemA regra que a grade do Orçamento do ceif confere. A tela de acompanhamento do ceif não confere regra nenhuma.

Todos
Bloqueia

Selecione ao menos um item com orçamento.

QuandoChamada sem nenhum id de orçamento válido (a tela já barra antes, com a frase acima).

Todos
Aviso

<id>: orçamento não encontrado ou excluído

QuandoO orçamento não existe ou foi excluído entre a listagem e o clique. Aparece dentro de "N orçamento(s) alterado(s). Não alterados: …".

Todos
Aviso

<id>: orçamento sem filial

QuandoOrçamento sem filial gravada — não passa, já que não há como conferir o alcance.

Todos
Aviso

<id>: de uma filial a que você não tem acesso

QuandoOrçamento de filial fora das filiais do usuário.

OrigemNão existe no ceif.

Todos
Aviso

<id>: já tem solicitação de compra ligada

QuandoO orçamento tem SC viva ligada, por vínculo vivo, por produto, por serviço ou pelo cabeçalho (almoxarifado_solicitacao_compra_orcamento, o vínculo do 241). É o mesmo critério da coluna SC da grade (o vínculo do cabeçalho não aparece na grade). Vale para autorizar e desautorizar.

Origemtem_vinculo_sc do buscarItensSelecinadosGridJDBC (grade do Orçamento do ceif).

AtençãoA conferência não olha se o vínculo de item está excluído: um item de SC desvinculado (excluido = 1) de uma SC ainda viva continua travando. Em central são 32 vínculos assim. Ver G.

Todos
Aviso

<id>: já está autorizado

QuandoAutorizar um orçamento que já tem idusuario_autorizou.

Todos
Aviso

<id>: não está finalizado

QuandoAutorizar um orçamento sem idusuario_finalizou.

Todos
Aviso

<id>: não está autorizado

QuandoDesautorizar um orçamento sem idusuario_autorizou.

OrigemNo ceif o botão Desautorizar desta tela chama o método de autorizar (finalizarAutorizarOrcamento(ids, true, false)) — lá ele reautoriza. Corrigido aqui.

Todos
D

Permissões

Quem pode passar
RegraPara quêOnde se concede
ALMOXACOMPANHAMENTOCOMPRASabrir e listar a tela (e condição para autorizar)regra GERAL do ceif (controle_acesso_grupo_regra; em central nos grupos ALM_M, COMPRAS_SP e CONS), ou regra específica de mesmo nome, ou master
AUTORIZAR_ALMOX_ORCAMENTO_E_ACOMPANHAMENTO_ALMOXAutorizar e Desautorizarregra específica (Acesso dos Grupos 444 / usuário 443); master passa
usuario.tipo_comprador_almoxLOCAL/CORPORATIVO travam o tipo; vazio esconde as linhas de CANcadastro do usuário (não é regra)

O item de menu não tem opção em opcao_sistema (idOpcao: null), então aparece para todos; quem barra é a regra ALMOXACOMPANHAMENTOCOMPRAS. O RegraAcessoService não lê regra geral do ceif: a tela confere controle_acesso_grupo_regra direto.

E

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 na faixa vermelha acima da grade. O resultado do Autorizar (alterados e recusados) aparece na faixa cinza. As mensagens marcadas "conferido só na tela" não chegam ao servidor. Erro inesperado traz o código de ocorrência de 8 caracteres — copie-o no chamado.

F

Regras chumbadas no código

Esperadas — não abrir como defeito
O quêValorOnde
tipo de emitente do compradorLOCAL = 5, CORPORATIVO = 20AcompanhamentoComprasRepository.tiposEmitente (ids do cadastro tipo_emitente, como no ceif)
decisões que entramAPROVADO, APROVADO_PARCIAL; CAN <> 'CANCELADO'origens de CAN
período de aberturaontem .. hojetela (como o ceif)
G

Diferenças e decisões pendentes

O que muda em relação ao ceif
PontoSituação
alcance de filialsem filial escolhida, as filiais do usuário; o ceif lista o banco inteiro
tipo do compradorconferido por EXISTS; o LEFT JOIN emitente_tipo_emitente do ceif repetia a linha quando o comprador tinha mais de um tipo
períodofaixa meio-aberta; o ceif usa BETWEEN … 23:59:59
grupo/subgrupotira os serviços; no ceif eles ficavam todos
"Data orçamento"a do evento do status nas quatro origens; no ceif duas origens usam a data crua do orçamento
descrição completalida pelo TextoLegado (windows-1252); o CAST … utf8mb4 do ceif troca acento
master sem tipo de compradorvale TODOS; no ceif ficaria sem as linhas de CAN
Desautorizardesautoriza; no ceif o botão chama o método de autorizar
regra e vínculo com SC no Autorizarconferidos; a tela do ceif só olha o status da linha
SC na grade × SC no Autorizaro mesmo critério nos dois: só SC viva (sc.excluido = 'F') e vínculo vivo (ascoi.excluido falso; no do cabeçalho, asco.excluido <> 'T'). Corrigido em 24/09/2026 — antes a grade mostrava SC excluída e o Autorizar recusava por vínculo de item excluído
datas de abertura"hoje" é a data local (hoje() de utils/formato.js, que deixou de usar UTC em 24/09/2026)
testeexercitado contra central por harness só leitura (filtros, sem tipo, autorizar/desautorizar com rollback); não testado na tela

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