Ir para o conteúdo principal

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


Histórico de Versõ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 validaçã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 integrado informado): quando uma chave de documento de entrada é indicada como integrada, o método reinicia a fila dos itens suspensos de ProtheusCancelamentoDocumentoEntrada que dependem da integração de ProtheusDocumentoEntrada. 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 chaves informado): 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 tabela wosk_queue em 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).

Assinatura do método:

public function setProtheusDocumentoCancelamentoEntrada(array $chaves, string $integrado = null)

Parâmetros:

  • $chaves: array de chaves no padrão F1_FILIAL-F1_DOC-F1_SERIE-F1_FORNECE-F1_LOJA (5 partes) ou F1_FILIAL-F1_DOC-F1_SERIE-F1_FORNECE-F1_LOJA-F1_TIPO (6 partes).
  • $integrado: chave do documento de entrada que foi integrado, no formato F1_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