FJFrigo · Cadastros · Faturamento/Exportação › 186 · 18E · 18F

Natureza de Operação, Locais de Embarque e Valorização de Inventário

Três cadastros de apoio do faturamento: o CFOP (186), os locais de embarque (18E) e a tabela de preço/custo por dia usada para valorizar estoque (18F). Cada regra traz a mensagem exata, quando dispara e o confronto com o sistema antigo.

Tabelas: natureza_operacao, local_embarque, tabela_preco_estoque Programas antigos: menu186.prg, menu18e.prg, menu18f.prg

Bloqueia

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

Confirma

Pergunta antes de seguir. Nestas três telas quem pergunta é sempre a própria tela.

Aviso

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

Nome do campo na frase

O 186 e o 18E usam o cadastro genérico: a frase de obrigatório traz o rótulo do campo como a tela o mostra (Descrição) e, entre parênteses, o nome do cadastro.

A

Regras comuns ao 186 e ao 18E

Cadastro simples

Os dois são entradas do catálogo de cadastros simples (/cadastro/simples/natureza-operacao e /cadastro/simples/locais-embarque). Não são por filial: a grade lista a tabela inteira, e a inclusão só registra a filial da sessão. A exclusão é física (DELETE), como no sistema antigo, mas recusada quando o registro está em uso — o sistema antigo não confere (ver as regras de cada tela).

Bloqueia

Campo obrigatório.

QuandoConferido só na tela: Descrição em branco. A mensagem aparece embaixo do campo.

Sistema antigo"Campo [Descrição] em Branco !" (menu186.prg:320, menu18e.prg:213).

Todos
Bloqueia

Informe Descrição (Natureza de operação (CFOP)).

QuandoO servidor confere o mesmo obrigatório: "Informe <rótulo do campo> (<cadastro>)." No 18E sai "Informe Descrição (Local de Embarque)."

Todos
Bloqueia

Registro id=1001234 nao encontrado em 'natureza_operacao'

QuandoAlterar ou excluir um id que não existe mais (apagado por outra janela). Chega com statuscode 404; no 18E a tabela é 'local_embarque'.

Todos
Confirma

(janela de exclusão) — confirmar Excluir

QuandoPergunta da tela: Excluir abre o registro em modo leitura com o botão de confirmar.

Todos
Aviso

(sem mensagem) — texto maior que a coluna é cortado

QuandoDescrição acima de 50 caracteres (186) ou 60 (18E), CFOP acima de 4: o servidor grava os primeiros, sem recusar.

Todos
Aviso

(sem mensagem) — descrição repetida é aceita

QuandoNenhum dos dois confere duplicidade, como no sistema antigo.

Todos
B

186 — Natureza de Operação (CFOP)

Tabela natureza_operacao

A tela edita só descrição (50, obrigatória) e CFOP (4, opcional) — decisão do usuário de 18/09/2026. As demais colunas (substituicao_tributaria, insento_icms/ipi/pis/cofins, gera_financeiro, idtipo_faturamento, ent_sai, baixa_estoque) ficam fora do INSERT e do UPDATE: na inclusão valem os defaults do banco, e a alteração preserva o que já está gravado. O rótulo desta opção em opcao_sistema ("Tabela de frete vivo") está errado; vale o programa.

Bloqueia

Natureza de operação (CFOP) em uso em 1520 tributação(ões) de item, 12 item(ns) de venda - não pode ser excluído.

QuandoExcluir uma natureza referenciada em faturamento_produto_trib, faturamento_venda, faturamento_venda_produtos, faturamento_compra_gado_produtos ou faturamento_cte (coluna idnatureza_operacao; onde a tabela tem excluido, só linha viva conta). A frase lista só as tabelas com uso (os números são de exemplo); os outros rótulos são "venda(s)", "item(ns) de compra de gado" e "CT-e(s)".

Sistema antigoNão confere: DELETE direto (menu186.prg:396), deixando a referência órfã.

AtençãoAs colunas não têm índice: a conferência varre as tabelas e leva alguns segundos (~6 s em central).

Todos
Aviso

(sem mensagem) — CFOP livre

QuandoO CFOP não é conferido (formato, dígitos, repetição). O mesmo CFOP pode estar em várias linhas — é o caso do cadastro atual, e o resto do sistema usa a de menor id.

Todos
Aviso

(sem mensagem) — isenções e ST não são editáveis aqui

QuandoO sistema antigo grava os marcadores de isenção, ST, gera financeiro e tipo de faturamento; esta tela não os mostra nem os grava. Natureza nova nasce com os defaults do banco ('F' nas isenções e na ST, 'T' em gera financeiro).

Todos
C

18E — Locais de Embarque

Tabela local_embarque

Só código e descrição (60, obrigatória). O catálogo de opções do banco chama esta opção de "Plantas (Depósitos)"; a tabela e o programa são "local de embarque".

Bloqueia

Local de Embarque em uso em 29 venda(s), 28 pedido(s) de venda - não pode ser excluído.

QuandoExcluir um local referenciado em faturamento_venda, faturamento_venda_ordem_venda, faturamento_transportadora, faturamento_transp_carne, faturamento_logistica_entrega ou filial (coluna idlocal_embarque; onde a tabela tem excluido, só linha viva conta). Os demais rótulos da frase: "faturamento(s) de transportadora", "frete(s) de carne", "logística(s) de entrega", "filial(is)".

Sistema antigoNão confere: DELETE direto (menu18e.prg:263).

Todos
D

18F — Valorização de Inventário

/cadastro/tabela-preco-estoque

Uma tabela por dia: para cada produto com código de indústria, valor de venda e dois custos (com e sem imposto). É lida como reserva de custo pelo Balanço (3199A), Inventário (3231), Inventário por Câmara (3233) e Pedido de Venda (2332), sempre a mais recente até a data, sem filtro de filial — por isso é tratada como tabela única da empresa. Gravar apaga a tabela do dia inteira, de qualquer filial, e reinsere só com a filial da sessão, numa transação. Só vão ao banco os produtos com valor de venda maior que zero. Não há validade, autorização nem mês fechado.

Bloqueia

Campo [Data] em Branco !

QuandoGravar sem a data (tela e servidor, a mesma frase).

Sistema antigoIgual (menu18f.prg:367).

Todos
Bloqueia

Produto 1004321 repetido na tabela.

QuandoO mesmo produto duas vezes entre os que têm valor de venda (só por chamada direta — a tela monta uma linha por produto). A chave da tabela é por produto.

Todos
Bloqueia

Valor negativo no produto 1004321.

QuandoProduto com valor de venda ou algum dos custos negativo. A conferência vem antes do descarte das linhas sem venda: linha com venda negativa é recusada, não some.

Todos
Bloqueia

Informe o dia da tabela.

QuandoExcluir sem a data (só por chamada direta; a grade sempre manda a data da linha).

Todos
Confirma

Excluir a tabela de 24/09/2026?

QuandoPergunta da tela, no Excluir da grade. Confirmado, apaga todas as linhas do dia (de qualquer filial) e responde "Tabela excluída (N linha(s))."

Todos
Aviso

(sem mensagem) — produto sem valor de venda não é gravado

QuandoLinha com venda zero é descartada, mesmo tendo custo preenchido: custo sozinho não segura a linha. O rodapé da janela avisa: "N de M produto(s) com valor de venda - só estes vão ao banco."

Sistema antigoIgual para zero (menu18f.prg:388).

Todos
Confirma

Já existe tabela de valorização em 24/09/2026. Gravar vai SUBSTITUIR a tabela desse dia. Continua?

QuandoIncluir num dia que já tem tabela. O servidor pergunta (409, campo substituirConfirmado); confirmado, apaga a do dia e grava a nova; negado, nada é gravado.

Sistema antigoSubstitui sem perguntar (menu18f.prg:377).

AtençãoNa alteração a data fica travada — trocar o dia de uma tabela exige incluir uma nova.

Todos
Aviso

(sem mensagem) — o que a tabela nova já traz preenchido

QuandoIncluir traz todos os produtos com código de indústria e a data de hoje. No Brasil o valor de venda nasce zero; nos demais países, o último preço de venda dos últimos 60 dias convertido para dólar (moeda 112). Os dois custos nascem sempre zero.

Todos
Aviso

(sem mensagem) — gravar alcança as outras filiais

QuandoA tabela do dia é apagada inteira, inclusive linhas gravadas por outra filial, e reinserida com a filial da sessão — como o sistema antigo (menu18f.prg:377 e :438).

Todos
E

Permissões

Quem pode passar

grep hUsuarioRegras nos três programas do sistema antigo devolve zero: não há regra nomeada a conceder no Acesso dos Grupos (444). Quem vê a opção no menu (grupo_permissao) inclui, altera e exclui.

F

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 janela mostra na linha de erro do formulário. Registro inexistente: statuscode 404. Os obrigatórios são conferidos primeiro na tela. Não há pergunta do servidor (409). Erro inesperado traz o código de ocorrência de 8 caracteres — copie-o no chamado.

G

Regras chumbadas no código

Esperadas — não abrir como defeito
O quêValor
18F — janela do último preço de venda (fora do Brasil)60 dias
18F — moeda da conversão do preço de venda sugerido112 (dólar)
18F — país sem sugestão de preçoBrasil (codicfj 004): nasce zero
tamanhos186: descrição 50, CFOP 4 · 18E: descrição 60
H

Diferenças e decisões pendentes

O que muda em relação ao sistema antigo
PontoSituação
186 — campos editadossó descrição e CFOP (decisão de 18/09/2026); o sistema antigo grava também isenções, ST, gera financeiro e tipo de faturamento
18F — transaçãoapagar o dia e reinserir numa transação só; o sistema antigo apaga e insere linha a linha, e uma falha no meio deixava o dia pela metade
18F — recusas novasproduto repetido e valor (venda ou custo) negativo são recusados; o sistema antigo não confere
18F — incluir num dia existentepergunta antes de substituir (24/09/2026); o sistema antigo substitui calado
186 e 18E — exclusão em usorecusada (24/09/2026), pelas tabelas que apontam para o registro; o sistema antigo apaga e deixa a referência órfã
testenão testado na tela nesta conferência

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