# Fluxo de execução principal

<div class="caixa-simples" id="bkmrk-"></div>![Fluxograma completo do método run(), com 6 etapas e liberação do lock no finally.](https://kb.illimitar.pro/uploads/images/gallery/2026-06/embedded-image-yyyaljd3.png)

Figura 7 — Fluxograma completo do método run(), com 6 etapas e liberação do lock no finally.

## Detalhamento de cada etapa

<table id="bkmrk-%23-m%C3%A9todo-o-que-faz-%28"><tbody><tr><th>\#</th><th>Método</th><th>O que faz (simples)</th><th>O que faz (técnico)</th></tr><tr><td>1</td><td>`verificaGetLock()`</td><td>Garante que só uma cópia rode por vez</td><td>`flock` exclusivo em arquivo temporário</td></tr><tr><td>2</td><td>`getPonteiroExecucao()`</td><td>Pergunta: "desde quando devo buscar?"</td><td>`MAX(execucao)` em `log` onde `procedure='franquia_1beat'`</td></tr><tr><td>3</td><td>`getPedidoUltimaVerificacao()`</td><td>Acha o pedido mais novo no período</td><td>`MAX(data)` em movimentação PEDIDO &gt; ponteiro</td></tr><tr><td>4</td><td>`getPedidosRecebidos()`</td><td>Copia e calcula quantidades</td><td>INSERT com CTEs + ON DUPLICATE KEY UPDATE</td></tr><tr><td>5</td><td>`removePedidosStatus()`</td><td>Apaga pedidos cancelados/abertos</td><td>`DELETE WHERE SITUACAO = 'DESATIVO'`</td></tr><tr><td>6</td><td>`atualizaPonteiroExecucao()`</td><td>Marca que terminou até tal data</td><td>INSERT/UPDATE em `log`</td></tr></tbody></table>

## Processamento incremental

O módulo **não reprocessa tudo** a cada execução. Ele usa um "marcador de página" (ponteiro) para buscar apenas pedidos alterados entre a última execução e a data do pedido mais recente.

![Apenas pedidos entre o ponteiro e a data mais recente são processados em cada execução.](https://kb.illimitar.pro/uploads/images/gallery/2026-06/embedded-image-gexpp800.png)

Figura 8 — Apenas pedidos entre o ponteiro e a data mais recente são processados em cada execução.

## Mensagens de erro comuns

<div class="caixa-erro" id="bkmrk-%22ja-tem-outro-proces">- **"Ja tem outro processo em execucao, aguarde o termino"** — outra instância do `run()` está ativa.
- **"Não foram encontrados pedidos para atualizar"** — não há pedidos novos desde o ponteiro.
- **"Nao foi possivel criar o arquivo de lock"** — problema de permissão no diretório temporário.

</div><div class="caixa-tecnica" id="bkmrk-tratamento-de-erros%3A">**Tratamento de erros:** exceções no `run()` são capturadas e enviadas a `error_byexception()`. Os métodos intermediários (`getPedidosRecebidos`, `removePedidosStatus`, `atualizaPonteiroExecucao`) também possuem try/catch interno que retorna `null` em falha sem interromper o fluxo principal.</div>