DIF — Declaração de Inspeção Federal
DIF — Abate (FrigosoftColetor)
O DIF (Declaração de Inspeção Federal) é a tela do aplicativo de abate responsável por registrar a inspeção sanitária de cada carcaça pelo Serviço de Inspeção Federal.
Visão Geral
O DIF (Declaração de Inspeção Federal) é a tela do aplicativo de abate responsável por registrar a inspeção sanitária de cada carcaça pelo Serviço de Inspeção Federal. Nela o operador informa ocorrências sanitárias, partes afetadas, destino e realiza a pesagem antes e/ou depois da inspeção. Ao final, a carcaça é liberada, sequestrada ou condenada, gerando os registros de rastreabilidade e romaneio correspondentes.
Pré-requisitos
Para operar o DIF, o sistema exige os seguintes pré-requisitos:
- Operador deve estar autenticado no aplicativo com filial definida.
- O dia de abate deve estar ativo na filial.
- Perfil 4: Uma escala de abate deve estar selecionada antes de qualquer operação com sequências.
- Perfil 8: O produto da carcaça é atribuído automaticamente; não é necessária seleção manual.
- Balança conectada ao posto (quando disponível) ou acesso ao modo de pesagem manual.
- Lista de ocorrências e perfil de abate devem ser carregados com sucesso ao abrir a tela.
Fluxo Operacional
Abertura da Tela do DIF
Ao abrir a tela do DIF, o sistema executa simultaneamente:
- Carregamento da lista de ocorrências disponíveis para a filial.
- Obtenção do perfil de abate da filial (valores possíveis: 4, 8 ou outro).
Se a obtenção do perfil falhar por qualquer motivo, o sistema assume automaticamente o perfil 8 como padrão e continua o funcionamento normalmente.
Entrada da Sequência da Carcaça no DIF
Na tela do DIF, o operador informa a sequência da carcaça de duas formas:
- Digitação direta no campo de sequência.
- Leitura via scanner a laser (código de barras).
Sequência de carcaça vazia no DIF
No DIF, se a sequência informada estiver vazia, o estado da carcaça atual é limpo e todos os campos são reabilitados para nova entrada.
Substituição de carcaça já carregada no DIF
No DIF, se já houver uma carcaça carregada na tela:
- O sistema exibe um diálogo pedindo confirmação para substituir a carcaça atual.
- O operador deve confirmar para prosseguir.
- O campo de sequência é limpo após a tentativa, independentemente de o operador ter confirmado ou cancelado.
Validação de Escala Obrigatória no Perfil 4 do DIF
No DIF, quando o perfil de abate da filial for 4, é obrigatória a seleção de uma escala antes de informar qualquer sequência de carcaça. Se o operador tentar submeter uma sequência sem escala selecionada, o sistema exibe:
Carregamento da Carcaça no DIF
No DIF, após a sequência da carcaça ser aceita, o sistema busca a carcaça e, ao encontrá-la com sucesso:
- O formulário de ocorrências é travado (não editável temporariamente).
- Os botões de pesagem são desabilitados.
- Todos os campos informacionais da carcaça são preenchidos.
- Os dropdowns de ocorrência, parte afetada e destino são preenchidos com os valores já registrados.
Pesagem da Carcaça no DIF
No DIF, o tipo de pesagem da carcaça é definido pela configuração do produto/escala:
| Tipo | Descrição |
|---|---|
| 1 | Somente pesagem antes da inspeção |
| 2 | Somente pesagem depois da inspeção |
| 3 | Antes e depois (padrão) |
| 4 | Antes e depois com botão “Salvar” intermediário |
Ausência de balança no posto de inspeção do DIF
No DIF, independentemente do tipo de pesagem configurado, a ausência de balança no posto ativa o modo sem balança (pesagem manual via modal).
Modo dupla de pesagem via balança no DIF
No modo dupla, cada acionamento da balança registra apenas os campos de Banda 1 da carcaça. Os botões finalizadores são habilitados logo após a pesagem.
Modo simples de pesagem via balança no DIF
No modo simples, a sequência obrigatória é Banda 1 → Banda 2. Os botões finalizadores são habilitados somente após o registro da Banda 2.
Modo sem balança (pesagem manual) no DIF
No modo sem balança, o operador informa os pesos da carcaça via modal. Os valores já registrados na carcaça são pré-carregados com 3 casas decimais. Ao confirmar:
- Para pesos maiores que zero: o sistema subtrai a tara do produto.
- Para pesos iguais a zero: mantém o valor zero.
- No modo dupla, os campos de Banda 2 são ocultados do modal.
Preenchimento das Ocorrências da Carcaça no DIF
No DIF, o operador seleciona as ocorrências da carcaça nos dropdowns da tela. As ocorrências são divididas em três grupos:
- Parte Afetada: ocorrências do tipo 9.
- Destino Carcaça: ocorrências do tipo 5 com destino preenchido.
- Ocorrências gerais: ocorrências do tipo 5 sem destino ou demais tipos.
Regra de unicidade: os quatro dropdowns de ocorrência não permitem o mesmo valor em dois dropdowns distintos. Tentativa de seleção duplicada é bloqueada silenciosamente. O mesmo vale para Parte Afetada e Destino Carcaça individualmente.
Seleção de Produto e Classificação da Carcaça no DIF
No DIF, o produto e a classificação da carcaça são definidos da seguinte forma:
- Produto: filtrado pelo sexo da carcaça. Exibido como `{código completo}-{nome}`.
- No perfil 8, o produto é definido automaticamente pelo sistema e não pode ser alterado pelo operador.
- Classificação: exibida como `{id}-{nome}`. Se nenhuma classificação for encontrada, o sistema exibe: “Classificações não encontradas”.
Validações antes do Envio da Carcaça no DIF
No DIF, antes de processar a carcaça, o sistema valida obrigatoriamente:
- O motivo de inspeção deve estar selecionado (diferente do valor padrão).
- Mensagem: “O motivo da inspeção da carcaça precisa ser informado”
- A parte afetada deve estar preenchida.
- Mensagem: “A parte afetada precisa ser informada”
- O destino da carcaça deve estar preenchido — exceto quando a ação for Liberar.
- Mensagem: “O destino da carcaça precisa ser informado”
Ações Finalizadoras da Inspeção no DIF
No DIF, após a pesagem e o preenchimento das ocorrências, os botões finalizadores da carcaça ficam disponíveis:
| Botão | Código Gerado | Condições de Exibição |
|---|---|---|
| Liberar | L | Estado “todos habilitados” ou “somente condenado e liberar” |
| Sequestrar | S | Apenas estado “todos habilitados” |
| Condenar | C | Estado “todos habilitados” ou “somente condenado e liberar” |
Modo sem balança: ao carregar a carcaça, o estado é definido imediatamente como “somente condenado e liberar” — o botão Sequestrar não aparece.
Resultado após envio com sucesso: a tela é limpa completamente e exibe “Carcaça salva”.
Resultado após envio com erro: a mensagem de erro retornada pelo servidor é exibida ao operador e a tela não é limpa.
Interface e Comportamentos do App
Menu Superior do DIF
O menu superior da tela do DIF contém as seguintes opções:
| Opção | Disponibilidade |
|---|---|
| Escalas | Apenas para perfil 4 |
| Atualizar | Todos os perfis |
Ação “Atualizar” no menu do DIF
No DIF, a ação “Atualizar” limpa a tela completamente sem se comunicar com o servidor:
- Todos os dropdowns voltam ao valor padrão.
- Produto e classificação são limpos.
- Tipo de pesagem volta ao estado inicial.
- Botões finalizadores são desabilitados.
- Campos de entrada são reabilitados.
- Carcaça atual é removida da memória.
- Para perfil 4: escala selecionada também é removida.
Lista de Carcaças Processadas no DIF
No DIF, a lista de carcaças processadas segue estas regras de exibição:
- Ordenada por sequência de cabeça em ordem decrescente (mais recente no topo).
- Exibe status de cada carcaça com textos legíveis:
- `L` → Liberado
- `S` → Sequestrado
- `C` → Condenado
- Outro código → exibe o código bruto.
- Cada item possui botão de exclusão individual.
Exclusão de Carcaça da Lista no DIF
No DIF, ao acionar o botão de exclusão de uma carcaça na lista de processadas:
- O sistema exibe diálogo de confirmação com a sequência da carcaça.
- Se confirmado: a exclusão é enviada ao servidor.
- Após exclusão bem-sucedida: o item é removido da lista local (sem nova consulta ao servidor) e uma mensagem de sucesso é exibida.
Leituras de Código de Barras
No DIF, o aplicativo aceita a leitura de código de barras via scanner a laser para o campo de sequência da carcaça. O código lido é tratado exatamente como uma digitação manual. Não há validação de formato específica no aplicativo — a validação ocorre no servidor após o envio.
Feedbacks ao Operador
No DIF, o aplicativo comunica ao operador o resultado de cada validação, ação e retorno do servidor pelas mensagens abaixo.
Feedbacks — validações antes do envio no DIF
| Situação | Feedback | Texto exato |
|---|---|---|
| Perfil 4 sem escala selecionada | Mensagem de validação | “Selecione uma escala” |
| Motivo de inspeção não informado | Mensagem de validação | “O motivo da inspeção da carcaça precisa ser informado” |
| Parte afetada não informada | Mensagem de validação | “A parte afetada precisa ser informada” |
| Destino não informado (exceto Liberar) | Mensagem de validação | “O destino da carcaça precisa ser informado” |
Feedbacks — escala e classificação no DIF
| Situação | Feedback | Texto exato |
|---|---|---|
| Escala sem lote preenchido | Toast | “Escala sem lote” |
| Lista de classificações vazia | Mensagem de erro | “Classificações não encontradas” |
| Escala não encontrada | Mensagem de erro | “Escala não encontrada para DIF” |
| Escala sem lote efetivo | Mensagem de erro | “Escala modificada não pode produzir” |
Feedbacks — busca e bloqueio da carcaça no DIF
| Situação | Feedback | Texto exato |
|---|---|---|
| Carcaça em processamento por tipificação | Mensagem de erro | “sisbov já tipificado no DIF” |
| Carcaça já processada (status diferente de N) | Mensagem de erro | “sisbov condenado ou processado” |
| Carcaça já tipificada por cobertura e conformação | Mensagem de erro | “sisbov já tipificado no DIF” |
| Carcaça já possui romaneio | Mensagem de erro | “sisbov já possui romaneio” |
| Sequência já utilizada (perfil 4) | Mensagem de erro | “sisbov já utilizado” |
| Carcaça não encontrada | Mensagem de erro | “sisbov não encontrada” |
Feedbacks — processamento e exclusão da carcaça no DIF
| Situação | Feedback | Texto exato |
|---|---|---|
| Processamento concluído com sucesso | Mensagem de sucesso | “Carcaça salva” |
| Exclusão concluída com sucesso | Mensagem de sucesso | “DIF excluído com sucesso” |
| Exclusão bloqueada por romaneio pesado | Mensagem de erro | “DIF liberado já pesado” |
Feedbacks — mensagens dinâmicas do servidor no DIF
| Situação | Feedback | Mensagem |
|---|---|---|
| Sequência não encontrada no dia/filial | Mensagem de erro | Informa que a carcaça não foi localizada, citando a filial e a data consultadas |
| Servidor retorna erro não vazio | Mensagem de erro | Exibe integralmente a mensagem de erro retornada pelo servidor, qualquer que seja o motivo |
Regras de Negócio
Perfis de Abate no DIF
No DIF, o comportamento da tela varia conforme o perfil de abate configurado na filial:
| Perfil | Comportamento |
|---|---|
| 4 | Requer seleção de escala antes de qualquer sequência; a sequência é tratada como número inteiro; menu “Escalas” disponível |
| 8 | Produto definido automaticamente pelo sistema; operador não seleciona produto |
| Outro | Comportamento padrão sem restrições adicionais |
Informações Exibidas da Carcaça no DIF
No DIF, as informações da carcaça são exibidas ao operador da seguinte forma:
- Sexo: “M” → Macho; “F” → Fêmea; outro código → exibe o código bruto.
- Idade em meses: calculada como (Data de Abate − Data de Nascimento) ÷ 30, usando divisão inteira. Se a data de nascimento for nula ou o ano for igual a 1, a idade é exibida como 0.
Regras de Escalas no DIF
No DIF, as escalas disponíveis para seleção seguem estas regras de exibição e filtro:
- Cada escala exibe: documento, pecuarista, propriedade, lote, sexo e data de abate (formato brasileiro DD/MM/AAAA).
- Ordenação por número de lote em ordem crescente. Lotes nulos ou não numéricos são tratados como 0.
- Escala sem lote preenchido não pode ser selecionada; toast “Escala sem lote” é exibido.
- Escalas sem sexo definido ou sem produto cadastrado são excluídas silenciosamente da lista.
Número de Lote no Envio da Carcaça no DIF
No DIF, o número de lote enviado ao processar a carcaça segue estas regras:
- Com escala selecionada: usa o número de lote da escala (se inválido, usa o lote da carcaça como alternativa).
- Sem escala selecionada: usa o lote da carcaça diretamente.
Classificação da Carcaça no DIF
No DIF, a classificação da carcaça segue estas regras:
- Códigos negativos de classificação são tratados como 0.
- Código 0 representa a classificação padrão.
Filtro de Carcaças na Lista de Processados do DIF
No DIF, a lista de carcaças processadas retorna apenas as carcaças com status Sequestrado (S), Liberado (L) ou Condenado (C), com sequência de cabeça abaixo do limite de abate emergência da filial.
Determinação da Tara da Carcaça no DIF
No DIF, a tara descontada do peso da carcaça é determinada da seguinte forma: se o parâmetro ERP 630 estiver configurado como “N”, o sistema usa o valor do parâmetro ERP 132 como tara fixa; caso contrário, usa a tara cadastrada no produto vinculado à escala.
Criação Automática de Carcaça no DIF
No DIF, para filiais configuradas como “linha parcial não rastreada com volume”, quando a carcaça buscada não é encontrada, o sistema a cria automaticamente, atribuindo um novo código de manejo, uma nova sequência de cabeça e um mercado interno padrão — sem exigir que o operador a cadastre manualmente antes. Para as demais filiais, a ausência da carcaça é tratada como erro (ver T-01).
Determinação do Perfil de Abate para Persistência no DIF
No DIF, para decidir se o romaneio de abate é persistido permanentemente e se os gatilhos automáticos do perfil 4 se aplicam, o sistema usa primeiro o perfil de abate cadastrado na filial. Somente quando a filial não tiver perfil de abate definido, o sistema busca o perfil configurado na linha de produção vinculada à escala da carcaça em processamento. Se a linha também não tiver perfil configurado, a carcaça segue o comportamento padrão, sem os gatilhos do perfil 4.
Validação de Mercados da Carcaça no DIF
No DIF, ao salvar a carcaça, o sistema recalcula os mercados aos quais o produto pode ser destinado, conforme as ocorrências sanitárias informadas na inspeção:
- Se qualquer ocorrência informada não tiver liberação para DIF: todos os mercados são substituídos pelo mercado interno (código “10”).
- Caso contrário: mantém apenas os mercados cujas listas de ocorrências liberadas para DIF incluam todas as ocorrências informadas.
Normalização de Pesos da Carcaça no DIF
No DIF, antes de salvar a carcaça, o sistema corrige pesos inconsistentes entre as pesagens:
- Se o peso “antes” de uma banda estiver zerado mas o peso “depois” tiver valor, o peso “antes” recebe o mesmo valor do “depois”.
- O inverso também ocorre (peso “depois” zerado com peso “antes” preenchido).
- A mesma correção é aplicada tanto à Banda 1 quanto à Banda 2.
Documentos Gerados em Segundo Plano
No DIF, o processamento da carcaça gera em segundo plano o romaneio de abate e seus volumes, sem ação direta do operador para essa geração.
Persistência e câmara do romaneio de abate no DIF
O romaneio de abate do DIF é salvo permanentemente quando o perfil de abate da filial é 4 (independentemente do status da carcaça) ou quando o status da carcaça é Sequestrado (S). Para os demais perfis e status, o romaneio é criado apenas de forma temporária, para envio ao ERP.
A câmara vinculada ao romaneio é determinada pelo código do Destino Carcaça selecionado pelo operador, buscado como identificador de câmara na filial.
Envio ao ERP e impressão de etiquetas do DIF
Ao condenar a carcaça no DIF, o romaneio é enviado ao ERP externo — erros de envio são tratados como advertência e não interrompem o fluxo — e o layout de impressão “dif_condenar” é acionado. Ao sequestrar a carcaça, o layout de impressão “dif_sequestrar” é acionado. Falhas de impressão são silenciadas, sem mensagem ao operador (ver T-06).
Ao excluir uma carcaça cujo status anterior era Condenado (C) ou Sequestrado (S), um comando de deleção do romaneio é enviado ao ERP.
Integrações
No DIF, o aplicativo e o servidor da filial integram-se com os seguintes sistemas e dispositivos:
| Sistema | Direção | Evento |
|---|---|---|
| Servidor da filial | App → Servidor | Consulta de sequência, envio de processamento, exclusão |
| ERP externo | Servidor → ERP | Envio de romaneio ao condenar; comando de deleção ao excluir carcaça Condenada (C) ou Sequestrada (S) |
| Impressora de etiquetas | Servidor → Impressora | Layout “dif_condenar” ao condenar; “dif_sequestrar” ao sequestrar |
| Balança | Balança → App | Captura de pesos de Banda 1 e Banda 2 (quando disponível) |
| Scanner a laser | Scanner → App | Leitura de sequência da carcaça |
Troubleshooting
Sequência de carcaça não encontrada no dia ou filial
Cenário: o operador informa uma sequência de carcaça ainda não registrada no abate do dia ou da filial correntes.
O que fazer: verificar a sequência informada e confirmar se o dia de abate está ativo na filial correta.
Mensagem “Selecione uma escala” no perfil 4
Mensagem exibida: “Selecione uma escala”
Cenário: o perfil de abate da filial é 4 e o operador tenta informar a sequência da carcaça sem selecionar uma escala antes.
O que fazer: acessar o menu “Escalas” e selecionar a escala do lote antes de informar a sequência.
Carcaça bloqueada como já tipificada no DIF
Mensagem exibida: “sisbov já tipificado no DIF”
Cenário: a carcaça está em inspeção em andamento (fila de tipificação) por outro operador, ou já teve a tipificação completada anteriormente.
O que fazer: aguardar a finalização da tipificação em andamento ou verificar o status da carcaça na lista de processadas.
Mensagem “Escala não encontrada para DIF”
Mensagem exibida: “Escala não encontrada para DIF”
Cenário: nenhuma escala foi localizada nem pela combinação de chave de produção com lote efetivo, nem pela combinação de chave de produção com produto e referência.
O que fazer: verificar se a escala possui lote efetivo e produto corretamente cadastrados.
Mensagem “Escala modificada não pode produzir”
Mensagem exibida: “Escala modificada não pode produzir”
Cenário: a escala localizada para o processamento da carcaça no DIF não possui lote efetivo definido.
O que fazer: verificar a configuração da escala no sistema.
Etiqueta de condenação ou sequestro não é impressa no DIF
Mensagem exibida: Nenhuma — falhas de impressão são silenciadas e o aplicativo não exibe erro.
O que fazer: verificar a conectividade da impressora com o servidor da filial.
Carcaça do DIF com romaneio registrado mas sem volumes
Mensagem exibida: Nenhuma — a inconsistência não é sinalizada ao operador.
Cenário: uma falha do servidor durante o processamento da carcaça registra o romaneio de abate, mas não conclui a inclusão dos volumes correspondentes.
O que fazer: verificar a integridade dos dados diretamente no banco.
Casos de Uso
Caso 1 — Inspeção Padrão com Liberação (Perfil 8)
- Operador abre a tela DIF.
- Sistema carrega ocorrências e define perfil 8 automaticamente.
- Operador lê código de barras da carcaça.
- Sistema carrega dados da carcaça; produto é definido automaticamente.
- Operador realiza pesagem antes via balança (Banda 1 → Banda 2).
- Operador seleciona motivo de inspeção, ocorrências e parte afetada.
- Operador aciona Liberar (destino não obrigatório).
- Sistema processa, limpa a tela e exibe “Carcaça salva”.
Caso 2 — Condenação com Impressão (Perfil 8)
- Operador abre a tela do DIF e carrega a carcaça via scanner.
- Pesagem antes realizada.
- Operador seleciona motivo de inspeção, ocorrências, parte afetada e destino.
- Operador aciona Condenar.
- Sistema valida todos os campos obrigatórios.
- O servidor salva, envia romaneio ao ERP e aciona a impressão do layout “dif_condenar”.
- Tela é limpa e “Carcaça salva” é exibido.
Caso 3 — Inspeção com Escala (Perfil 4)
- No DIF, operador acessa o menu “Escalas” e seleciona a escala do lote.
- Operador informa sequência da carcaça (número inteiro).
- Sistema verifica se a sequência já foi utilizada; se não, cria registro temporário.
- Operador preenche ocorrências e realiza pesagem.
- Operador aciona Sequestrar.
- O servidor persiste o romaneio permanentemente (perfil 4 sempre persiste).
- Impressão do layout “dif_sequestrar” é acionada.
Caso 4 — Pesagem Manual sem Balança
- No DIF, operador carrega a carcaça; o sistema detecta ausência de balança no posto.
- Estado inicial define apenas Liberar e Condenar disponíveis (sem Sequestrar).
- Operador aciona botão de pesagem; modal é exibido com valores pré-carregados.
- Operador informa pesos manualmente e confirma.
- Sistema subtrai tara dos valores maiores que zero.
- Operador finaliza com Liberar ou Condenar.
Caso 5 — Exclusão de Carcaça Sequestrada
- No DIF, operador visualiza a lista de carcaças processadas.
- Identifica carcaça sequestrada e aciona botão de exclusão.
- Sistema exibe diálogo com a sequência da carcaça para confirmação.
- Operador confirma.
- O servidor exclui os volumes e o romaneio, redefine o status para N e envia a deleção ao ERP.
- Item é removido da lista local; mensagem “DIF excluído com sucesso” é exibida.