Ir para o conteúdo principal

ProtheusCupomFiscalEcommerce (STATUS: PARCIAL)

<h2 id="bkmrk-%23-documenta%C3%A7%C3%A3o-t%C3%A9cni">Documenta&ccedil;&atilde;o T&eacute;cnica</h2>
<table id="bkmrk-nome-do-cliente-exem" class="align-center" style="border-collapse: collapse; width: 100%; height: 118.963px;" border="1"><colgroup><col style="width: 50%;"><col style="width: 50%;"></colgroup>
<tbody>
<tr style="height: 29.7875px;">
<td style="height: 29.7875px;">Nome do cliente</td>
<td style="height: 29.7875px;">OSKLEN</td>
</tr>
<tr style="height: 29.7875px;">
<td style="height: 29.7875px;">Nome do projeto</td>
<td style="height: 29.7875px;">Integra&ccedil;&atilde;o LINX &rarr; Protheus</td>
</tr>
<tr style="height: 29.7875px;">
<td style="height: 29.7875px;">Biblioteca</td>
<td style="height: 29.7875px;">wosk_protheus_cupom_fiscal_ecommerce</td>
</tr>
<tr style="height: 29.6px;">
<td style="height: 29.6px;">Data</td>
<td style="height: 29.6px;">27/02/2026</td>
</tr>
</tbody>
</table>
<p id="bkmrk-%24username"><br></p>
<p id="bkmrk-%C2%A0"></p>
<h2 id="bkmrk-%23%23-hist%C3%B3rico-de-vers">Hist&oacute;rico de Vers&otilde;es</h2>
<table id="bkmrk-data-vers%C3%A3o-modifica" style="border-collapse: collapse; width: 100%; height: 60.5938px;" border="1"><colgroup><col style="width: 25%;"><col style="width: 25%;"><col style="width: 25%;"><col style="width: 25%;"></colgroup>
<tbody>
<tr style="height: 30.7969px;">
<td class="align-center" style="height: 30.7969px;">Data</td>
<td class="align-center" style="height: 30.7969px;">Vers&atilde;o</td>
<td class="align-center" style="height: 30.7969px;">Modificado por</td>
<td class="align-center" style="height: 30.7969px;">Descri&ccedil;&atilde;o da Mudan&ccedil;a</td>
</tr>
<tr style="height: 29.7969px;">
<td class="align-center" style="height: 29.7969px;">27/02/2026</td>
<td class="align-center" style="height: 29.7969px;">1.0</td>
<td class="align-center" style="height: 29.7969px;">Maykon/Gustavo</td>
<td class="align-center" style="height: 29.7969px;">Cria&ccedil;&atilde;o da documenta&ccedil;&atilde;o t&eacute;cnica do processo ProtheusCupomFiscalEcommerce.</td>
</tr>
</tbody>
</table>
<p id="bkmrk-%C2%A0-1"></p>
<h2 id="bkmrk-descri%C3%A7%C3%A3o-geral-dos-">Descri&ccedil;&atilde;o</h2>
<p id="bkmrk-lorem-ipsum-is-simpl">Esta biblioteca organiza o envio de cupons fiscais do e-commerce do LINX para o Protheus, garantindo captura consistente, prepara&ccedil;&atilde;o dos dados e registro do resultado da integra&ccedil;&atilde;o.<br></p>
<p id="bkmrk-%C2%A0-2"></p>
<h2 id="bkmrk-monitor">Capturador</h2>
<p id="bkmrk-processo%3A%C2%A0simply-dum"><a href="https://kb.illimitar.pro/books/documentacao-isnapp/page/monitor" target="_blank" rel="noopener">Descri&ccedil;&atilde;o Conceitual</a><br><br>Permite a captura manual (por identificador composto) e a captura autom&aacute;tica (por agendador de tarefas) dos cupons fiscais de e-commerce pendentes, consultando a origem e registrando os itens para processamento ass&iacute;ncrono.<br><br>A captura autom&aacute;tica segue processamento cronol&oacute;gico (ordena&ccedil;&atilde;o/pagina&ccedil;&atilde;o por data) para priorizar registros mais antigos e manter continuidade por posi&ccedil;&atilde;o; link conceitual: <a href="https://kb.illimitar.pro/books/documentacao-isnapp/page/cronologico" target="_blank" rel="noopener">Processamento cronol&oacute;gico</a>.</p>
<p id="bkmrk-%C2%A0-3"></p>
<h3 id="bkmrk-fonte">Fonte</h3>
<p id="bkmrk-%7B%7Bfonte-query%7D%7D">Origem consultada: view <code>WOSK_SERVICO_ENVIA_PROTHEUS_CUPOM_ECOMMERCE</code>.<br><br>Origem consultada (itens do cupom): view <code>WOSK_SERVICO_ENVIA_PROTHEUS_CUPOM_ITEM_ECOMMERCE</code>.<br><br>Consulta base (utilizada como origem para composi&ccedil;&atilde;o din&acirc;mica de filtros):<br><br><pre><code>SELECT
TEMP_FILIAL,
TEMP_NF_SAIDA,
TEMP_SERIE_NF,
F2_FILIAL,
F2_DOC,
F2_SERIE,
F2_CLIENTE,
F2_LOJA,
F2_TIPOCLI,
F2_EST,
F2_DUPL,
F2_EMISSAO,
F2_DTDIGIT,
F2_ESPECIE,
F2_TIPO,
F2_COND,
F2_XNATOPE,
F2_XCANAL,
F2_XNATUR,
F2_TPFRETE,
F2_VALMERC,
F2_VALBRUT,
F2_FRETE,
F2_SEGURO,
F2_DESPESA,
F2_DESCONT,
F2_VALFAT,
F2_PREFIXO,
F2_VALICM,
F2_BASEICM,
F2_ICMFRETE,
F2_VALIPI,
F2_BASEIPI,
F2_ICMSRET,
F2_BRICMS,
F2_BASIMP6,
F2_BASIMP5,
F2_VALIMP6,
F2_VALIMP5,
F2_BASFECP,
F2_BSFCCMP,
F2_BSFCPST,
F2_BASEPS3,
F2_VALPS3,
F2_BASECF3,
F2_VALCF3,
F2_MOEDA,
F2_NFORI,
F2_SERIORI,
F2_UFDEST,
F2_UFORIG,
F2_ESPECI1,
F2_VOLUME1,
F2_PLIQUI,
F2_PBRUTO,
F2_TRANSP,
F2_SDOC,
F2_CHVNFE,
F1_DAUTNFE,
F1_HAUTNFE,
F1_PROTOC,
C5_PARC1,
C5_PARC2,
C5_PARC3,
C5_PARC4,
C5_PARC5,
C5_PARC6,
C5_PARC7,
C5_PARC8,
C5_PARC9,
C5_PARC10,
C5_PARC11,
C5_PARC12,
C5_DATA1,
C5_DATA2,
C5_DATA3,
C5_DATA4,
C5_DATA5,
C5_DATA6,
C5_DATA7,
C5_DATA8,
C5_DATA9,
C5_DATA10,
C5_DATA11,
C5_DATA12,
F3_DTCANC,
F3_CODRSEF,
CREPROCESSA,
F2_XCODREP,
F2_XCNPJRE,
F2_XMARCA,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_CUPOM_ECOMMERCE (NOLOCK)</code></pre><br><br>Consulta utilizada na captura autom&aacute;tica (filtro por data e pagina&ccedil;&atilde;o por posi&ccedil;&atilde;o):<br><br><pre><code>SELECT
TEMP_FILIAL,
TEMP_NF_SAIDA,
TEMP_SERIE_NF,
F2_FILIAL,
F2_DOC,
F2_SERIE,
F2_CLIENTE,
F2_LOJA,
F2_TIPOCLI,
F2_EST,
F2_DUPL,
F2_EMISSAO,
F2_DTDIGIT,
F2_ESPECIE,
F2_TIPO,
F2_COND,
F2_XNATOPE,
F2_XCANAL,
F2_XNATUR,
F2_TPFRETE,
F2_VALMERC,
F2_VALBRUT,
F2_FRETE,
F2_SEGURO,
F2_DESPESA,
F2_DESCONT,
F2_VALFAT,
F2_PREFIXO,
F2_VALICM,
F2_BASEICM,
F2_ICMFRETE,
F2_VALIPI,
F2_BASEIPI,
F2_ICMSRET,
F2_BRICMS,
F2_BASIMP6,
F2_BASIMP5,
F2_VALIMP6,
F2_VALIMP5,
F2_BASFECP,
F2_BSFCCMP,
F2_BSFCPST,
F2_BASEPS3,
F2_VALPS3,
F2_BASECF3,
F2_VALCF3,
F2_MOEDA,
F2_NFORI,
F2_SERIORI,
F2_UFDEST,
F2_UFORIG,
F2_ESPECI1,
F2_VOLUME1,
F2_PLIQUI,
F2_PBRUTO,
F2_TRANSP,
F2_SDOC,
F2_CHVNFE,
F1_DAUTNFE,
F1_HAUTNFE,
F1_PROTOC,
C5_PARC1,
C5_PARC2,
C5_PARC3,
C5_PARC4,
C5_PARC5,
C5_PARC6,
C5_PARC7,
C5_PARC8,
C5_PARC9,
C5_PARC10,
C5_PARC11,
C5_PARC12,
C5_DATA1,
C5_DATA2,
C5_DATA3,
C5_DATA4,
C5_DATA5,
C5_DATA6,
C5_DATA7,
C5_DATA8,
C5_DATA9,
C5_DATA10,
C5_DATA11,
C5_DATA12,
F3_DTCANC,
F3_CODRSEF,
CREPROCESSA,
F2_XCODREP,
F2_XCNPJRE,
F2_XMARCA,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_CUPOM_ECOMMERCE (NOLOCK)
WHERE
DATA_PARA_TRANSFERENCIA &gt;= '&lt;DATA_PARA_TRANSFERENCIA&gt;'
ORDER BY
DATA_PARA_TRANSFERENCIA ASC
OFFSET
&lt;OFFSET&gt; ROWS FETCH NEXT &lt;LIMITE&gt; ROWS ONLY</code></pre><br><br>Consulta utilizada na captura manual (filtros din&acirc;micos a partir do identificador informado):<br><br><pre><code>SELECT
TEMP_FILIAL,
TEMP_NF_SAIDA,
TEMP_SERIE_NF,
F2_FILIAL,
F2_DOC,
F2_SERIE,
F2_CLIENTE,
F2_LOJA,
F2_TIPOCLI,
F2_EST,
F2_DUPL,
F2_EMISSAO,
F2_DTDIGIT,
F2_ESPECIE,
F2_TIPO,
F2_COND,
F2_XNATOPE,
F2_XCANAL,
F2_XNATUR,
F2_TPFRETE,
F2_VALMERC,
F2_VALBRUT,
F2_FRETE,
F2_SEGURO,
F2_DESPESA,
F2_DESCONT,
F2_VALFAT,
F2_PREFIXO,
F2_VALICM,
F2_BASEICM,
F2_ICMFRETE,
F2_VALIPI,
F2_BASEIPI,
F2_ICMSRET,
F2_BRICMS,
F2_BASIMP6,
F2_BASIMP5,
F2_VALIMP6,
F2_VALIMP5,
F2_BASFECP,
F2_BSFCCMP,
F2_BSFCPST,
F2_BASEPS3,
F2_VALPS3,
F2_BASECF3,
F2_VALCF3,
F2_MOEDA,
F2_NFORI,
F2_SERIORI,
F2_UFDEST,
F2_UFORIG,
F2_ESPECI1,
F2_VOLUME1,
F2_PLIQUI,
F2_PBRUTO,
F2_TRANSP,
F2_SDOC,
F2_CHVNFE,
F1_DAUTNFE,
F1_HAUTNFE,
F1_PROTOC,
C5_PARC1,
C5_PARC2,
C5_PARC3,
C5_PARC4,
C5_PARC5,
C5_PARC6,
C5_PARC7,
C5_PARC8,
C5_PARC9,
C5_PARC10,
C5_PARC11,
C5_PARC12,
C5_DATA1,
C5_DATA2,
C5_DATA3,
C5_DATA4,
C5_DATA5,
C5_DATA6,
C5_DATA7,
C5_DATA8,
C5_DATA9,
C5_DATA10,
C5_DATA11,
C5_DATA12,
F3_DTCANC,
F3_CODRSEF,
CREPROCESSA,
F2_XCODREP,
F2_XCNPJRE,
F2_XMARCA,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_CUPOM_ECOMMERCE (NOLOCK)
WHERE
F2_FILIAL = '&lt;F2_FILIAL&gt;'
AND F2_DOC = '&lt;F2_DOC&gt;'
AND F2_SERIE = '&lt;F2_SERIE&gt;'
AND F2_CLIENTE = '&lt;F2_CLIENTE&gt;'
AND F2_LOJA = '&lt;F2_LOJA&gt;'</code></pre><br><br>Consulta utilizada para compor os itens do cupom:<br><br><pre><code>SELECT
D2_FILIAL,
D2_ITEM,
D2_COD,
D2_TP,
D2_UM,
D2_LOCAL,
D2_QUANT,
D2_PRCVEN,
D2_PRUNIT,
D2_TOTAL,
D2_DESC,
D2_DESCON,
D2_SEGURO,
D2_VALFRE,
D2_DESPESA,
D2_VALBRUT,
D2_EMISSAO,
D2_DTDIGIT,
D2_DOC,
D2_SERIE,
D2_SDOC,
D2_TIPO,
D2_ESPECIE,
D2_CLIENTE,
D2_LOJA,
D2_EST,
D2_CLASFIS,
D2_TES,
D2_CF,
D2_BASEIPI,
D2_IPI,
D2_VALIPI,
D2_BASEICM,
D2_PICM,
D2_VALICM,
D2_BASFECP,
D2_ALQFECP,
D2_VALFECP,
D2_BRICMS,
D2_ALIQSOL,
D2_MARGEM,
D2_ICMSRET,
D2_BSFCPST,
D2_ALFCPST,
D2_VFECPST,
D2_BASIMP5,
D2_ALQIMP5,
D2_VALIMP5,
D2_BASIMP6,
D2_ALQIMP6,
D2_VALIMP6,
D2_BASEPS3,
D2_ALIQPS3,
D2_VALPS3,
D2_BASECF3,
D2_ALIQCF3,
D2_VALCF3,
D2_DESCZFP,
D2_DESCZFC,
D2_BASEDES,
D2_ALIQCMP,
D2_PDORI,
D2_PDDES,
D2_PDIFAL,
D2_BSFCCMP,
D2_ALFCCMP,
D2_VFCPDIF,
D2_CC,
D2_CONTA,
D2_PESO,
D2_ESTOQUE,
D2_NFORI,
D2_SERIORI,
D2_ITEMORI,
D2_XPRMDPR,
D2_XALIQBA,
D2_ORIGLAN,
D2_OP,
D2_XPDWISE,
D2_XPDLINX,
D2_XCOLEC,
D2_XCOLDE,
DATA_PARA_TRANSFERENCIA
FROM
WOSK_SERVICO_ENVIA_PROTHEUS_CUPOM_ITEM_ECOMMERCE (NOLOCK)
WHERE
D2_FILIAL = '&lt;D2_FILIAL&gt;'
AND D2_DOC = '&lt;D2_DOC&gt;'
AND D2_SERIE = '&lt;D2_SERIE&gt;'
AND D2_CLIENTE = '&lt;D2_CLIENTE&gt;'
AND D2_LOJA = '&lt;D2_LOJA&gt;'</code></pre></p>
<p id="bkmrk-%C2%A0-4"></p>
<h3 id="bkmrk-opera%C3%A7%C3%B5es-com-dados-">Opera&ccedil;&otilde;es com Dados</h3>
<p id="bkmrk-leitura%3A-consulta-da">- Leitura: consulta as views <code>WOSK_SERVICO_ENVIA_PROTHEUS_CUPOM_ECOMMERCE</code> (cabe&ccedil;alho) e <code>WOSK_SERVICO_ENVIA_PROTHEUS_CUPOM_ITEM_ECOMMERCE</code> (itens) para obter o registro atual e compor a lista <code>ITENS</code> do cupom antes de registrar para processamento ass&iacute;ncrono.<br><br>- Captura autom&aacute;tica (processamento cronol&oacute;gico): aplica filtro por <code>DATA_PARA_TRANSFERENCIA</code>, ordena por <code>DATA_PARA_TRANSFERENCIA</code> e pagina com <code>OFFSET ... FETCH NEXT ...</code>, garantindo prioriza&ccedil;&atilde;o dos registros mais antigos e continuidade por posi&ccedil;&atilde;o.<br><br>- Captura manual: recebe um identificador composto, valida o formato (quantidade de partes) e consulta a origem com filtros exatos (<code>F2_FILIAL</code>, <code>F2_DOC</code>, <code>F2_SERIE</code>, <code>F2_CLIENTE</code>, <code>F2_LOJA</code>) para recuperar o cupom solicitado e seus itens.<br><br>- Persist&ecirc;ncia de posi&ccedil;&atilde;o/continuidade: registra e atualiza o controle do capturador na tabela <code>wosk_monitor</code> (banco <code>{$this-&gt;bancoIntegrador}</code>) usando <code>evento = 'ProtheusCupomFiscalEcommerce'</code>, mantendo posi&ccedil;&atilde;o, filtro aplicado, datas e situa&ccedil;&atilde;o para auditoria e retomada.</p>
<div id="bkmrk-"></div>
<p id="bkmrk-%C2%A0-5"></p>
<h2 id="bkmrk-fila-de-processament">Fila de Processamento</h2>
<div id="bkmrk-%7B%7Bdescricao_monitor%7D"></div>
<p id="bkmrk-processo%3A-is-simply-"><a href="https://kb.illimitar.pro/books/documentacao-isnapp/page/queue" target="_blank" rel="noopener">Descri&ccedil;&atilde;o Conceitual</a></p>
<p id="bkmrk-%C2%A0-6">A fila recupera um registro pendente e utiliza o conte&uacute;do do registro como base do payload de integra&ccedil;&atilde;o. Em seguida, aplica transforma&ccedil;&otilde;es obrigat&oacute;rias de padroniza&ccedil;&atilde;o e realiza a chamada ao Protheus.<br><br>O item de fila &eacute; persistido e atualizado na tabela <code>wosk_queue</code> (banco <code>{$this-&gt;bancoIntegrador}</code>) ao longo do processamento, registrando conte&uacute;do, retorno, mensagem, tempo e situa&ccedil;&atilde;o final para auditoria e acompanhamento operacional.</p>
<h3 id="bkmrk-reestrutura%C3%A7%C3%A3o-e-alt-1">Estrutura&ccedil;&atilde;o de Dados</h3>
<div id="bkmrk-%7B%7Bestruturacao-de-da">
<div>A estrutura oficial do payload de integra&ccedil;&atilde;o &eacute; definida pelo array <code>$field</code> da fila, refletindo os campos enviados ao Protheus no recurso <code>documento_saida</code>.<br><br>
<table style="border-collapse: collapse; width: 100%;" border="1">
<colgroup><col style="width: 35%;"><col style="width: 65%;"></colgroup>
<tbody>
<tr>
<td class="align-center">Campo no payload</td>
<td class="align-center">Origem no registro atual</td>
</tr>
<tr><td><code>F2_FILIAL</code></td><td><code>F2_FILIAL</code></td></tr>
<tr><td><code>F2_DOC</code></td><td><code>F2_DOC</code></td></tr>
<tr><td><code>F2_SERIE</code></td><td><code>F2_SERIE</code></td></tr>
<tr><td><code>F2_CLIENTE</code></td><td><code>F2_CLIENTE</code></td></tr>
<tr><td><code>F2_LOJA</code></td><td><code>F2_LOJA</code></td></tr>
<tr><td><code>F2_TIPOCLI</code></td><td><code>F2_TIPOCLI</code></td></tr>
<tr><td><code>F2_EST</code></td><td><code>F2_EST</code></td></tr>
<tr><td><code>F2_DUPL</code></td><td><code>F2_DUPL</code></td></tr>
<tr><td><code>F2_EMISSAO</code></td><td><code>F2_EMISSAO</code></td></tr>
<tr><td><code>F2_DTDIGIT</code></td><td><code>F2_DTDIGIT</code></td></tr>
<tr><td><code>F2_ESPECIE</code></td><td><code>F2_ESPECIE</code></td></tr>
<tr><td><code>F2_TIPO</code></td><td><code>F2_TIPO</code></td></tr>
<tr><td><code>F2_COND</code></td><td><code>F2_COND</code></td></tr>
<tr><td><code>F2_XNATOPE</code></td><td><code>F2_XNATOPE</code></td></tr>
<tr><td><code>F2_XCANAL</code></td><td><code>F2_XCANAL</code></td></tr>
<tr><td><code>F2_XNATUR</code></td><td><code>F2_XNATUR</code></td></tr>
<tr><td><code>F2_TPFRETE</code></td><td><code>F2_TPFRETE</code></td></tr>
<tr><td><code>F2_VALMERC</code></td><td><code>F2_VALMERC</code></td></tr>
<tr><td><code>F2_VALBRUT</code></td><td><code>F2_VALBRUT</code></td></tr>
<tr><td><code>F2_FRETE</code></td><td><code>F2_FRETE</code></td></tr>
<tr><td><code>F2_SEGURO</code></td><td><code>F2_SEGURO</code></td></tr>
<tr><td><code>F2_DESPESA</code></td><td><code>F2_DESPESA</code></td></tr>
<tr><td><code>F2_DESCONT</code></td><td><code>F2_DESCONT</code></td></tr>
<tr><td><code>F2_VALFAT</code></td><td><code>F2_VALFAT</code></td></tr>
<tr><td><code>F2_PREFIXO</code></td><td><code>F2_PREFIXO</code></td></tr>
<tr><td><code>F2_VALICM</code></td><td><code>F2_VALICM</code></td></tr>
<tr><td><code>F2_BASEICM</code></td><td><code>F2_BASEICM</code></td></tr>
<tr><td><code>F2_ICMFRET</code></td><td><code>F2_ICMFRETE</code></td></tr>
<tr><td><code>F2_VALIPI</code></td><td><code>F2_VALIPI</code></td></tr>
<tr><td><code>F2_BASEIPI</code></td><td><code>F2_BASEIPI</code></td></tr>
<tr><td><code>F2_ICMSRET</code></td><td><code>F2_ICMSRET</code></td></tr>
<tr><td><code>F2_BRICMS</code></td><td><code>F2_BRICMS</code></td></tr>
<tr><td><code>F2_BASIMP5</code></td><td><code>F2_BASIMP5</code></td></tr>
<tr><td><code>F2_BASIMP6</code></td><td><code>F2_BASIMP6</code></td></tr>
<tr><td><code>F2_VALIMP5</code></td><td><code>F2_VALIMP5</code></td></tr>
<tr><td><code>F2_VALIMP6</code></td><td><code>F2_VALIMP6</code></td></tr>
<tr><td><code>F2_BASFECP</code></td><td><code>F2_BASFECP</code></td></tr>
<tr><td><code>F2_BSFCCMP</code></td><td><code>F2_BSFCCMP</code></td></tr>
<tr><td><code>F2_BSFCPST</code></td><td><code>F2_BSFCPST</code></td></tr>
<tr><td><code>F2_BASEPS3</code></td><td><code>F2_BASEPS3</code></td></tr>
<tr><td><code>F2_VALPS3</code></td><td><code>F2_VALPS3</code></td></tr>
<tr><td><code>F2_BASECF3</code></td><td><code>F2_BASECF3</code></td></tr>
<tr><td><code>F2_VALCF3</code></td><td><code>F2_VALCF3</code></td></tr>
<tr><td><code>F2_MOEDA</code></td><td><code>F2_MOEDA</code></td></tr>
<tr><td><code>F2_NFORI</code></td><td><code>F2_NFORI</code></td></tr>
<tr><td><code>F2_SERIORI</code></td><td><code>F2_SERIORI</code></td></tr>
<tr><td><code>F2_UFDEST</code></td><td><code>F2_UFDEST</code></td></tr>
<tr><td><code>F2_UFORIG</code></td><td><code>F2_UFORIG</code></td></tr>
<tr><td><code>F2_ESPECI1</code></td><td><code>F2_ESPECI1</code></td></tr>
<tr><td><code>F2_VOLUME1</code></td><td><code>F2_VOLUME1</code></td></tr>
<tr><td><code>F2_PLIQUI</code></td><td><code>F2_PLIQUI</code></td></tr>
<tr><td><code>F2_PBRUTO</code></td><td><code>F2_PBRUTO</code></td></tr>
<tr><td><code>F2_TRANSP</code></td><td><code>F2_TRANSP</code></td></tr>
<tr><td><code>F2_SDOC</code></td><td><code>F2_SDOC</code></td></tr>
<tr><td><code>F2_CHVNFE</code></td><td><code>F2_CHVNFE</code></td></tr>
<tr><td><code>F2_DAUTNFE</code></td><td><code>F1_DAUTNFE</code></td></tr>
<tr><td><code>F2_HAUTNFE</code></td><td><code>F1_HAUTNFE</code></td></tr>
<tr><td><code>F2_XVENPRE</code></td><td><code>F2_XVENPRE</code></td></tr>
<tr><td><code>F3_PROTOC</code></td><td><code>F1_PROTOC</code></td></tr>
<tr><td><code>C5_PARC1</code></td><td><code>C5_PARC1</code></td></tr>
<tr><td><code>C5_PARC2</code></td><td><code>C5_PARC2</code></td></tr>
<tr><td><code>C5_PARC3</code></td><td><code>C5_PARC3</code></td></tr>
<tr><td><code>C5_PARC4</code></td><td><code>C5_PARC4</code></td></tr>
<tr><td><code>C5_PARC5</code></td><td><code>C5_PARC5</code></td></tr>
<tr><td><code>C5_PARC6</code></td><td><code>C5_PARC6</code></td></tr>
<tr><td><code>C5_PARC7</code></td><td><code>C5_PARC7</code></td></tr>
<tr><td><code>C5_PARC8</code></td><td><code>C5_PARC8</code></td></tr>
<tr><td><code>C5_PARC9</code></td><td><code>C5_PARC9</code></td></tr>
<tr><td><code>C5_PARC10</code></td><td><code>C5_PARC10</code></td></tr>
<tr><td><code>C5_PARC11</code></td><td><code>C5_PARC11</code></td></tr>
<tr><td><code>C5_PARC12</code></td><td><code>C5_PARC12</code></td></tr>
<tr><td><code>C5_DATA1</code></td><td><code>C5_DATA1</code></td></tr>
<tr><td><code>C5_DATA2</code></td><td><code>C5_DATA2</code></td></tr>
<tr><td><code>C5_DATA3</code></td><td><code>C5_DATA3</code></td></tr>
<tr><td><code>C5_DATA4</code></td><td><code>C5_DATA4</code></td></tr>
<tr><td><code>C5_DATA5</code></td><td><code>C5_DATA5</code></td></tr>
<tr><td><code>C5_DATA6</code></td><td><code>C5_DATA6</code></td></tr>
<tr><td><code>C5_DATA7</code></td><td><code>C5_DATA7</code></td></tr>
<tr><td><code>C5_DATA8</code></td><td><code>C5_DATA8</code></td></tr>
<tr><td><code>C5_DATA9</code></td><td><code>C5_DATA9</code></td></tr>
<tr><td><code>C5_DATA10</code></td><td><code>C5_DATA10</code></td></tr>
<tr><td><code>C5_DATA11</code></td><td><code>C5_DATA11</code></td></tr>
<tr><td><code>C5_DATA12</code></td><td><code>C5_DATA12</code></td></tr>
<tr><td><code>F3_DTCANC</code></td><td><code>F3_DTCANC</code></td></tr>
<tr><td><code>F3_CODRSEF</code></td><td><code>F3_CODRSEF</code></td></tr>
<tr><td><code>CREPROCESSA</code></td><td><code>CREPROCESSA</code></td></tr>
<tr><td><code>F2_XCODREP</code></td><td><code>F2_XCODREP</code></td></tr>
<tr><td><code>F2_XCNPJRE</code></td><td><code>F2_XCNPJRE</code></td></tr>
<tr><td><code>F2_XMARCA</code></td><td><code>F2_XMARCA</code></td></tr>
<tr><td><code>ITENS</code></td><td>Lista de itens obtida na origem de itens, composta como <code>ITENS[]</code>.</td></tr>
<tr><td><code>ITENS[].D2_FILIAL</code></td><td><code>D2_FILIAL</code></td></tr>
<tr><td><code>ITENS[].D2_ITEM</code></td><td><code>D2_ITEM</code></td></tr>
<tr><td><code>ITENS[].D2_COD</code></td><td><code>D2_COD</code></td></tr>
<tr><td><code>ITENS[].D2_TP</code></td><td><code>D2_TP</code></td></tr>
<tr><td><code>ITENS[].D2_UM</code></td><td><code>D2_UM</code></td></tr>
<tr><td><code>ITENS[].D2_LOCAL</code></td><td><code>D2_LOCAL</code></td></tr>
<tr><td><code>ITENS[].D2_QUANT</code></td><td><code>D2_QUANT</code></td></tr>
<tr><td><code>ITENS[].D2_PRCVEN</code></td><td><code>D2_PRCVEN</code></td></tr>
<tr><td><code>ITENS[].D2_PRUNIT</code></td><td><code>D2_PRUNIT</code></td></tr>
<tr><td><code>ITENS[].D2_TOTAL</code></td><td><code>D2_TOTAL</code></td></tr>
<tr><td><code>ITENS[].D2_DESC</code></td><td><code>D2_DESC</code></td></tr>
<tr><td><code>ITENS[].D2_DESCON</code></td><td><code>D2_DESCON</code></td></tr>
<tr><td><code>ITENS[].D2_SEGURO</code></td><td><code>D2_SEGURO</code></td></tr>
<tr><td><code>ITENS[].D2_VALFRE</code></td><td><code>D2_VALFRE</code></td></tr>
<tr><td><code>ITENS[].D2_DESPESA</code></td><td><code>D2_DESPESA</code></td></tr>
<tr><td><code>ITENS[].D2_VALBRUT</code></td><td><code>D2_VALBRUT</code></td></tr>
<tr><td><code>ITENS[].D2_EMISSAO</code></td><td><code>D2_EMISSAO</code></td></tr>
<tr><td><code>ITENS[].D2_DTDIGIT</code></td><td><code>D2_DTDIGIT</code></td></tr>
<tr><td><code>ITENS[].D2_DOC</code></td><td><code>D2_DOC</code></td></tr>
<tr><td><code>ITENS[].D2_SERIE</code></td><td><code>D2_SERIE</code></td></tr>
<tr><td><code>ITENS[].D2_SDOC</code></td><td><code>D2_SDOC</code></td></tr>
<tr><td><code>ITENS[].D2_TIPO</code></td><td><code>D2_TIPO</code></td></tr>
<tr><td><code>ITENS[].D2_ESPECIE</code></td><td><code>D2_ESPECIE</code></td></tr>
<tr><td><code>ITENS[].D2_CLIENTE</code></td><td><code>D2_CLIENTE</code></td></tr>
<tr><td><code>ITENS[].D2_LOJA</code></td><td><code>D2_LOJA</code></td></tr>
<tr><td><code>ITENS[].D2_EST</code></td><td><code>D2_EST</code></td></tr>
<tr><td><code>ITENS[].D2_CLASFIS</code></td><td><code>D2_CLASFIS</code></td></tr>
<tr><td><code>ITENS[].D2_TES</code></td><td><code>D2_TES</code></td></tr>
<tr><td><code>ITENS[].D2_CF</code></td><td><code>D2_CF</code></td></tr>
<tr><td><code>ITENS[].D2_BASEIPI</code></td><td><code>D2_BASEIPI</code></td></tr>
<tr><td><code>ITENS[].D2_IPI</code></td><td><code>D2_IPI</code></td></tr>
<tr><td><code>ITENS[].D2_VALIPI</code></td><td><code>D2_VALIPI</code></td></tr>
<tr><td><code>ITENS[].D2_BASEICM</code></td><td><code>D2_BASEICM</code></td></tr>
<tr><td><code>ITENS[].D2_PICM</code></td><td><code>D2_PICM</code></td></tr>
<tr><td><code>ITENS[].D2_VALICM</code></td><td><code>D2_VALICM</code></td></tr>
<tr><td><code>ITENS[].D2_BASFECP</code></td><td><code>D2_BASFECP</code></td></tr>
<tr><td><code>ITENS[].D2_ALQFECP</code></td><td><code>D2_ALQFECP</code></td></tr>
<tr><td><code>ITENS[].D2_VALFECP</code></td><td><code>D2_VALFECP</code></td></tr>
<tr><td><code>ITENS[].D2_BRICMS</code></td><td><code>D2_BRICMS</code></td></tr>
<tr><td><code>ITENS[].D2_ALIQSOL</code></td><td><code>D2_ALIQSOL</code></td></tr>
<tr><td><code>ITENS[].D2_MARGEM</code></td><td><code>D2_MARGEM</code></td></tr>
<tr><td><code>ITENS[].D2_ICMSRET</code></td><td><code>D2_ICMSRET</code></td></tr>
<tr><td><code>ITENS[].D2_BSFCPST</code></td><td><code>D2_BSFCPST</code></td></tr>
<tr><td><code>ITENS[].D2_ALFCPST</code></td><td><code>D2_ALFCPST</code></td></tr>
<tr><td><code>ITENS[].D2_VFECPST</code></td><td><code>D2_VFECPST</code></td></tr>
<tr><td><code>ITENS[].D2_BASIMP5</code></td><td><code>D2_BASIMP5</code></td></tr>
<tr><td><code>ITENS[].D2_ALQIMP5</code></td><td><code>D2_ALQIMP5</code></td></tr>
<tr><td><code>ITENS[].D2_VALIMP5</code></td><td><code>D2_VALIMP5</code></td></tr>
<tr><td><code>ITENS[].D2_BASIMP6</code></td><td><code>D2_BASIMP6</code></td></tr>
<tr><td><code>ITENS[].D2_ALQIMP6</code></td><td><code>D2_ALQIMP6</code></td></tr>
<tr><td><code>ITENS[].D2_VALIMP6</code></td><td><code>D2_VALIMP6</code></td></tr>
<tr><td><code>ITENS[].D2_BASEPS3</code></td><td><code>D2_BASEPS3</code></td></tr>
<tr><td><code>ITENS[].D2_ALIQPS3</code></td><td><code>D2_ALIQPS3</code></td></tr>
<tr><td><code>ITENS[].D2_VALPS3</code></td><td><code>D2_VALPS3</code></td></tr>
<tr><td><code>ITENS[].D2_BASECF3</code></td><td><code>D2_BASECF3</code></td></tr>
<tr><td><code>ITENS[].D2_ALIQCF3</code></td><td><code>D2_ALIQCF3</code></td></tr>
<tr><td><code>ITENS[].D2_VALCF3</code></td><td><code>D2_VALCF3</code></td></tr>
<tr><td><code>ITENS[].D2_DESCZFP</code></td><td><code>D2_DESCZFP</code></td></tr>
<tr><td><code>ITENS[].D2_DESCZFC</code></td><td><code>D2_DESCZFC</code></td></tr>
<tr><td><code>ITENS[].D2_BASEDES</code></td><td><code>D2_BASEDES</code></td></tr>
<tr><td><code>ITENS[].D2_ALIQCMP</code></td><td><code>D2_ALIQCMP</code></td></tr>
<tr><td><code>ITENS[].D2_PDORI</code></td><td><code>D2_PDORI</code></td></tr>
<tr><td><code>ITENS[].D2_PDDES</code></td><td><code>D2_PDDES</code></td></tr>
<tr><td><code>ITENS[].D2_DIFAL</code></td><td><code>D2_PDIFAL</code></td></tr>
<tr><td><code>ITENS[].D2_BSFCCMP</code></td><td><code>D2_BSFCCMP</code></td></tr>
<tr><td><code>ITENS[].D2_ALFCCMP</code></td><td><code>D2_ALFCCMP</code></td></tr>
<tr><td><code>ITENS[].D2_VFCPDIF</code></td><td><code>D2_VFCPDIF</code></td></tr>
<tr><td><code>ITENS[].D2_CCUSTO</code></td><td><code>D2_CC</code></td></tr>
<tr><td><code>ITENS[].D2_CONTA</code></td><td><code>D2_CONTA</code></td></tr>
<tr><td><code>ITENS[].D2_PESO</code></td><td><code>D2_PESO</code></td></tr>
<tr><td><code>ITENS[].D2_ESTOQUE</code></td><td><code>D2_ESTOQUE</code></td></tr>
<tr><td><code>ITENS[].D2_NFORI</code></td><td><code>D2_NFORI</code></td></tr>
<tr><td><code>ITENS[].D2_SERIORI</code></td><td><code>D2_SERIORI</code></td></tr>
<tr><td><code>ITENS[].D2_ITEMORI</code></td><td><code>D2_ITEMORI</code></td></tr>
<tr><td><code>ITENS[].D2_XPRMDPR</code></td><td><code>D2_XPRMDPR</code></td></tr>
<tr><td><code>ITENS[].D2_XALIQBA</code></td><td><code>D2_XALIQBA</code></td></tr>
<tr><td><code>ITENS[].D2_ORIGLAN</code></td><td><code>D2_ORIGLAN</code></td></tr>
<tr><td><code>ITENS[].D2_OP</code></td><td><code>D2_OP</code></td></tr>
<tr><td><code>ITENS[].D2_XPDWISE</code></td><td><code>D2_XPDWISE</code></td></tr>
<tr><td><code>ITENS[].D2_XPDLINX</code></td><td><code>D2_XPDLINX</code></td></tr>
<tr><td><code>ITENS[].D2_XCOLEC</code></td><td><code>D2_XCOLEC</code></td></tr>
<tr><td><code>ITENS[].D2_XCOLDE</code></td><td><code>D2_XCOLDE</code></td></tr>
</tbody>
</table>
<br>
Exemplo de payload enviado (com todos os campos previstos em <code>$field</code>):<br><br>
<pre><code>{
"F2_FILIAL": "",
"F2_DOC": "",
"F2_SERIE": "",
"F2_CLIENTE": "",
"F2_LOJA": "",
"F2_TIPOCLI": "",
"F2_EST": "",
"F2_DUPL": "",
"F2_EMISSAO": "",
"F2_DTDIGIT": "",
"F2_ESPECIE": "",
"F2_TIPO": "",
"F2_COND": "",
"F2_XNATOPE": "",
"F2_XCANAL": "",
"F2_XNATUR": "",
"F2_TPFRETE": "",
"F2_VALMERC": "",
"F2_VALBRUT": "",
"F2_FRETE": "",
"F2_SEGURO": "",
"F2_DESPESA": "",
"F2_DESCONT": "",
"F2_VALFAT": "",
"F2_PREFIXO": "",
"F2_VALICM": "",
"F2_BASEICM": "",
"F2_ICMFRET": "",
"F2_VALIPI": "",
"F2_BASEIPI": "",
"F2_ICMSRET": "",
"F2_BRICMS": "",
"F2_BASIMP5": "",
"F2_BASIMP6": "",
"F2_VALIMP5": "",
"F2_VALIMP6": "",
"F2_BASFECP": "",
"F2_BSFCCMP": "",
"F2_BSFCPST": "",
"F2_BASEPS3": "",
"F2_VALPS3": "",
"F2_BASECF3": "",
"F2_VALCF3": "",
"F2_MOEDA": "",
"F2_NFORI": "",
"F2_SERIORI": "",
"F2_UFDEST": "",
"F2_UFORIG": "",
"F2_ESPECI1": "",
"F2_VOLUME1": "",
"F2_PLIQUI": "",
"F2_PBRUTO": "",
"F2_TRANSP": "",
"F2_SDOC": "",
"F2_CHVNFE": "",
"F2_DAUTNFE": "",
"F2_HAUTNFE": "",
"F2_XVENPRE": "",
"F3_PROTOC": "",
"C5_PARC1": "",
"C5_PARC2": "",
"C5_PARC3": "",
"C5_PARC4": "",
"C5_PARC5": "",
"C5_PARC6": "",
"C5_PARC7": "",
"C5_PARC8": "",
"C5_PARC9": "",
"C5_PARC10": "",
"C5_PARC11": "",
"C5_PARC12": "",
"C5_DATA1": "",
"C5_DATA2": "",
"C5_DATA3": "",
"C5_DATA4": "",
"C5_DATA5": "",
"C5_DATA6": "",
"C5_DATA7": "",
"C5_DATA8": "",
"C5_DATA9": "",
"C5_DATA10": "",
"C5_DATA11": "",
"C5_DATA12": "",
"F3_DTCANC": "",
"F3_CODRSEF": "",
"CREPROCESSA": "",
"F2_XCODREP": "",
"F2_XCNPJRE": "",
"F2_XMARCA": "",
"ITENS": [
{
"D2_FILIAL": "",
"D2_ITEM": "",
"D2_COD": "",
"D2_TP": "",
"D2_UM": "",
"D2_LOCAL": "",
"D2_QUANT": "",
"D2_PRCVEN": "",
"D2_PRUNIT": "",
"D2_TOTAL": "",
"D2_DESC": "",
"D2_DESCON": "",
"D2_SEGURO": "",
"D2_VALFRE": "",
"D2_DESPESA": "",
"D2_VALBRUT": "",
"D2_EMISSAO": "",
"D2_DTDIGIT": "",
"D2_DOC": "",
"D2_SERIE": "",
"D2_SDOC": "",
"D2_TIPO": "",
"D2_ESPECIE": "",
"D2_CLIENTE": "",
"D2_LOJA": "",
"D2_EST": "",
"D2_CLASFIS": "",
"D2_TES": "",
"D2_CF": "",
"D2_BASEIPI": "",
"D2_IPI": "",
"D2_VALIPI": "",
"D2_BASEICM": "",
"D2_PICM": "",
"D2_VALICM": "",
"D2_BASFECP": "",
"D2_ALQFECP": "",
"D2_VALFECP": "",
"D2_BRICMS": "",
"D2_ALIQSOL": "",
"D2_MARGEM": "",
"D2_ICMSRET": "",
"D2_BSFCPST": "",
"D2_ALFCPST": "",
"D2_VFECPST": "",
"D2_BASIMP5": "",
"D2_ALQIMP5": "",
"D2_VALIMP5": "",
"D2_BASIMP6": "",
"D2_ALQIMP6": "",
"D2_VALIMP6": "",
"D2_BASEPS3": "",
"D2_ALIQPS3": "",
"D2_VALPS3": "",
"D2_BASECF3": "",
"D2_ALIQCF3": "",
"D2_VALCF3": "",
"D2_DESCZFP": "",
"D2_DESCZFC": "",
"D2_BASEDES": "",
"D2_ALIQCMP": "",
"D2_PDORI": "",
"D2_PDDES": "",
"D2_DIFAL": "",
"D2_BSFCCMP": "",
"D2_ALFCCMP": "",
"D2_VFCPDIF": "",
"D2_CCUSTO": "",
"D2_CONTA": "",
"D2_PESO": "",
"D2_ESTOQUE": "",
"D2_NFORI": "",
"D2_SERIORI": "",
"D2_ITEMORI": "",
"D2_XPRMDPR": "",
"D2_XALIQBA": "",
"D2_ORIGLAN": "",
"D2_OP": "",
"D2_XPDWISE": "",
"D2_XPDLINX": "",
"D2_XCOLEC": "",
"D2_XCOLDE": ""
}
]
}</code></pre><br><br><br></div>
</div>
<div id="bkmrk--1"></div>
<div id="bkmrk--2"></div>
<div id="bkmrk--3"></div>
<h3 id="bkmrk-tratamento-de-dados">Tratamento de Dados</h3>
<p id="bkmrk-%7B%7Btratamento-de-dado">Antes do envio, os campos num&eacute;ricos do cupom s&atilde;o padronizados por rotina num&eacute;rica, garantindo consist&ecirc;ncia de formato para integra&ccedil;&atilde;o.<br><br>- <code>F2_VALMERC, F2_VALBRUT, F2_FRETE, F2_DESPESA, F2_SEGURO, F2_DESCONT, F2_VALFAT, F2_VALICM, F2_BASEICM, F2_ICMFRET, F2_VALIPI, F2_BASEIPI, F2_ICMSRET, F2_BRICMS, F2_BASIMP5, F2_VALIMP5, F2_BASIMP6, F2_VALIMP6, F2_BASFECP, F2_BSFCCMP, F2_BSFCPST, F2_BASEPS3, F2_VALPS3, F2_BASECF3, F2_VALCF3, F2_MOEDA, F2_VOLUME1, F2_PLIQUI, F2_PBRUTO, C5_PARC1, C5_PARC2, C5_PARC3, C5_PARC4, C5_PARC5, C5_PARC6, C5_PARC7, C5_PARC8, C5_PARC9, C5_PARC10, C5_PARC11, C5_PARC12</code>: normalizados com o padr&atilde;o da rotina num&eacute;rica.<br><br>Nos itens (<code>ITENS[]</code>), os campos num&eacute;ricos tamb&eacute;m s&atilde;o padronizados, com aten&ccedil;&atilde;o especial &agrave; precis&atilde;o:<br><br>- <code>D2_QUANT</code>: normalizado com 3 casas decimais (<code>setNumeric(..., 3, false)</code>).<br>- <code>D2_PRCVEN</code>: normalizado com 5 casas decimais (<code>setNumeric(..., 5, false)</code>).<br>- <code>D2_PRUNIT</code>: normalizado com 5 casas decimais (<code>setNumeric(..., 5, false)</code>).<br><br>- <code>D2_TOTAL, D2_DESC, D2_DESCON, D2_SEGURO, D2_VALFRE, D2_DESPESA, D2_VALBRUT, D2_BASEIPI, D2_IPI, D2_VALIPI, D2_BASEICM, D2_PICM, D2_VALICM, D2_BASFECP, D2_ALQFECP, D2_VALFECP, D2_BRICMS, D2_ALIQSOL, D2_MARGEM, D2_ICMSRET, D2_BSFCPST, D2_ALFCPST, D2_VFECPST, D2_BASIMP5, D2_ALQIMP5, D2_VALIMP5, D2_BASIMP6, D2_ALQIMP6, D2_VALIMP6, D2_BASEPS3, D2_ALIQPS3, D2_VALPS3, D2_BASECF3, D2_ALIQCF3, D2_VALCF3, D2_DESCZFP, D2_DESCZFC, D2_BASEDES, D2_ALIQCMP, D2_XPRMDPR, D2_XALIQBA, D2_PDORI, D2_PDDES, D2_DIFAL, D2_BSFCCMP, D2_ALFCCMP, D2_VFCPDIF, D2_PESO</code>: normalizados com o padr&atilde;o da rotina num&eacute;rica.</p>
<div id="bkmrk-a1_nome%2C-a1_nreduz%3A-"></div>
<p id="bkmrk-%C2%A0-8"></p>
<div id="bkmrk-a1_nome%3A-remove-o-ca"></div>
<h3 id="bkmrk-chamada-de-integra%C3%A7%C3%A3">Integra&ccedil;&atilde;o com o Protheus</h3>
<p id="bkmrk-%7B%7Bintegracao-com-o-p"><strong>Chamada de integra&ccedil;&atilde;o com o Protheus</strong><br>
- Chamada: Requisi&ccedil;&atilde;o HTTP<br>
- Recurso: <code>documento_saida</code><br>
- M&eacute;todo HTTP: <code>POST</code><br>
- Cabe&ccedil;alhos:<br>
&nbsp;&nbsp;- <code>tenantId</code>: <code>&lt;UF_DA_FILIAL&gt;,&lt;F2_FILIAL&gt;</code> (montado a partir dos 2 primeiros caracteres de <code>F2_FILIAL</code> + v&iacute;rgula + o valor completo de <code>F2_FILIAL</code>)<br>
- Exemplo de payload enviado:<br>
&nbsp;&nbsp;- O payload segue a estrutura descrita na se&ccedil;&atilde;o &ldquo;Estrutura&ccedil;&atilde;o de Dados&rdquo;.<br>
- Tratamento de retorno:<br>
&nbsp;&nbsp;- Aus&ecirc;ncia de resposta: registra erro com mensagem de &ldquo;n&atilde;o houve resposta&rdquo; e finaliza o item como falha.<br>
&nbsp;&nbsp;- Resposta inv&aacute;lida/inesperada: se o retorno n&atilde;o puder ser interpretado como estrutura contendo <code>Mensagem</code>, registra erro de decodifica&ccedil;&atilde;o e finaliza como falha.<br>
&nbsp;&nbsp;- Indicadores de erro: finaliza como falha quando houver <code>code</code> no retorno ou quando <code>Mensagem</code> for <code>ERRO</code>. Quando dispon&iacute;vel, utiliza <code>Mensagem Detalhada</code> como mensagem final, consolidando estrutura de erros quando ela vier como objeto/array.<br>
&nbsp;&nbsp;- Exce&ccedil;&atilde;o de idempot&ecirc;ncia: quando a mensagem detalhada indicar que o documento j&aacute; est&aacute; cadastrado, ajusta o retorno para sucesso (<code>Mensagem</code> = <code>OK</code>) e remove o indicador <code>code</code>, permitindo concluir o item como integrado.<br>
&nbsp;&nbsp;- Sucesso: quando n&atilde;o houver indicadores de erro, finaliza como sucesso e persiste o retorno para auditoria.<br><br><strong>Rotinas Inteligentes</strong><br>
setProtheusClienteIntegrado: validada antes da integra&ccedil;&atilde;o do documento. Garante que o cliente relacionado j&aacute; esteja integrado para evitar envio inconsistente.<br>
link: <a href="https://kb.illimitar.pro/books/integracao-linx-protheus/page/setprotheusclienteintegrado" target="_blank" rel="noopener">https://kb.illimitar.pro/books/integracao-linx-protheus/page/setprotheusclienteintegrado</a><br><br>
setProtheusCupomEcommerceIntegrado: executada ap&oacute;s confirma&ccedil;&atilde;o de sucesso. Marca o cupom como integrado e permite regularizar cen&aacute;rios de reenvio quando necess&aacute;rio.<br>
link: <a href="https://kb.illimitar.pro/books/integracao-linx-protheus/page/setprotheuscupomecommerceintegrado" target="_blank" rel="noopener">https://kb.illimitar.pro/books/integracao-linx-protheus/page/setprotheuscupomecommerceintegrado</a></p>
<p id="bkmrk-%C2%A0-7"></p>
<div id="bkmrk-recurso%3A-cliente-m%C3%A9t"></div>
<h3 id="bkmrk-tratamento-de-retorn">Tratamento de retorno</h3>
<p id="bkmrk-sucesso%3A%C2%A0quando-n%C3%A3o-">Ao final do processamento, o item &eacute; atualizado na tabela <code>wosk_queue</code> com o retorno do Protheus (quando existir), a mensagem consolidada e a situa&ccedil;&atilde;o final (sucesso/erro/suspenso). O tempo de processamento &eacute; registrado para acompanhamento operacional.</p>
<p id="bkmrk-%C2%A0-10"></p>
<h4 id="bkmrk-encaminhamento-em-ce">Encaminhamento em cen&aacute;rio de erro</h4>
<p id="bkmrk-quando-o-protheus-re">Quando ocorre erro na integra&ccedil;&atilde;o (aus&ecirc;ncia de resposta, resposta inv&aacute;lida ou retorno com indicador de falha), o item &eacute; finalizado como erro e permanece registrado em <code>wosk_queue</code> com detalhes de mensagem e retorno, permitindo acompanhamento e reprocessamento conforme necessidade operacional.<br><br>Quando a falha estiver relacionada &agrave; depend&ecirc;ncia de integra&ccedil;&atilde;o do cliente, o item pode ser marcado como suspenso at&eacute; que a condi&ccedil;&atilde;o seja atendida, evitando envio incompleto ao Protheus.</p>
<div id="bkmrk-existe-um-mecanismo-"></div>
<p id="bkmrk-%C2%A0-11"></p>
<div id="bkmrk-%7B%7Bdescricao_queue%7D%7D"></div>
<div id="bkmrk--4"></div>
<h3 id="bkmrk-notifica%C3%A7%C3%A3o-de-erros">Notifica&ccedil;&atilde;o</h3>
<div id="bkmrk-%7B%7Bnotificacao%7D%7D">
<div>A notifica&ccedil;&atilde;o de erros consulta itens com falha na tabela <code>wosk_queue</code> (servi&ccedil;o <code>ProtheusCupomFiscalEcommerce</code> e situa&ccedil;&atilde;o de erro), ordenando pela data de processamento para priorizar ocorr&ecirc;ncias mais antigas. Para compor a listagem, o identificador do item &eacute; decomposto para preencher <code>F2_DOC</code>, <code>F2_SERIE</code>, <code>F2_CLIENTE</code> e <code>F2_LOJA</code>, e as datas <code>data_adicionado</code> e <code>data</code> s&atilde;o formatadas para apresenta&ccedil;&atilde;o. A mensagem de erro &eacute; higienizada para remover prefixos t&eacute;cnicos recorrentes e manter o conte&uacute;do mais relevante, e o alerta &eacute; encaminhado por e-mail para os destinat&aacute;rios configurados.</div>
</div>
<div id="bkmrk--5"></div>
<p id="bkmrk-%C2%A0-12"></p>
<h2 id="bkmrk-asdfas">Fluxo do Processo</h2>
<p id="bkmrk--17"><a href="https://kb.illimitar.pro/uploads/images/gallery/2026-02/062diagrama-sem-nome.jpg" target="_blank" rel="noopener"><img src="https://kb.illimitar.pro/uploads/images/gallery/2026-02/scaled-1680-/062diagrama-sem-nome.jpg" alt="Diagrama sem nome.jpg"></a></p>
<p id="bkmrk--18"><br></p>
<h2 id="bkmrk-crit%C3%A9rios-de-aceita%C3%A7">Crit&eacute;rios de Aceita&ccedil;&atilde;o</h2>
<table id="bkmrk-processo-subprocesso" style="border-collapse: collapse; width: 100%; height: 320px;" border="1"><colgroup><col style="width: 15.0143%;"><col style="width: 20.0191%;"><col style="width: 45.0429%;"><col style="width: 20.0191%;"></colgroup>
<tbody>
<tr style="height: 29.6px;">
<td class="align-center" style="height: 29.6px;">Processo</td>
<td class="align-center" style="height: 29.6px;">Subprocesso</td>
<td class="align-center" style="height: 29.6px;">Descri&ccedil;&atilde;o</td>
<td class="align-center" style="height: 29.6px;">Situa&ccedil;&atilde;o esperada</td>
</tr>
<tr style="height: 96.8px;">
<td style="height: 96.8px;">Capturador</td>
<td style="height: 96.8px;">Captura cronol&oacute;gica e controle de posi&ccedil;&atilde;o</td>
<td style="height: 96.8px;">Ao consultar a view <code>WOSK_SERVICO_ENVIA_PROTHEUS_CUPOM_ECOMMERCE</code> com filtro por <code>DATA_PARA_TRANSFERENCIA</code>, ordena&ccedil;&atilde;o e pagina&ccedil;&atilde;o, deve manter continuidade por posi&ccedil;&atilde;o persistida em <code>wosk_monitor</code> (<code>evento</code>, <code>offset</code>, <code>data_posicao</code>).</td>
<td style="height: 96.8px;">Posi&ccedil;&atilde;o atualizada no controle do capturador e itens pendentes registrados para processamento ass&iacute;ncrono.</td>
</tr>
<tr style="height: 113.6px;">
<td style="height: 113.6px;">Capturador</td>
<td style="height: 113.6px;">Captura manual por identificador composto</td>
<td style="height: 113.6px;">Ao informar um identificador composto no padr&atilde;o <code>F2_FILIAL-F2_DOC-F2_SERIE-F2_CLIENTE-F2_LOJA</code>, deve consultar a origem com filtros exatos desses campos e registrar o item correspondente para processamento, incluindo a lista <code>ITENS</code>.</td>
<td style="height: 113.6px;">Item pendente registrado para processamento, associado ao cupom solicitado e apto a integra&ccedil;&atilde;o.</td>
</tr>
<tr style="height: 110px;">
<td style="height: 110px;">Fila de Processamento</td>
<td style="height: 110px;">Integra&ccedil;&atilde;o com Protheus</td>
<td style="height: 110px;">Ao processar um item pendente em <code>wosk_queue</code> (servi&ccedil;o <code>ProtheusCupomFiscalEcommerce</code>), deve montar o payload conforme <code>$field</code>, aplicar padroniza&ccedil;&atilde;o num&eacute;rica (incluindo <code>D2_QUANT</code> com 3 casas e <code>D2_PRCVEN</code>/<code>D2_PRUNIT</code> com 5 casas) e realizar a requisi&ccedil;&atilde;o ao recurso <code>documento_saida</code> com cabe&ccedil;alho <code>tenantId</code>.</td>
<td style="height: 110px;">Item atualizado em <code>wosk_queue</code> com retorno/mensagem e situa&ccedil;&atilde;o final coerente (sucesso quando n&atilde;o houver erro; erro quando houver aus&ecirc;ncia de resposta, resposta inv&aacute;lida, <code>code</code> ou <code>Mensagem</code> = <code>ERRO</code>).</td>
</tr>
<tr style="height: 110px;">
<td style="height: 110px;">Fila de Processamento</td>
<td style="height: 110px;">Notifica&ccedil;&atilde;o de falhas</td>
<td style="height: 110px;">Quando existirem ocorr&ecirc;ncias com falha persistidas em <code>wosk_queue</code> para o servi&ccedil;o <code>ProtheusCupomFiscalEcommerce</code>, deve gerar notifica&ccedil;&atilde;o por e-mail priorizando itens mais antigos pela data de processamento.</td>
<td style="height: 110px;">Destinat&aacute;rios recebem o alerta com os principais campos do cupom e a mensagem higienizada para an&aacute;lise.</td>
</tr>
</tbody>
</table>