Documento de Cancelamento de Entrada // VERIFICANDO
Documentação Técnica
| Nome do cliente | OSKLEN |
| Nome do projeto | Integração LINX → Protheus |
| Biblioteca / Método | wosk_queue::setProtheusDocumentoCancelamentoEntrada |
| Data | 06/03/2026 |
Documento
Histórico de CancelamentoVersões
| Data | Versão | Modificado por | Descrição da Mudança |
| 06/03/2026 | 1.0 | - | Criação da documentação do método setProtheusDocumentoCancelamentoEntrada. |
Descrição
O método setProtheusDocumentoCancelamentoEntrada é uma rotina de Entradavalidação e controle de integração utilizada pelo fluxo de cancelamento de documento de entrada. Ele opera em dois modos principais:
- Modo reinício (parâmetro
integradoinformado): quando uma chave de documento de entrada é indicada como integrada, o método reinicia a fila dos itens suspensos deProtheusCancelamentoDocumentoEntradaque dependem da integração deProtheusDocumentoEntrada. Isso permite retomar o processamento de cancelamentos que estavam aguardando a conclusão da integração do documento de entrada. - Modo verificação (parâmetro
chavesinformado): quando um array de chaves é informado, o método verifica se cada documento de entrada correspondente já foi integrado no Protheus. Para isso, consulta a tabelawosk_queueem várias ações relacionadas (ProtheusDocumentoEntrada, ProtheusDocumentoEntradaPontual, ProtheusDocumentoEntradaFull, ProtheusDocumentoEntradaLog, ProtheusDocumentoEntradaBase), seguindo uma ordem de prioridade. O resultado classifica cada chave como: integrada (situação 2), aguardando processamento ou não integrada (não encontrada em nenhuma ação).
setProtheusDocumentoCancelamentoEntradaAssinatura do método:
public function setProtheusDocumentoCancelamentoEntrada(array $chaves, string $integrado = null)
Parâmetros:
$chaves: array de chaves no padrãoF1_FILIAL-F1_DOC-F1_SERIE-F1_FORNECE-F1_LOJA(5 partes) ouF1_FILIAL-F1_DOC-F1_SERIE-F1_FORNECE-F1_LOJA-F1_TIPO(6 partes).$integrado: chave do documento de entrada que foi integrado, no formatoF1_FILIAL-F1_DOC-F1_SERIE-F1_FORNECE-F1_LOJA. Quando informada, dispara o reinício da fila de suspensos.
Retornos:
true: quando o reinício foi executado com sucesso ou quando todas as chaves verificadas estão integradas.['aguardando' => $arrAguardando]: quando há chaves em processamento (situação diferente de 2 e diferente de -1).['nao_integrado' => $arrNaoIntegrados]: quando há chaves que não foram encontradas em nenhuma ação de integração (situação -1).string: mensagem de exceção em caso de erro.
Queries
Todas as consultas utilizam a tabela wosk_queue do banco integrador ({$this->bancoIntegrador}). A variável {$chave} representa a chave completa (5 ou 6 partes); {$c[0]} a {$c[4]} são os componentes obtidos por explode('-', $chave).
Query 1 – Verificação em ProtheusDocumentoEntrada e ProtheusDocumentoEntradaPontual
Consulta a situação do documento de entrada nas ações principais. Utiliza SUBSTRING_INDEX(chave, '-', 5) para comparar os primeiros 5 segmentos da chave (F1_FILIAL, F1_DOC, F1_SERIE, F1_FORNECE, F1_LOJA).
SELECT /*+ SQL_BIG_RESULT */ /*+ SQL_NO_CACHE */ `situacao`
FROM `{$this->bancoIntegrador}`.`wosk_queue`
WHERE `acao` IN ('ProtheusDocumentoEntrada', 'ProtheusDocumentoEntradaPontual')
AND SUBSTRING_INDEX(chave, '-', 5) = '{$chave}'
Query 2 – Verificação em ProtheusDocumentoEntradaFull (fallback)
Executada quando a Query 1 não retorna resultado (integrado = -1). A chave em ProtheusDocumentoEntradaFull utiliza o formato F1_DOC-F1_SERIE-F1_FORNECE-F1_LOJA (4 partes, sem F1_FILIAL).
SELECT /*+ SQL_BIG_RESULT */ /*+ SQL_NO_CACHE */ `situacao`
FROM `{$this->bancoIntegrador}`.`wosk_queue`
WHERE `acao` = 'ProtheusDocumentoEntradaFull'
AND chave = '{$c[1]}-{$c[2]}-{$c[3]}-{$c[4]}'
Query 3 – Verificação em ProtheusDocumentoEntradaLog e ProtheusDocumentoEntradaBase (fallback)
Executada quando as Queries 1 e 2 não retornam resultado. A chave utiliza o formato completo com 5 partes: F1_FILIAL-F1_DOC-F1_SERIE-F1_FORNECE-F1_LOJA.
SELECT /*+ SQL_BIG_RESULT */ /*+ SQL_NO_CACHE */ `situacao`
FROM `{$this->bancoIntegrador}`.`wosk_queue`
WHERE `acao` IN ('ProtheusDocumentoEntradaLog', 'ProtheusDocumentoEntradaBase')
AND chave = '{$c[0]}-{$c[1]}-{$c[2]}-{$c[3]}-{$c[4]}'
Query interna do reinício (setProtheusSuspensoReiniciar)
Quando o parâmetro integrado é informado, o método chama setProtheusSuspensoReiniciar com os seguintes argumentos:
$acao: array com['ProtheusCancelamentoDocumentoEntrada']$tipoSuspensao: array com['ProtheusDocumentoEntrada']$chave:F1_FILIAL-F1_DOC-F1_SERIE-F1_FORNECE-F1_LOJA(5 primeiros segmentos de$integrado)
A query executada internamente por setProtheusSuspensoReiniciar para localizar os itens suspensos a serem reiniciados:
SELECT /*+ SQL_BIG_RESULT */ /*+ SQL_NO_CACHE */ `acao`, `token`
FROM `{$this->bancoIntegrador}`.`wosk_queue`
WHERE `acao` IN ('ProtheusCancelamentoDocumentoEntrada')
AND `situacao` = 3
AND `suspensao_tipo` IN ('ProtheusDocumentoEntrada')
AND `suspensao_chave` = '{$c[0]}-{$c[1]}-{$c[2]}-{$c[3]}-{$c[4]}'
Situações consideradas
| Valor | Significado |
2 |
Integrado com sucesso |
5 |
Considerado integrado (não sobrescreve) |
-1 |
Não encontrado em nenhuma ação |
| Outros | Aguardando processamento |