# Conversor de XML de Cancelamento NF-e

## Novo Avanço → procEventoNFe

[Download do programa aqui](https://novo-app.s3.us-east-1.amazonaws.com/production/download/conversor_XML/converte_XML.exe)

<div contenteditable="false" id="bkmrk-">---

</div># 📌 1. Contexto

O sistema **Novo Avanço** gera XMLs de NF-e no formato `nfeProc`, contendo:

- Dados completos da nota fiscal
- Protocolo de autorização
- Status da nota (incluindo cancelamento)

Quando uma nota é cancelada, o sistema **não gera o XML do evento de cancelamento completo**, apenas registra o cancelamento dentro do protocolo da NF-e.

Por outro lado, algumas integrações, auditorias fiscais e ferramentas externas exigem o XML no formato:

```
procEventoNFe
```

Este produto resolve exatamente esse gap.

<div contenteditable="false" id="bkmrk--2">---

</div># 🎯 2. Objetivo do Produto

Converter XMLs de NF-e canceladas (formato `nfeProc`) em XMLs no formato completo de evento:

```
procEventoNFe
```

Garantindo:

- Compatibilidade com padrões SEFAZ
- Leitura por ferramentas fiscais
- Padronização de dados para integração

<div contenteditable="false" id="bkmrk--3">---

</div># ⚙️ 3. Funcionamento Geral

O conversor executa o seguinte fluxo:

### 🔄 Fluxo de execução

1. Usuário seleciona pasta de origem (XMLs do Novo Avanço)
2. Usuário seleciona pasta de destino
3. Sistema percorre todos os XMLs
4. Para cada XML: 
    - Lê os dados necessários
    - Monta a estrutura `procEventoNFe`
    - Gera um novo XML
5. Exibe progresso e logs em tempo real

[![image.png](https://bc.avancoinfo.com.br/uploads/images/gallery/2026-03/scaled-1680-/3Ayimage.png)](https://bc.avancoinfo.com.br/uploads/images/gallery/2026-03/3Ayimage.png)

<div contenteditable="false" id="bkmrk--5">---

</div># 🧠 4. Estrutura dos XMLs

## 📥 Entrada (Novo Avanço)

Formato:

```
nfeProc
 ├── NFe
 └── protNFe
      └── infProt
```

Contém:

- Chave da nota
- Protocolo
- Status (`cStat`)
- Motivo (`xMotivo`)
- Data (`dhRecbto`)

<div contenteditable="false" id="bkmrk--6">---

</div>## 📤 Saída (Gerado pelo Conversor)

Formato:

```
procEventoNFe
 ├── evento
 │    ├── infEvento
 │    └── Signature
 └── retEvento
      └── infEvento
```

<div contenteditable="false" id="bkmrk--7">---

</div># 🔗 5. Correspondência de Campos

<table id="bkmrk-campo-destino-origem"><tbody><tr><th>Campo destino</th><th>Origem</th><th>Regra</th></tr><tr><td>`cOrgao`</td><td>`ide/cUF`</td><td>Direto</td></tr><tr><td>`tpAmb`</td><td>`ide/tpAmb`</td><td>Direto</td></tr><tr><td>`CNPJ`</td><td>`emit/CNPJ`</td><td>Direto</td></tr><tr><td>`chNFe`</td><td>`protNFe/infProt/chNFe`</td><td>Direto</td></tr><tr><td>`dhEvento`</td><td>`dhRecbto`</td><td>Padrão (ou manual)</td></tr><tr><td>`tpEvento`</td><td>—</td><td>Fixo: `110111`</td></tr><tr><td>`nSeqEvento`</td><td>—</td><td>Fixo: `1`</td></tr><tr><td>`verEvento`</td><td>—</td><td>Fixo: `1.00`</td></tr><tr><td>`descEvento`</td><td>—</td><td>Fixo: `Cancelamento`</td></tr><tr><td>`nProt` (evento)</td><td>`protNFe/nProt`</td><td>Direto</td></tr><tr><td>`xJust`</td><td>`xMotivo`</td><td>Padrão (ou manual)</td></tr></tbody></table>

<div contenteditable="false" id="bkmrk--8">---

</div>## 📌 Retorno (`retEvento`)

<table id="bkmrk-campo-origem-tpamb-t"><tbody><tr><td>Campo</td><td>Origem</td></tr><tr><td>`tpAmb`</td><td>`tpAmb`</td></tr><tr><td>`verAplic`</td><td>`verAplic`</td></tr><tr><td>`cOrgao`</td><td>`cUF`</td></tr><tr><td>`cStat`</td><td>`cStat`</td></tr><tr><td>`xMotivo`</td><td>`xMotivo`</td></tr><tr><td>`chNFe`</td><td>`chNFe`</td></tr><tr><td>`tpEvento`</td><td>Fixo</td></tr><tr><td>`xEvento`</td><td>"CANCELAMENTO"</td></tr><tr><td>`nSeqEvento`</td><td>Fixo</td></tr><tr><td>`dhRegEvento`</td><td>`dhRecbto`</td></tr><tr><td>`nProt`</td><td>`nProt`</td></tr></tbody></table>

<div contenteditable="false" id="bkmrk--9">---

</div># 🧩 6. Tratamento dos Campos

## 🔹 tpEvento

- Valor fixo: `110111`
- Representa evento de cancelamento

<div contenteditable="false" id="bkmrk--10">---

</div>## 🔹 nSeqEvento

- Valor fixo: `1`
- Primeiro evento de cancelamento da nota

<div contenteditable="false" id="bkmrk--11">---

</div>## 🔹 xJust

- Padrão: usa `xMotivo` do XML
- Pode ser sobrescrito manualmente

<div contenteditable="false" id="bkmrk--12">---

</div>## 🔹 dhEvento

- Padrão: usa `dhRecbto`
- Pode ser definido manualmente pelo usuário

<div contenteditable="false" id="bkmrk--13">---

</div>## 🔹 Signature

- Reaproveitada do XML original
- Não é recalculada
- Mantém compatibilidade estrutural

<div contenteditable="false" id="bkmrk--14">---

</div># 🖥️ 7. Interface do Sistema

A interface web local permite:

### 📂 Seleção de pastas

- Pasta de entrada (XMLs do sistema)
- Pasta de saída (XMLs convertidos)

<div contenteditable="false" id="bkmrk--15">---

</div>### 🧾 Campos configuráveis

- `tpEvento`
- `nSeqEvento`
- `xJust`
- `dhEvento`

Todos já vêm com valores padrão.

<div contenteditable="false" id="bkmrk--16">---

</div>### 📊 Execução

- Barra de progresso em tempo real
- Contadores: 
    - Total
    - Processados
    - Erros
- Logs detalhados

<div contenteditable="false" id="bkmrk--17">---

</div>### 🛑 Controle

- Iniciar conversão
- Cancelar execução
- Limpar logs

<div contenteditable="false" id="bkmrk--18">---

</div># ▶️ 8. Como Usar

## Passo a passo

1. Abrir o programa
2. Selecionar pasta de origem
3. Selecionar pasta de destino
4. (Opcional) Ajustar campos
5. Clicar em **Iniciar conversão**

<div contenteditable="false" id="bkmrk--19">---

</div>## Durante a execução

- Acompanhar barra de progresso
- Ver logs em tempo real

<div contenteditable="false" id="bkmrk--20">---

</div>## Cancelamento

- Clique em **Cancelar**
- O sistema interrompe o processamento atual

<div contenteditable="false" id="bkmrk--21">---

</div>## Resultado

- XMLs gerados na pasta de destino
- Nome padrão:

```
<nome_original>_procEventoNFe.xml
```

<div contenteditable="false" id="bkmrk--22">---

</div># ⚠️ 9. Limitações

- Não gera assinatura digital nova
- Não consulta SEFAZ
- Usa dados já existentes no XML
- Não substitui o XML oficial do evento

<div contenteditable="false" id="bkmrk--23">---

</div># 🔒 10. Considerações Técnicas

- Aplicação local (Flask)
- Execução via navegador
- Integração com Windows (bandeja)
- Processamento em background (thread)
- Manipulação XML via Python

<div contenteditable="false" id="bkmrk--24">---

</div># 🧪 11. Compatibilidade

- Compatível com leitores XML fiscais
- Estrutura alinhada ao padrão SEFAZ
- Evita conflitos de namespace

<div contenteditable="false" id="bkmrk--25">---

</div># 🏁 12. Conclusão

O Conversor de XML de Cancelamento do Novo Avanço:

- Resolve a ausência do XML de evento completo
- Permite integração com ferramentas externas
- Automatiza conversão em lote
- Oferece interface simples e eficiente

# ⚙️ Regras de Alteração dos Campos

Esta seção define **quais campos podem ser alterados pelo usuário**, quais **não devem ser alterados**, e quais são **sensíveis para integridade fiscal**.

<div contenteditable="false" id="bkmrk--26">---

</div># 🔒 1. Campos NÃO editáveis (fixos / controlados pelo sistema)

Esses campos são definidos automaticamente pelo conversor e **não devem ser alterados**, pois fazem parte da estrutura fiscal obrigatória.

<table id="bkmrk-campo-origem-motivo-"><tbody><tr><th>Campo</th><th>Origem</th><th>Motivo</th></tr><tr><td>`cOrgao`</td><td>XML original</td><td>Define a UF (SEFAZ responsável)</td></tr><tr><td>`tpAmb`</td><td>XML original</td><td>Ambiente (produção/homologação)</td></tr><tr><td>`CNPJ`</td><td>XML original</td><td>Emitente da nota</td></tr><tr><td>`chNFe`</td><td>XML original</td><td>Identificação única da NF-e</td></tr><tr><td>`nProt`</td><td>XML original</td><td>Protocolo da nota</td></tr><tr><td>`cStat`</td><td>XML original</td><td>Status fiscal</td></tr><tr><td>`xMotivo`</td><td>XML original</td><td>Retorno da SEFAZ</td></tr><tr><td>`verEvento`</td><td>Fixo (`1.00`)</td><td>Versão do layout</td></tr><tr><td>`descEvento`</td><td>Fixo (`Cancelamento`)</td><td>Tipo do evento</td></tr><tr><td>`xEvento`</td><td>Fixo (`CANCELAMENTO`)</td><td>Descrição padronizada</td></tr><tr><td>`verAplic`</td><td>XML original</td><td>Versão da aplicação SEFAZ</td></tr></tbody></table>

<div contenteditable="false" id="bkmrk--27">---

</div>## ⚠️ Importante

Alterar qualquer um desses campos pode:

- Invalidar o XML
- Gerar inconsistência fiscal
- Quebrar integração com sistemas contábeis

<div contenteditable="false" id="bkmrk--28">---

</div># 🟡 2. Campos editáveis com restrição

Esses campos podem ser alterados, **mas com cuidado**.

<div contenteditable="false" id="bkmrk--29">---

</div>## 🔹 `xJust` (Justificativa do cancelamento)

### ✔ Padrão:

```
xMotivo do XML
```

### ✔ Pode ser alterado?

**Sim**

### ⚠️ Regras:

- Deve ter entre 15 e 255 caracteres (recomendado)
- Deve representar corretamente o motivo do cancelamento

### ❗ Riscos ao alterar:

- Divergência com registro original
- Problemas em auditorias

<div contenteditable="false" id="bkmrk--30">---

</div>## 🔹 `dhEvento` (Data/hora do evento)

### ✔ Padrão:

```
dhRecbto do XML
```

### ✔ Pode ser alterado?

**Sim**

### ⚠️ Regras:

- Deve estar no formato:

```
YYYY-MM-DDTHH:mm:ss-03:00
```

### ❗ Riscos ao alterar:

- Inconsistência temporal com SEFAZ
- Divergência com logs fiscais

<div contenteditable="false" id="bkmrk--31">---

</div># 🟢 3. Campos editáveis seguros

Esses campos são controlados, mas **não afetam integridade fiscal diretamente**.

<div contenteditable="false" id="bkmrk--32">---

</div>## 🔹 `tpEvento`

### ✔ Padrão:

```
110111
```

### ✔ Pode ser alterado?

**Não recomendado**

### ⚠️ Motivo:

- `110111` = Cancelamento
- Alterar muda completamente o tipo do evento

<div contenteditable="false" id="bkmrk--33">---

</div>## 🔹 `nSeqEvento`

### ✔ Padrão:

```
1
```

### ✔ Pode ser alterado?

**Sim (com ressalvas)**

### ⚠️ Regras:

- Deve ser inteiro
- Normalmente sempre `1` para cancelamento

### ❗ Riscos:

- Pode causar inconsistência em sistemas que validam sequência

<div contenteditable="false" id="bkmrk--34">---

</div># 🧠 4. Resumo Geral

<table id="bkmrk-campo-pode-alterar%3F-"><tbody><tr><td>Campo</td><td>Pode alterar?</td><td>Nível de risco</td></tr><tr><td>`xJust`</td><td>✔ Sim</td><td>Médio</td></tr><tr><td>`dhEvento`</td><td>✔ Sim</td><td>Médio</td></tr><tr><td>`nSeqEvento`</td><td>✔ Sim</td><td>Baixo</td></tr><tr><td>`tpEvento`</td><td>⚠ Não recomendado</td><td>Alto</td></tr><tr><td>Demais campos</td><td>❌ Não</td><td>Crítico</td></tr></tbody></table>

<div contenteditable="false" id="bkmrk--35">---

</div># 🎯 5. Recomendação de Uso

Para uso seguro:

- Não altere campos técnicos
- Utilize apenas: 
    - `xJust` (quando necessário)
    - `dhEvento` (em casos específicos)

<div contenteditable="false" id="bkmrk--36">---

</div># 🏁 Conclusão

O conversor já define automaticamente todos os campos necessários para gerar um XML válido.

As alterações devem ser feitas apenas quando houver necessidade real, evitando inconsistências fiscais ou divergências com o registro original da NF-e.