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: