Regras de negócio

Controle de abastecimento interno de combustível · Café Orfeu · v1 · 25/09/2026

Abrir o fluxo BPMN

1 · Contexto e objetivo

A Café Orfeu abastece a frota própria em três tanques na sede e em um caminhão-comboio com bico e contador. Tratores, colheitadeiras, caminhões, utilitários e geradores são abastecidos ao longo do dia, na maioria das vezes longe da sede. Hoje a saída de combustível não deixa rastro estruturado: não se sabe qual equipamento recebeu o quê, em que horário, nem por quem.

O objetivo do processo é fazer cada litro que sai do tanque ter equipamento, responsável, horário e quantidade registrados no momento em que sai, validar essa informação contra o cadastro do equipamento, submeter à supervisão o que fugir da regra e baixar o estoque no Protheus automaticamente. O ganho não é impedir fisicamente o desvio — é passar a ter dado para detectá-lo e responsabilizar.

A alternativa avaliada antes, o sistema de posto de combustível, foi descartada: exige bomba automatizada, controlador e medidor embarcado no caminhão, um investimento em equipamento desproporcional para uso interno, sem venda de combustível e sem obrigação fiscal associada.

2 · Atores e acessos

AtorLane no BPMNResponsabilidade
Operador de campoLane_OperadorRegistra o abastecimento no app móvel e acompanha os próprios registros; corrige o que a supervisão devolveu
Supervisão de frotaLane_SupervisaoDecide sobre exceções (confirmar, pedir correção ou abrir ocorrência) e confere registros sorteados na amostragem
Administrativo / AlmoxarifadoLane_AdministrativoMantém cadastros, lança entrada de carga, cobra sincronização, apura ocorrências e trata erro de integração
SistemaLane_SistemaSincroniza fila offline, valida regras, integra com o Protheus, atualiza indicadores
Quem recebe a carga no pátioLane_EntradaCampoCaptura a descarga pelo app móvel: tanque, litros, régua e fotos. Não informa nada fiscal
Operador do comboioLane_EntradaCampoRegistra a transferência de combustível do tanque da sede para o comboio
Administrativo / AlmoxarifadoLane_EntradaAdministrativoAssocia a nota à carga capturada, confere a divergência e decide: aceitar ou abrir tratativa com o fornecedor
SistemaLane_EntradaSistemaCalcula a divergência com a nota, lança entrada e transferência no Protheus e recalcula o saldo dos tanques

3 · Modelo de dados

EntidadeCampos principais
Equipamento Identificação interna, placa (quando houver), tipo, capacidade do tanque em litros, consumo esperado (L/h para máquina, km/L para veículo de estrada), centro de custo, situação
Responsável Matrícula, nome, função, perfil (registra / aprova / administra), dispositivo
Tanque Identificação, produto (diesel S10, S500, gasolina), capacidade, saldo de abertura do mês, última medição física, indicador de tanque móvel (o comboio). O saldo corrente não é campo: é calculado
Abastecimento Número do processo, tanque de origem, equipamento, responsável, litros, horímetro ou hodômetro, data e hora do abastecimento, data e hora da sincronização, classificação da validação, decisão da supervisão (confirmado, correção solicitada, em ocorrência), número do movimento no Protheus
Solicitação de correção Abastecimento de origem, campo apontado como errado, comentário da supervisão, prazo para devolver, autor da solicitação, data e hora, situação (aberta, devolvida, vencida)
Ocorrência Abastecimento de origem, tipo (suspeita de desvio, possível falha mecânica, erro operacional recorrente, outro), gravidade, responsável por apurar, descrição, se gera ajuste de estoque, data de abertura e desfecho da apuração
Entrada de carga Capturado em campo: placa do caminhão, transportadora, quem capturou, data e hora, observação e anexos. Associado na conferência: nota fiscal, fornecedor, produto, litragem declarada, divergência em litros e em percentual, decisão e situação da tratativa
Tratativa com fornecedor Carga de origem, diferença cobrada em litros e percentual, responsável pela tratativa, o que será cobrado (carta de correção, abatimento, reentrega, devolução ou apuração interna), justificativa e desfecho. Não gera movimento de estoque
Destino da carga filho Uma linha por tanque, porque a carga pode ser dividida entre tanques do mesmo produto: tanque de destino, litros efetivamente descarregados, medição do tanque antes e depois da descarga
Transferência Tanque de origem, destino (o comboio), litros, responsável, data e documento de transferência no Protheus. Não tem centro de custo — transferência não é despesa de equipamento
Dica: a data e hora do abastecimento é distinta da data e hora da sincronização. Guardar as duas é o que mantém o indicador de horário confiável mesmo com registro feito offline.

4 · Registro em campo

RN-01 O registro é feito no app móvel do Fluig, na tarefa Task_RegistrarAbastecimento, no momento do abastecimento. Campos obrigatórios: tanque de origem, equipamento, responsável, litros e horímetro ou hodômetro.

RN-02 Equipamentos sem placa (trator, colheitadeira, gerador, implemento) são identificados pela identificação interna cadastrada. Veículos de estrada aceitam também a placa. A seleção é sempre a partir do cadastro — não há digitação livre de equipamento.

RN-03 Ao selecionar o equipamento, o app exibe capacidade, consumo esperado, último abastecimento e centro de custo. O operador enxerga o contexto antes de informar a litragem.

RN-04 Um registro devolvido pela supervisão retorna ao operador em Task_CorrigirRegistro com o campo apontado como errado, o comentário da decisão e o prazo para devolver. A versão original é preservada na trilha; a correção gera nova versão e reinicia a validação.

RN-04a O app do operador tem duas abas: o registro em si e a lista dos próprios abastecimentos, com a situação de cada um (pendente de sincronização, confirmado, aguardando conferência, correção solicitada, em ocorrência). Os registros com correção solicitada aparecem no topo e a aba mostra um contador de pendências, para que o operador não dependa de aviso por rádio para saber que tem tarefa aberta.

5 · Operação offline

RN-05 O app opera sem conectividade. O registro é gravado no dispositivo e entra em fila; a sincronização acontece em ServiceTask_SincronizarRegistro quando o aparelho reencontra rede.

RN-06 O registro carrega a data e hora em que o abastecimento ocorreu, não a da sincronização. Ambas ficam gravadas.

RN-07 O boundary timer TimerBoundary_SemSincronizar (PT12H, não-interrompente) aciona Task_CobrarSincronizacao quando um dispositivo fica doze horas sem enviar a fila. A cobrança não cancela nada e o fluxo retorna à sincronização.

6 · Regras de validação

Executadas em ServiceTask_ValidarRegrasAbastecimento, com pré-verificação no próprio dispositivo para que o operador saiba do problema ainda em campo.

RegraCritérioEfeito
RN-08Litragem maior que a capacidade do tanque do equipamentoBloqueia o registro. Limite físico, não admite exceção.
RN-09Litragem entre 90% e 100% da capacidadeClassifica como exceção e envia à supervisão
RN-10Consumo calculado fora da faixa esperada do equipamento, a partir da variação do horímetro ou hodômetroClassifica como exceção
RN-11Litragem maior que o saldo calculado do tanque de origem (ver RN-32)Classifica como exceção — pode indicar entrada de carga não lançada
RN-11aOrigem em tanque da sede com destino no caminhão-comboioPede o tipo de movimento: transferência (padrão) ou consumo próprio do caminhão. Ver RN-33
RN-12Mesmo equipamento, mesma litragem, intervalo menor que dez minutosClassifica como exceção por suspeita de duplicidade
Pontos de atenção: os parâmetros das regras vivem no cadastro do equipamento, não no código. A faixa de consumo esperado precisa de um período de aprendizado antes de gerar exceção com frequência aceitável; no início convém partir de faixas largas.

7 · Alçada e amostragem

RN-13 Nem toda movimentação passa pela supervisão. O gateway Gateway_ExcecaoDetectada encaminha à supervisão apenas o que violou alguma regra; o restante segue para a baixa de estoque.

RN-14 Em Task_AnalisarExcecao a supervisão vê o motivo da exceção, o histórico do equipamento e o do operador. Gateway_DecisaoSupervisao tem três saídas — confirmar, pedir correção e abrir ocorrência. Nenhuma delas desfaz o abastecimento: o combustível já saiu do tanque no momento do registro. O que a decisão define é o destino da informação.

RN-15 Confirmar não abre formulário. A supervisão atesta que a informação está correta e o registro segue direto para ServiceTask_BaixarEstoqueProtheus.

RN-16 Pedir correção exige o campo apontado como errado (equipamento, litragem, horímetro, tanque de origem, responsável ou outro), um comentário obrigatório para o operador e um prazo para devolver. A tarefa volta ao campo em Task_CorrigirRegistro e o registro não é integrado enquanto o dado não estiver certo.

RN-17 Abrir ocorrência exige tipo, gravidade, responsável por apurar, descrição obrigatória e a indicação de se gera ajuste de estoque. O registro sai da fila do operador e passa a Task_ApurarOcorrencia. Em Gateway_AjusteEstoque, com ajuste o movimento é lançado no Protheus e o estoque reflete a saída física; sem ajuste o fluxo encerra em EndEvent_OcorrenciaRegistrada e a diferença aparece na conciliação mensal do tanque (Subprocess_ConciliacaoTanques).

RN-18 Nenhum registro em exceção é integrado ao Protheus antes da decisão da supervisão.

RN-19 Entre os registros aprovados nas regras, Gateway_Amostragem sorteia uma fração para conferência em Task_ConferirAmostragem, com peso maior para os de valor mais alto. A amostragem existe para detectar o desvio sistemático que cabe dentro dos limites — por exemplo, registros recorrentes logo abaixo da capacidade do equipamento.

RN-20 O boundary timer TimerBoundary_AprovacaoParada (P2D, não-interrompente) aciona Task_EscalarAprovacao, que notifica o gestor por e-mail sem cancelar a tarefa pendente.

8 · Integração Protheus

SistemaSentidoPadrãoOperação
Protheus (ERP) Fluig → Protheus Conector REST (preferencial) ou JCo Movimento interno de saída de combustível, com centro de custo do equipamento
Protheus (ERP) Protheus → Fluig Dataset com cache Catálogo de produtos, centros de custo e saldo de estoque por tanque

RN-21 A integração acontece em ServiceTask_BaixarEstoqueProtheus, sem ação humana, e é idempotente: a chave é o número do processo Fluig, de modo que reenvio não duplica movimento.

RN-22 Falha na chamada dispara BoundaryError_Protheus (interrompente), que leva a Task_DiagnosticarIntegracao. Após a correção, o movimento é reenviado — loop até integrar.

RN-23 Gateway_IntegracaoOk só libera o fluxo com a confirmação do ERP. Resposta ausente ou negativa volta para diagnóstico.

RN-24 A entrada de combustível nos tanques e a transferência para o comboio têm processo próprio, em Process_EntradaCombustivel, detalhado na seção 9. Os dois processos se encontram no saldo do tanque: a entrada alimenta a conta da RN-32, que a regra de saldo insuficiente (RN-11) consulta no momento do registro do abastecimento.

9 · Entrada de carga e transferência

O lado do "entrou" vive no segundo pool do diagrama, Pool_EntradaCombustivel (Process_EntradaCombustivel), com dois gatilhos: StartEvent_CargaChegou, quando o caminhão do fornecedor descarrega, e StartEvent_ComboioEnche, quando o comboio se abastece na sede. Sem este processo o saldo por tanque não existe e a conciliação mensal não tem contra o que comparar.

O recebimento acontece em duas etapas, em lanes diferentes: a captura no pátio, pelo app móvel (Lane_EntradaCampo), e a conferência no desktop, pelo administrativo (Lane_EntradaAdministrativo). São dois momentos, duas pessoas e dois tipos de informação.

RN-25 Em Task_CapturarDescarga, no app móvel, registra-se apenas o físico: tanque de destino, litros descarregados, medição de régua antes e depois e anexos. Aceita mais de uma linha, porque uma carga pode ser dividida entre tanques. A medição de régua é opcional e funciona como segunda fonte, independente do contador do caminhão do fornecedor. Nenhum campo fiscal é pedido nesta etapa — quem está com o caminhão na frente não tem o documento na mão, e exigir nota na descarga é o que faz o registro não acontecer.

RN-26 Em Task_ConferirCargaComNota, no desktop, o administrativo associa nota fiscal, fornecedor e produto à carga capturada e informa a litragem declarada. Os quatro campos são obrigatórios para liberar a decisão.

RN-27 ServiceTask_CalcularDivergenciaNota apura a diferença entre a litragem da nota e a soma do descarregado, em litros e em percentual. A tolerância tem dois limites parametrizados e vale o que for mais favorável: uma folga absoluta em litros, para carga pequena, onde o percentual dispara por pouca coisa; e um percentual, para carga grande, onde alguns litros não significam nada.

RN-28 Gateway_DecisaoConferencia tem duas saídas. Aceitar dentro da tolerância é um clique e segue direto para a entrada. Abrir tratativa com o fornecedor exige responsável, o que será cobrado e justificativa obrigatória, e passa por Task_TratarDivergenciaFornecedor antes de seguir. Aceitar uma divergência acima da tolerância é bloqueado: é exatamente o que a conferência existe para impedir.

RN-29 O que entra no saldo é o que foi descarregado, nunca o que a nota declara — nos dois desfechos. Inflar o saldo para fechar com a nota transformaria erro de faturamento em perda interna fantasma. A tratativa registra a diferença como pendência comercial e não gera movimento de estoque.

RN-30 Nada vai para o Protheus antes da decisão da conferência: nem a entrada de estoque, nem o saldo do tanque. É o que impede uma carga mal conferida de entrar no estoque e depois reaparecer como perda interna na conciliação.

Divergência com a nota × diferença de conciliação — não se misturam. A divergência da RN-27 é litro que nunca chegou na fazenda: faturamento a maior, erro de contador do caminhão ou descarga incompleta. Tem dono de fora (o fornecedor) e tratamento comercial. A diferença da RN-34 é litro que entrou, foi registrado e sumiu: vazamento, erro de leitura, abastecimento não registrado ou desvio. Tem dono de dentro e apuração interna. Somadas, viram um número só que não acusa nada — uma carga faturada a maior todo mês pareceria perda interna, e desvio real se esconderia atrás de "problema do fornecedor". São campos distintos, com tolerâncias distintas.

RN-31 ServiceTask_EntradaEstoqueProtheus lança uma entrada por tanque de destino, com a nota e o fornecedor. É idempotente: a chave é o número do processo mais o tanque. A divergência com a nota fica gravada como dado da carga e não gera movimento de estoque.

RN-32 O saldo de um tanque não é campo digitado. ServiceTask_AtualizarSaldoTanque o recalcula como saldo de abertura do mês + entradas − saídas, onde entradas são as cargas descarregadas mais as transferências recebidas, e saídas são os abastecimentos registrados mais as transferências enviadas. É essa conta que a RN-11 consulta no momento do registro e que a RN-34 compara com a medição física.

RN-33 O caminhão-comboio é tanque móvel: destino quando enche na sede, origem quando abastece máquina na roça. Encher o comboio é transferência entre locais de estoque, não consumo. O operador registra em Task_RegistrarTransferenciaComboio, no mesmo app; em ServiceTask_TransferirEstoqueProtheus o movimento é de transferência, sem centro de custo, e ServiceTask_AtualizarSaldoComboio baixa o saldo da sede e sobe o do comboio. Consequências: o comboio não aparece no painel como consumidor pelo volume que carregou, aparece apenas pelo diesel que queima rodando; e o combustível que ele distribui chega na conta dos equipamentos que ele abasteceu. Tratar o enchimento como consumo contaria o mesmo litro duas vezes.

RN-34 A conciliação mensal em Subprocess_ConciliacaoTanques compara a medição física de cada tanque com o saldo calculado pela RN-32. A diferença é o indicador de perda interna. Divergências com nota fiscal (RN-27) ficam fora desta conta.

10 · Indicadores

Atualizados em ServiceTask_AtualizarIndicadores a cada registro contabilizado.

IndicadorLeitura
Consumo por equipamento no mêsLitros do período contra a média histórica do próprio equipamento
Litros por responsávelVolume registrado por matrícula no período
Distribuição por faixa de horárioConcentração de registros fora do turno de trabalho
Saldo por tanqueAbertura do mês mais entradas menos saídas, pela RN-32 — inclui o comboio como tanque móvel
Volume transferido ao comboioQuanto saiu da sede sem ser consumo, pela RN-33
Divergência entre nota e descargaSe o fornecedor entregou o que faturou, pela RN-27 — não entra na conciliação
Diferença de conciliaçãoMedição física dos tanques contra o saldo calculado, em Subprocess_ConciliacaoTanques, pela RN-34

11 · Notificações e prazos

EventoPrazoCanalDestinatário
Dispositivo sem sincronizarPT12HE-mailAdministrativo
Exceção sem análiseP2DE-mailGestor da supervisão
Correção solicitada ao operadorImediatoNotificação no appOperador responsável
Prazo da correção vencidoNo prazo definidoE-mailGestor da supervisão
Ocorrência abertaImediatoE-mailResponsável por apurar
Divergência de carga acima da tolerânciaImediatoE-mailAdministrativo e compras
Falha na integração com o ERPImediatoE-mailAdministrativo e TI
Dica: as notificações são por e-mail. Qualquer outro canal precisa ser validado com a Café Orfeu antes de entrar no escopo.

12 · Pendências para fechar escopo

PendênciaCom quemImpacto
Versão do Protheus e padrão de integração disponívelTI da Café OrfeuAlto — muda o esforço da integração
Número de licenças Fluig e se operadores de campo são usuários nomeadosCafé Orfeu · TOTVSAlto — afeta licenciamento e dimensionamento
Entrada de carga lançada pelo Fluig ou direto no ERPCafé OrfeuAlto — se ficar no ERP, o Fluig passa a ler o saldo em vez de calculá-lo, e a RN-32 muda de dono
Tolerância de divergência (percentual e folga em litros) e quem é avisado ao ultrapassá-laCafé Orfeu · comprasMédio — parametriza Gateway_DecisaoConferencia
Quem captura a carga no pátio e se terá dispositivo próprioCafé OrfeuMédio — a captura em campo depende de alguém com o app na hora da descarga
Saldo de abertura dos tanques na virada para o novo processoCafé OrfeuMédio — sem a abertura medida, o primeiro mês de conciliação não fecha
Percentual de amostragem e faixas de valorCafé OrfeuMédio — equilíbrio entre controle e agilidade
Faixas de consumo esperado por tipo de equipamentoCafé OrfeuMédio — base da regra de consumo atípico
Prazos padrão para devolução de correção e quem apura cada tipo de ocorrênciaCafé OrfeuMédio — define os prazos de escalação e o encaminhamento da apuração
Registro do preço do combustível para valorizar o consumoCafé OrfeuBaixo — pode vir do próprio Protheus
Modelo de dispositivo usado em campo e sistema operacionalCafé OrfeuBaixo — afeta os testes do app offline