DIF (Declaração de Inspeção Federal)
Declaração de Inspeção Federal (DIF)
Rotina de inspeção sanitária de carcaças no Frigosoft Coletor
Visão Geral do DIF
O DIF (Declaração de Inspeção Federal) é a tela do aplicativo de abate do Frigosoft (FrigosoftColetor) usada para registrar a inspeção sanitária de cada carcaça pelo Serviço de Inspeção Federal. Nessa tela, o operador informa a sequência da carcaça, registra ocorrências sanitárias encontradas, indica a parte do animal afetada e o destino que a carcaça deve receber, e realiza a pesagem antes e/ou depois da inspeção, conforme a configuração do produto ou da escala em uso.
Ao final da inspeção, o operador decide o resultado da carcaça: liberar, sequestrar ou condenar. Essa decisão gera automaticamente, em segundo plano, os registros de rastreabilidade (romaneio de abate e seus volumes), que alimentam o controle de produção da filial e, em determinados casos, são enviados ao ERP e disparam a impressão de etiquetas.
O comportamento da tela do DIF muda de acordo com o perfil de abate configurado na filial (por exemplo, perfil 4 ou perfil 8), o que altera a forma como o produto da carcaça é definido e se é necessário selecionar uma escala antes de iniciar a inspeção.
Vídeo Tutorial do DIF
▶ Tutorial em vídeo: ainda não disponível para esta rotina.
Pré-requisitos e Contexto de Acesso do DIF
- O operador precisa estar autenticado no aplicativo, com uma filial definida para o seu usuário.
- O dia de abate precisa estar ativo na filial em que o operador está trabalhando. Se o dia não estiver ativo, o sistema não localiza as carcaças do abate corrente.
- Quando a filial está configurada com perfil de abate 4, é obrigatório selecionar uma escala (através do menu “Escalas”) antes de informar qualquer sequência de carcaça na tela.
- Quando a filial está configurada com perfil de abate 8, o produto da carcaça é atribuído automaticamente pelo sistema; o operador não precisa (e não consegue) selecionar o produto manualmente.
- É necessário que a balança do posto de inspeção esteja conectada ao aplicativo. Caso não haja balança disponível no posto, o sistema libera automaticamente o modo de pesagem manual (via uma janela para digitação dos pesos), então essa etapa não impede o uso da tela, apenas muda a forma de pesar.
- Ao abrir a tela, o sistema precisa carregar com sucesso a lista de ocorrências sanitárias disponíveis para a filial e o perfil de abate configurado. Se o carregamento do perfil falhar por qualquer motivo, o sistema assume automaticamente o perfil 8 como padrão e a tela continua funcionando normalmente.
- A tela do DIF depende de cadastros anteriores feitos em outras rotinas do sistema: a escala de abate (quando aplicável ao perfil 4), o cadastro do produto vinculado à escala e a lista de ocorrências sanitárias da filial. Sem esses cadastros prévios, a tela não consegue localizar ou processar a carcaça corretamente.
Processo de Criação: Passo a Passo do DIF
Abrir a tela do DIF
O operador acessa a tela do DIF no aplicativo de abate. Ao abrir, o sistema carrega, ao mesmo tempo, a lista de ocorrências sanitárias disponíveis para a filial e o perfil de abate configurado (4, 8 ou outro). Se não for possível obter o perfil de abate por qualquer motivo, o sistema assume o perfil 8 como padrão automaticamente, sem interromper o uso da tela.
Selecionar a escala (perfil 4)
Se a filial estiver configurada com perfil de abate 4, o operador precisa acessar o menu “Escalas” e selecionar a escala do lote antes de informar qualquer sequência de carcaça. Se o operador tentar informar uma sequência sem escala selecionada, o sistema exibe a mensagem “Selecione uma escala” e não prossegue. Para os demais perfis, essa etapa não existe: o menu “Escalas” nem aparece.
Informar a sequência da carcaça
O operador informa a sequência da carcaça de duas formas possíveis: digitando o número diretamente no campo de sequência ou lendo o código de barras da carcaça com o scanner a laser. O código lido pelo scanner é tratado exatamente como se tivesse sido digitado manualmente; não há uma verificação de formato feita no próprio aplicativo, essa verificação acontece no servidor depois do envio. Se o campo de sequência for deixado vazio, o sistema limpa o estado da carcaça atual e libera novamente todos os campos para uma nova entrada. Se já existir uma carcaça carregada na tela no momento em que uma nova sequência é informada, o sistema pergunta ao operador se deseja substituir a carcaça atual por meio de um diálogo de confirmação.
Aguardar o carregamento dos dados
Depois que a sequência é aceita, o sistema busca a carcaça no banco de dados. Quando a carcaça é encontrada com sucesso, o sistema trava temporariamente o formulário de ocorrências (impedindo edição durante o carregamento), desabilita os botões de pesagem, preenche automaticamente todos os campos informativos da carcaça e preenche os menus de ocorrência, parte afetada e destino com os valores já registrados anteriormente para aquela carcaça, se houver.
Realizar a pesagem da carcaça
A forma de pesagem depende da configuração do produto ou da escala vinculada à carcaça: Tipo 1 (somente pesagem antes), Tipo 2 (somente pesagem depois), Tipo 3 padrão (pesagem antes e depois), ou Tipo 4 (pesagem antes e depois, com botão “Salvar” intermediário). Se não houver balança conectada, o sistema ativa automaticamente o modo sem balança. No modo dupla de pesagem por balança, cada acionamento registra os valores da Banda 1. No modo simples, é obrigatório pesar primeiro a Banda 1 e depois a Banda 2, nessa ordem.
Selecionar ocorrências da carcaça
O operador seleciona, nos menus disponíveis na tela, o motivo de inspeção e as ocorrências identificadas na carcaça. As ocorrências disponíveis são organizadas em três grupos: Parte Afetada, Destino Carcaça e Ocorrências gerais. O sistema não permite selecionar o mesmo valor de ocorrência em dois menus diferentes ao mesmo tempo; se o operador tentar fazer essa seleção duplicada, ela é simplesmente bloqueada, sem exibir uma mensagem específica de erro.
Conferir produto e classificação
O produto da carcaça é filtrado automaticamente pelo sexo da carcaça e exibido no formato “código completo – nome”. No perfil de abate 8, esse campo é preenchido automaticamente pelo sistema e o operador não consegue alterá-lo. A classificação é exibida no formato “id – nome”; se nenhuma classificação for encontrada para seleção, o sistema exibe a mensagem “Classificações não encontradas”.
Acionar o botão de finalização
Depois de realizar a pesagem e preencher as ocorrências, o operador aciona um dos botões finalizadores disponíveis: Liberar, Sequestrar ou Condenar. A disponibilidade de cada botão depende do estado atual da inspeção (por exemplo, no modo sem balança, o botão Sequestrar não fica disponível, apenas Liberar e Condenar).
Validar campos obrigatórios
Antes de enviar a carcaça para processamento, o sistema confere obrigatoriamente: se o motivo de inspeção foi selecionado (diferente do valor padrão); se a parte afetada foi preenchida; se o destino da carcaça foi preenchido, exceto quando a ação escolhida for Liberar. Se qualquer uma dessas validações falhar, o processamento não é enviado até que o operador corrija o campo indicado.
Sistema processa e retorna resultado
Se todas as validações passarem, o sistema envia a carcaça para processamento no servidor. Se o processamento for concluído com sucesso, a tela é completamente limpa e o sistema exibe a mensagem “Carcaça salva”. Se ocorrer algum erro durante o processamento, a mensagem de erro devolvida pelo servidor é exibida ao operador e a tela não é limpa, permitindo corrigir e tentar novamente.
Descrição de Cada Campo da Tela do DIF
Sequência (campo de sequência da carcaça)
Escala (seleção via menu “Escalas”)
Motivo de Inspeção
Parte Afetada
Destino Carcaça
Ocorrências gerais
Peso Banda 1 – Antes / Peso Banda 1 – Depois
Peso Banda 2 – Antes / Peso Banda 2 – Depois
Produto
Classificação
Liberar (botão)
Sequestrar (botão)
Condenar (botão)
Escalas (opção do menu superior)
Atualizar (opção do menu superior)
Lista de Carcaças Processadas
Utilização e Consulta de Registros do DIF
O operador consulta os registros já processados diretamente na lista de carcaças processadas exibida na própria tela do DIF, sem precisar abrir uma tela separada de consulta. Essa lista é sempre ordenada pela sequência de cabeça em ordem decrescente, mostrando a carcaça mais recentemente processada no topo, e apresenta o status de cada carcaça já traduzido para um texto legível: Liberado, Sequestrado ou Condenado.
A lista traz apenas carcaças com status Sequestrado, Liberado ou Condenado, desde que a sequência de cabeça esteja abaixo do limite de abate emergência configurado para a filial. Carcaças ainda não processadas (status inicial) não aparecem nessa lista.
Não há, na documentação de origem, filtros adicionais de busca (como por data, por operador ou por intervalo de sequência) disponíveis na tela do DIF além da ordenação e do recorte de status descritos acima.
Para localizar uma carcaça específica que ainda não foi finalizada, o operador utiliza o campo de sequência da carcaça (por digitação ou leitura de código de barras), que busca o registro diretamente no servidor, considerando a filial e a data do dia de abate correntes.
Processo de Edição do DIF
⚠ Edição não permitida para carcaças finalizadas
A tela do DIF não oferece uma edição tradicional de carcaças já finalizadas (Liberadas, Sequestradas ou Condenadas). Depois que a carcaça é processada com um desses status, os campos ficam fixados naquele resultado.
O que existe, no lugar de uma edição direta, é o processo de exclusão de uma carcaça processada, disponível pelo botão de exclusão na lista de carcaças processadas.
Ao excluir uma carcaça:
- O sistema verifica se a carcaça existe; se não existir, retorna erro.
- Se o status da carcaça for diferente de “S” (Sequestrado) e já existir romaneio pesado para ela, a exclusão é bloqueada com a mensagem “DIF liberado já pesado”.
- Se a carcaça estiver na fila de tipificação (inspeção em andamento por outro processo), a exclusão também é bloqueada.
- Apenas carcaças com status “S” têm o romaneio e os volumes efetivamente excluídos do banco de dados.
- Depois da exclusão bem-sucedida, a carcaça volta ao estado inicial: status “N”, pesos zerados, ocorrências limpas, classificação zerada e os mercados recalculados. Se o status anterior era “C” (Condenado) ou “S” (Sequestrado), um comando de exclusão do romaneio também é enviado ao ERP externo.
Ou seja, a forma de “corrigir” uma carcaça já processada é excluí-la e informar a sequência novamente na tela, refazendo toda a inspeção do início. Não há registro de histórico ou log de alterações mencionado na documentação de origem para essas exclusões.
Antes de ser finalizada, enquanto a carcaça ainda está sendo carregada na tela, os campos de ocorrência ficam temporariamente travados durante a busca no servidor; a documentação de origem não detalha se, depois desse carregamento inicial, o operador consegue alterar livremente os valores de ocorrência já preenchidos antes de finalizar, ou se esses valores servem apenas de referência visual.
Estrutura Técnica e Comportamento do Sistema do DIF
Quando o operador finaliza uma carcaça no DIF, o sistema executa automaticamente, sem qualquer ação adicional do operador, uma série de tarefas em segundo plano:
Atualização do cadastro da carcaça
O sistema grava o status da inspeção (Liberado, Sequestrado ou Condenado), os pesos registrados, as ocorrências selecionadas, a classificação e os mercados aos quais a carcaça pode ser destinada.
Geração do romaneio de abate
É criado um documento de rastreabilidade da carcaça (o romaneio), junto com os volumes vinculados a ele. O romaneio é salvo de forma permanente no banco de dados quando o perfil de abate da filial é 4 (não importa o status da carcaça nesse caso) ou quando o status da carcaça é Sequestrado. Nos demais casos, o romaneio é montado apenas na memória do sistema, para ser enviado ao ERP, sem ficar salvo permanentemente no banco local.
Câmara do romaneio
A câmara vinculada ao romaneio é determinada automaticamente pelo destino selecionado pelo operador no campo Destino Carcaça, usado como referência para identificar a câmara cadastrada na filial.
Envio ao ERP externo
Ao condenar a carcaça, o romaneio gerado é enviado automaticamente para o sistema ERP da empresa. Se esse envio falhar por qualquer motivo, o sistema apenas registra uma advertência internamente, sem interromper o restante do processo nem exibir erro ao operador.
Impressão de etiqueta
Ao condenar a carcaça, o sistema aciona automaticamente o layout de impressão “dif_condenar”; ao sequestrar, aciona o layout “dif_sequestrar”. A impressão considera apenas os volumes cujo indicador de verificação (CheckSum) seja diferente de “AN”. Se a impressão falhar por qualquer motivo, essa falha é silenciada: o operador não recebe nenhuma mensagem de erro sobre isso.
Determinação da tara
Para calcular o peso líquido da carcaça, o sistema usa uma tara fixa (definida em um parâmetro geral do sistema) quando um determinado parâmetro de configuração da filial está desligado; caso esse parâmetro esteja ligado, o sistema usa a tara cadastrada no próprio produto vinculado à escala.
Criação automática de carcaça
Em filiais configuradas para o modelo de “linha parcial não rastreada com volume”, se a carcaça informada não for encontrada no banco, o sistema cria automaticamente um novo registro para ela, gerando um código de manejo e uma sequência de cabeça novos, e atribuindo um mercado interno padrão. Para as demais filiais, se a carcaça não for encontrada, o sistema retorna erro em vez de criá-la automaticamente.
Cálculo dos mercados possíveis
Ao salvar a carcaça, o sistema verifica se todas as ocorrências informadas estão liberadas para o DIF. Se qualquer ocorrência não tiver essa liberação, todos os mercados da carcaça são substituídos pelo mercado interno fixo (código “10”); caso contrário, o sistema mantém apenas os mercados cujas listas de ocorrências aceitas incluam todas as ocorrências informadas na inspeção.
Ajuste automático de pesos
Antes de salvar, se o peso “antes” de uma banda estiver zerado mas o peso “depois” tiver um valor (ou vice-versa), o sistema copia automaticamente o valor preenchido para o campo zerado, evitando inconsistência entre os dois valores. Essa correção é aplicada tanto para a Banda 1 quanto para a Banda 2.
Localização da escala no processamento
O servidor tenta localizar a escala usada no processamento primeiro pela combinação de chave de produção com o lote efetivo da carcaça; se não encontrar, tenta pela combinação de chave de produção com produto e referência. Se nenhuma das duas tentativas encontrar a escala, o processamento é interrompido com o erro “Escala não encontrada para DIF”; se a escala for encontrada mas não tiver um lote efetivo definido, o erro exibido é “Escala modificada não pode produzir”.
Determinação do perfil de abate usado no processamento
O sistema usa primeiro o perfil de abate cadastrado diretamente na filial; somente se a filial não tiver um perfil definido, o sistema busca o perfil configurado na linha de produção vinculada à escala da carcaça. Se nem a filial nem a linha de produção tiverem um perfil configurado, a carcaça segue o comportamento padrão, sem os tratamentos automáticos específicos do perfil 4.
Essas integrações e cálculos acontecem automaticamente assim que o operador aciona Liberar, Sequestrar ou Condenar; o operador não precisa (e não consegue) disparar manualmente o envio ao ERP ou a impressão de etiqueta: eles acontecem como consequência direta da ação de finalização escolhida.
Regras de Negócio e Restrições do DIF
Escala obrigatória no perfil de abate 4
Quando a filial está no perfil de abate 4, o operador precisa selecionar uma escala antes de informar qualquer sequência de carcaça. Sem essa seleção, o sistema bloqueia a operação com a mensagem “Selecione uma escala”.
Produto automático no perfil de abate 8
Quando a filial está no perfil de abate 8, o produto da carcaça é definido automaticamente pelo sistema e o operador não pode alterá-lo manualmente na tela.
Unicidade entre os menus de ocorrência
Os menus de ocorrência da tela (Parte Afetada, Destino Carcaça e Ocorrências gerais) não aceitam que o mesmo valor seja selecionado em mais de um menu ao mesmo tempo. Uma tentativa de seleção duplicada é bloqueada sem exibir mensagem de erro específica.
Campos obrigatórios para finalizar a inspeção
Antes de processar a carcaça, o motivo de inspeção e a parte afetada sempre precisam estar preenchidos. O destino da carcaça também é obrigatório, exceto quando a ação escolhida é Liberar. Se qualquer uma dessas condições não for atendida, o sistema bloqueia o envio e exibe a mensagem correspondente ao campo pendente.
Disponibilidade dos botões finalizadores conforme o estado da inspeção
O botão Sequestrar só fica disponível quando o estado da inspeção permite “todos habilitados”. Os botões Liberar e Condenar ficam disponíveis tanto no estado “todos habilitados” quanto no estado “somente condenado e liberar” (por exemplo, quando não há balança disponível no posto).
Modo sem balança restringe as ações disponíveis
Quando não há balança conectada no posto de inspeção, ao carregar a carcaça o sistema já define o estado como “somente condenado e liberar”, o que impede o uso da ação Sequestrar para essa carcaça.
Determinação da tara aplicada à pesagem
A tara usada no cálculo do peso líquido da carcaça depende de um parâmetro de configuração da filial: se esse parâmetro estiver desligado, o sistema usa um valor fixo de tara definido em outro parâmetro geral; se estiver ligado, o sistema usa a tara cadastrada no produto vinculado à escala.
Criação automática de carcaça em filiais específicas
Somente em filiais configuradas para o modelo de “linha parcial não rastreada com volume”, uma carcaça não encontrada no banco é criada automaticamente pelo sistema, recebendo um novo código de manejo, uma nova sequência de cabeça e o mercado interno padrão. Nas demais filiais, a ausência da carcaça sempre resulta em erro, sem criação automática.
Cálculo dos mercados aceitos pela carcaça
Se qualquer ocorrência informada na inspeção não estiver liberada para o DIF, todos os mercados da carcaça são substituídos pelo mercado interno fixo (código “10”). Caso todas as ocorrências estejam liberadas, o sistema mantém apenas os mercados cujas listas de ocorrências aceitas cubram integralmente as ocorrências informadas.
Consistência entre pesos “antes” e “depois”
Se o peso “antes” de uma banda estiver zerado mas o peso “depois” tiver valor (ou o inverso), o sistema copia automaticamente o valor preenchido para o campo zerado antes de salvar a carcaça, tanto para a Banda 1 quanto para a Banda 2.
Persistência permanente do romaneio de abate
O romaneio de abate só é salvo permanentemente no banco de dados quando o perfil de abate da filial é 4 (independentemente do status da carcaça) ou quando o status da carcaça é Sequestrado. Nos demais casos, o romaneio existe apenas em memória, para envio ao ERP.
Câmara do romaneio definida pelo destino
A câmara vinculada ao romaneio de abate é sempre determinada pelo código selecionado no campo Destino Carcaça, usado para identificar a câmara correspondente cadastrada na filial.
Envio ao ERP e impressão apenas em condenação e sequestro
O envio do romaneio ao ERP externo só acontece quando a carcaça é condenada; falhas nesse envio geram apenas uma advertência interna e não impedem a conclusão do processo. A impressão de etiqueta acontece tanto na condenação (layout “dif_condenar”) quanto no sequestro (layout “dif_sequestrar”), considerando somente os volumes cujo indicador de verificação seja diferente de “AN”. Falhas de impressão não geram nenhuma mensagem ao operador.
Bloqueios na exclusão de carcaça processada
Uma carcaça processada não pode ser excluída se, tendo status diferente de Sequestrado, já possuir romaneio pesado (mensagem “DIF liberado já pesado”), ou se estiver em fila de tipificação no momento da tentativa de exclusão. Apenas carcaças com status Sequestrado têm o romaneio e os volumes de fato apagados do banco de dados; ao excluir uma carcaça que estava Condenada ou Sequestrada, um comando de exclusão do romaneio também é enviado ao ERP.
Classificação com código negativo
Qualquer código de classificação negativo informado é tratado pelo sistema como 0, que representa a classificação padrão.
Número de lote enviado no processamento
Quando há uma escala selecionada, o número de lote enviado no processamento da carcaça é o lote da escala; se esse lote for inválido, o sistema usa o lote já registrado na carcaça como alternativa. Quando não há escala selecionada, o lote da carcaça é usado diretamente.
Escalas sem lote, sexo ou produto não ficam disponíveis
Uma escala sem número de lote preenchido não pode ser selecionada pelo operador (o sistema exibe o aviso “Escala sem lote”). Escalas sem sexo definido ou sem produto cadastrado são automaticamente excluídas da lista de escalas disponíveis, sem aviso adicional.
Filtro da lista de carcaças processadas
A lista de carcaças processadas exibe apenas registros com status Sequestrado, Liberado ou Condenado, cuja sequência de cabeça esteja abaixo do limite de abate emergência configurado para a filial.
Cálculo da idade em meses da carcaça
A idade em meses da carcaça é calculada pela diferença entre a data de abate e a data de nascimento do animal, dividida por 30 (usando divisão inteira, sem casas decimais). Se a data de nascimento estiver ausente ou tiver um ano igual a 1, o sistema exibe a idade como 0.
Exibição do sexo da carcaça
O sexo da carcaça é exibido como “Macho” quando o código registrado é “M” e como “Fêmea” quando o código é “F”. Qualquer outro código é exibido exatamente como foi retornado pelo sistema, sem tradução.
Bloqueios na busca da carcaça
A busca de uma carcaça no DIF é bloqueada (com mensagem de erro específica) quando a carcaça já está em inspeção por outro processo de tipificação, quando já foi processada anteriormente (status diferente de “N” e não vazio), quando já possui cobertura e conformação preenchidas, ou quando não possui status Sequestrado/Condenado mas já tem romaneio gerado.
Consulta especial de sequência no perfil de abate 4
No perfil de abate 4, a sequência informada é tratada como um número inteiro. Se já existir outra carcaça com essa mesma sequência no dia e na filial correntes, o sistema retorna erro. Caso contrário, cria um registro temporário em memória (sem gravar no banco de dados) com os dados básicos vindos da escala selecionada.