Procedimentos Realizados para Correção e Envio dos XML ao Painel do Contador

Prezado(a),

Para que os arquivos XML fossem corretamente enviados e disponibilizados no Painel do Contador, foi necessário que o técnico realizasse uma série de ajustes diretamente no banco de dados. Esses procedimentos foram indispensáveis porque diversos cupons e documentos fiscais apresentavam inconsistências que impediam o envio automático. Necessário algumas validações antes de executar as SQLs :

1. Atualização do cliente para a última versão ( 1.268 acionar o Josivan ) Cliente deve estar na versão superior a 1.267

2. Confirmação da atualização no Painel do Campos (acionar o Josivan)

3. Execução das query através da Ferramenta do Suporte


🔎1. Identificação de vendas que não subiram

SQL utilizada para localizar cupons que ainda não haviam sido enviados:

-- localizar vendas que nao subiram
select * from cabecalho_venda cv
where cv.numero_cupom not in (select cw.cabecalho_venda_id from cabecalho_venda_web cw);

🔄2. Reprocessamento dos cupons

Foram utilizados diferentes critérios para reativar cupons pendentes e permitir novo envio:

-- carga nos cupons por abertura de caixa separada por virgula
update cabecalho_venda cv
set cv.status_transfer = 3, cv.datahora_modificacao = current_timestamp, cv.venda_uso = 0
where cv.abertura_cod in ("1","2","3");

-- carga nos cupons por numero do cupom separado por virgula
update cabecalho_venda cv
set cv.status_transfer = 3, cv.datahora_modificacao = current_timestamp, cv.venda_uso = 0
where cv.numero_cupom in ("1","2","3");

-- carga nos cupons por data inicial e data final
update cabecalho_venda cv
set cv.status_transfer = 3, cv.datahora_modificacao = current_timestamp, cv.venda_uso = 0, cv.valor_total_cfe = cv.cupom_total_valor
where cv.data between "2025-08-01 00:00:00" and "2025-09-13 23:59:59";

-- carga nos cupons por data inicial e data final SOMENTE FISCAL
update cabecalho_venda cv
set cv.status_transfer = 3, cv.datahora_modificacao = current_timestamp, cv.venda_uso = 0, cv.valor_total_cfe = cv.cupom_total_valor
where cv.data between "2025-08-01 00:00:00" and "2025-09-13 23:59:59"
and cv.arquivo_decode_base_64 is not null;

🛠️3. Correção de inconsistências antigas

-- erro antigo, de cupons que nao sobem por nao ter funcionarios
update cabecalho_venda cv
set cv.funcionario_cod = (select codigo from funcionario where nome = "Caixa")
where cv.funcionario_cod is null;

🧾4. Atualização dos XML no Emissor Local NFC-e

Essas SQL corrigem registros de XML (envio e cancelamento) quando o emissor NFC-e é local:

-- em caso de EMISSOR NFCE LOCAL atualizar tbm os XML
update cabecalho_do_cupom cc
set cc.sat_xml_envio = (select n.xmlnfe from tbl_nf n where cc.tbl_nf_id = n.tbl_nf_id)
where (cc.sat_xml_envio is null)
or (cc.sat_xml_envio = '') ;
commit work;

update cabecalho_do_cupom cc
set cc.sat_xml_cancelamento = (select n.xmlcancelamento from tbl_nf n 
where cc.tbl_nf_id = n.tbl_nf_id)
where (cc.sat_xml_cancelamento is null)
or (cc.sat_xml_cancelamento = '') ;
commit work;

update cabecalho_venda cv
set cv.arquivo_decode_base_64 = (select cc.sat_xml_envio from cabecalho_do_cupom cc where cc.numero_do_cupom = cv.numero_cupom and cc.sat_serie is null),
cv.ambiente_emissao_nfce = 1, cv.status_transfer = 3
where cv.data between "2025-08-01" and "2025-10-31"
and (cv.arquivo_decode_base_64 is null) or (cv.arquivo_decode_base_64 = '');
commit work;

update cabecalho_venda cv
set cv.arquivo_decode_base_64_canc = (select cc.sat_xml_cancelamento from cabecalho_do_cupom cc where cc.numero_do_cupom = cv.numero_cupom),
cv.ambiente_emissao_nfce = 1, cv.status_transfer = 3
where cv.data between "2025-08-01" and "2025-10-31"
and (cv.arquivo_decode_base_64_canc is null) or (cv.arquivo_decode_base_64_canc = '') ;
commit work;

update cabecalho_venda cv
set cv.valor_total_cfe = cv.cupom_total_valor
where cv.data between "2025-08-01" and "2025-11-30"
and cv.valor_total_cfe is null
and cv.mensagem_sefaz is not null ;
commit work;

update cabecalho_venda cv
set cv.data_de_emissao = EXTRACT(YEAR FROM cv.data) || '-' ||LPAD(EXTRACT(MONTH FROM cv.data), 2, '0') || '-' ||LPAD(EXTRACT(DAY FROM cv.data), 2, '0') || 'T' ||LPAD(EXTRACT(HOUR FROM cv.data), 2, '0') || ':' ||LPAD(EXTRACT(MINUTE FROM cv.data), 2, '0') || ':' ||LPAD(EXTRACT(SECOND FROM cv.data), 2, '0')
where cv.data_de_emissao is null
and cv.data between "2025-08-01" and "2025-11-30"
and cv.mensagem_sefaz is not null ;
commit work;

update cabecalho_venda cv
set cv.chave_consulta = coalesce(SUBSTRING(cv.arquivo_decode_base_64 FROM POSITION('Id=' IN cv.arquivo_decode_base_64)+7 FOR 44),"")
where cv.data between "2025-08-01" and "2025-10-31"
and cv.ambiente_emissao_nfce = 1 ;
commit work;

UPDATE cabecalho_venda cv
SET cv.numero_cupom_sat = CASE
    WHEN SUBSTRING(cv.CHAVE_CONSULTA FROM 26 FOR 9) IS NULL OR TRIM(SUBSTRING(cv.CHAVE_CONSULTA FROM 26 FOR 9)) = ''
    THEN NULL
    ELSE CAST(SUBSTRING(cv.CHAVE_CONSULTA FROM 26 FOR 9) AS INTEGER)
  END
WHERE cv.data BETWEEN '2025-08-01' AND '2025-11-31'
  AND cv.ambiente_emissao_nfce = 1
  and cv.numero_cupom_sat is null;
commit work;

update cabecalho_venda cv
set cv.venda_uso = 0, cv.status_transfer = 3
where cv.data between "2025-08-01" and "2025-11-31"
and (cv.chave_consulta is not null) or (cv.chave_consulta <> '') ;
commit work;

5. Ajustes no módulo Atende (se necessário)

UPDATE CAIXACUPOM cc 
SET cc.NUMERO_CUPOM_SAT =  SUBSTRING(cc.CHAVE_CONSULTA FROM 26 FOR 9)
WHERE cc.NUMERO_CUPOM_SAT = 0;

UPDATE CAIXACUPOM C
SET C.CHAVE_CONSULTA = coalesce(SUBSTRING(C.ARQUIVO_DECODE_BASE_64 FROM POSITION('Id=' IN C.ARQUIVO_DECODE_BASE_64)+7 FOR 44),"")
WHERE C.CHAVE_CONSULTA = ''
AND C.ARQUIVO_DECODE_BASE_64 <> ''
AND DATA_FECHAMENTO >= '2025-10-01 00:00:00'
AND DATA_FECHAMENTO <= '2025-10-31 23:59:59';

6. Query utilizada pelo Atende para baixar XML

SELECT CHAVE_CONSULTA,
       ARQUIVO_DECODE_BASE_64,
       ARQUIVO_DECODE_BASE_64_CANC 
FROM CAIXACUPOM
WHERE SAT IN ( 3, 4 )
  AND DATA_FECHAMENTO >= '2025-08-01 00:00:00'
  AND DATA_FECHAMENTO <= '2025-08-31 23:59:59'
ORDER BY SAT, DATA_FECHAMENTO;

7. Query utilizada pelo Painel do Contador

SELECT C.CAIXACUPOM_CONTROLE AS PEDIDO_CONTROLE, C.DATA_DE_EMISSAO AS DATA_AUTORIZACAO, C.ARQUIVO_BASE_64,
SUBSTR( C.CHAVE_CONSULTA, 23, 3 ) AS SERIE, SUBSTR( C.CHAVE_CONSULTA, 26, 9 ) AS NUMERO, 
C.VALOR_TOTAL_CFE AS VALOR_DOCUMENTO, C.CHAVE_CONSULTA AS CHAVE_ACESSO, 
C.CHAVE_CONSULTA_CANCELAMENTO AS XML_CANCELAMENTO 
FROM CAIXACUPOM C 
WHERE YEAR(C.DATA_FECHAMENTO) = '2025' AND MONTH(C.DATA_FECHAMENTO) = '10'  
AND C.SAT IN (3,4) 
AND C.ARQUIVO_BASE_64 <> ''
AND C.ARQUIVO_BASE_64 IS NOT NULL 
AND C.ARQUIVO_BASE_64 <> 'NULL' 
GROUP BY SERIE, NUMERO 

UNION 

SELECT N.NF_CONTROLE AS PEDIDO_CONTROLE, N.EMISSAO AS DATA_AUTORIZACAO, '' as ARQUIVO_BASE_64,
SUBSTR( N.CHAVENFE, 23, 3 ) AS SERIE, SUBSTR( N.CHAVENFE, 26, 9 ) AS NUMERO, 
N.VALORNF AS VALOR_DOCUMENTO, N.CHAVENFE AS CHAVE_ACESSO, N.XMLCANCELAMENTO AS XML_CANCELAMENTO 
FROM NF N   
WHERE YEAR(N.EMISSAO) = '2025' AND MONTH(N.EMISSAO) ='10'
AND N.XMLDISTRIBUICAO <> ''  
AND N.XMLDISTRIBUICAO IS NOT NULL
AND N.XMLDISTRIBUICAO <> 'NULL'
AND N.TIPO_NOTA = 11
GROUP BY SERIE, NUMERO 
ORDER BY SERIE, NUMERO;

8. Query de consulta da tabela NFLOTE

SELECT  C.RECEBIMENTO AS DATA_AUTORIZACAO, C.CHAVENFE, C.XMLPROTOCOLO,
C.NFCE_SERIE AS SERIE, SUBSTR( C.CHAVENFE, 26, 9 ) AS NUMERO, 
C.NFCE_VALOR AS VALOR_DOCUMENTO, C.XMLPROTOCOLO AS CHAVE_ACESSO, 
C.NFCE_XML_CANCELAMENTO AS XML_CANCELAMENTO 
FROM NFLOTEPROTOCOLO C 
WHERE YEAR(C.RECEBIMENTO) = '2025' AND MONTH(C.RECEBIMENTO) = '10'  
AND C.XMLPROTOCOLO <> ''
AND C.XMLPROTOCOLO IS NOT NULL 
AND C.XMLPROTOCOLO <> 'NULL' 
AND C.NFCE_SERIE = '031'
ORDER BY SERIE, NUMERO;

9. Correções específicas para casos onde a NFC-e não aparecia

SELECT cc.CAIXACUPOM_CONTROLE AS PEDIDO_CONTROLE,
cc.DATAHORA AS DATA_AUTORIZACAO, 
cc.NUMERO_CUPOM_SAT AS NUMERO, 
cc.VALORCUPOM AS VALOR_DOCUMENTO, 
SUBSTR(cc.ARQUIVO_DECODE_BASE_64 FROM LOCATE('Id=',cc.ARQUIVO_DECODE_BASE_64)+7 FOR 44) AS CHAVE_ACESSO, 
cc.CHAVE_CONSULTA_CANCELAMENTO AS XML_CANCELAMENTO,
cc.ARQUIVO_DECODE_BASE_64
FROM CAIXACUPOM cc
WHERE cc.ARQUIVO_DECODE_BASE_64 <> 'NULL'
AND cc.ARQUIVO_DECODE_BASE_64 <> ''
AND cc.CHAVE_CONSULTA =''
AND cc.DATAHORA >= '2025-08-01'
AND cc.ARQUIVO_DECODE_BASE_64 like ('%www.nfce.fazenda.sp.gov.br%');

UPDATE CAIXACUPOM cc
set cc.DATA_DE_EMISSAO = cc.DATAHORA,  
cc.VALOR_TOTAL_CFE = cc.VALORCUPOM, 
cc.CONCLUIDO = 1, 
cc.SAT=3,
cc.CHAVE_CONSULTA = SUBSTR(cc.ARQUIVO_DECODE_BASE_64 FROM LOCATE('Id=',cc.ARQUIVO_DECODE_BASE_64)+7 FOR 44)
WHERE cc.ARQUIVO_DECODE_BASE_64 <> 'NULL'
AND cc.ARQUIVO_DECODE_BASE_64 <> ''
AND cc.CHAVE_CONSULTA =''
AND cc.DATAHORA >= '2025-08-01'
AND cc.ARQUIVO_DECODE_BASE_64 like ('%www.nfce.fazenda.sp.gov.br%');

UPDATE CAIXACUPOM cc
set cc.SAT=4
WHERE cc.ARQUIVO_DECODE_BASE_64_CANC <> 'NULL'
AND cc.ARQUIVO_DECODE_BASE_64_CANC <> ''
AND cc.DATAHORA >= '2025-08-01'
AND cc.ARQUIVO_DECODE_BASE_64 like ('%www.nfce.fazenda.sp.gov.br%');

4. Confirmação final no Painel do Contador

Após a execução das correções, o técnico deve:

  • acessar o Painel do Contador;
  • confirmar que os XML já estão disponíveis ao contador.

Atenção: O técnico deve registrar na ligação finalizada que o cliente foi orientado a verificar o Painel do Contador.

🔚Resumo Final

Todas essas SQL foram necessárias para:

  • corrigir registros faltantes ou inconsistentes;
  • atualizar XMLs de envio e cancelamento;
  • reconstruir campos obrigatórios (chave, série, número, valor, emissão);
  • permitir o reprocessamento e envio ao Painel do Contador.

Com isso, todos os documentos passaram a ser exibidos corretamente para o contador.

Share this content: