Skip to content

RogerMaestri/EditorCodigoProdutoXML-NFe

Repository files navigation

ProcessarLoteNFe - Processador Automático de XML de NF-e

PowerShell License Version

📋 Descrição

O ProcessarLoteNFe é um script PowerShell especializado para processamento automatizado de arquivos XML de Nota Fiscal Eletrônica (NF-e - modelo 55). O script extrai códigos de produto de campos de informação adicional e os substitui automaticamente nos campos de código de produto padrão.

🎯 Funcionalidades

  • Processamento em lote de múltiplos arquivos XML
  • Extração inteligente de códigos numéricos usando Regex
  • Substituição automática de códigos de produto
  • Preservação de arquivos originais (cria cópias modificadas)
  • Logs detalhados do processo de execução
  • Validação de ambiente e tratamento de erros
  • Compatibilidade multiplataforma (Windows, macOS, Linux)

🚀 Instalação e Configuração

Pré-requisitos

  • PowerShell 7.0+ (PowerShell Core)
  • Acesso de leitura/escrita na pasta de origem

Instalação do PowerShell (se necessário)

macOS (via Homebrew)

brew install powershell

Windows

winget install Microsoft.PowerShell

Linux (Ubuntu/Debian)

wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb"
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y powershell

Configuração

  1. Clone o repositório:
git clone https://github.com/seu-usuario/ProcessarLoteNFe.git
cd ProcessarLoteNFe
  1. Configure o caminho da pasta de origem:
    • Abra o arquivo ProcessarLoteNFe.ps1
    • Edite a linha 21 com o caminho da sua pasta de XMLs:
    $pastaOrigem = "/caminho/para/sua/pasta/de/xmls"

📖 Como Usar

Execução Básica

pwsh ProcessarLoteNFe.ps1

Execução com Política de Execução

pwsh -ExecutionPolicy Bypass -File ProcessarLoteNFe.ps1

Execução sem Perfil (Recomendado)

pwsh -NoProfile -Command "& './ProcessarLoteNFe.ps1'"

🔧 Configurações Avançadas

Personalização do Script

No arquivo ProcessarLoteNFe.ps1, você pode modificar:

# Linha 21: Pasta de origem dos arquivos XML
$pastaOrigem = "/caminho/para/sua/pasta"

# Linha 24: Prefixo dos arquivos de saída
$prefixoArquivoSaida = "arquivoImportacao"

Padrões de Regex

O script usa a seguinte expressão regular para extrair códigos:

(?:c[oó]d|c[oó]digo|ref|refer[eê]ncia|produto)[\s\w\p{P}]*?(\d+)$

Palavras-chave reconhecidas:

  • código, codigo
  • ref, referencia, referência
  • produto

📁 Estrutura de Arquivos

ProcessarLoteNFe/
├── ProcessarLoteNFe.ps1          # Script principal
├── README.md                      # Esta documentação
├── LICENSE                        # Licença MIT
├── CHANGELOG.md                   # Histórico de versões
├── docs/                          # Documentação adicional
│   ├── technical-specs.md         # Especificações técnicas
│   └── examples/                  # Exemplos de uso
└── tests/                         # Testes (futuro)

📊 Exemplo de Saída

Iniciando o processo de automação (v2.2)...
Encontrados 1 arquivos XML para processar.
--------------------------------------------------------
[PROCESSANDO]: 11250621110545000201550010000207731665383446-procNFe.xml
  [Item 1]: PADRÃO ENCONTRADO! | Alterando cProd de "001" para "12345"
  [Item 2]: PADRÃO ENCONTRADO! | Alterando cProd de "002" para "67890"
 -> Concluído. 18 alterações salvas como 'arquivoImportacao_11250621110545000201550010000207731665383446-procNFe.xml' na pasta de origem.

--------------------------------------------------------
✅ Processo em lote finalizado.

🔍 Estrutura XML Processada

O script processa a seguinte estrutura XML de NF-e:

<nfe:det nItem="1">
    <nfe:prod>
        <nfe:cProd>001</nfe:cProd>  <!-- Código original -->
    </nfe:prod>
    <nfe:infAdProd>Código do produto: 12345</nfe:infAdProd>  <!-- Informação adicional -->
</nfe:det>

Resultado:

<nfe:det nItem="1">
    <nfe:prod>
        <nfe:cProd>12345</nfe:cProd>  <!-- Código extraído e substituído -->
    </nfe:prod>
    <nfe:infAdProd>Código do produto: 12345</nfe:infAdProd>
</nfe:det>

🛠️ Desenvolvimento

Estrutura do Código

  • Linhas 1-15: Cabeçalho e documentação
  • Linhas 17-25: Configurações do usuário
  • Linhas 27-40: Validação do ambiente
  • Linhas 42-108: Loop principal de processamento

Tecnologias Utilizadas

  • PowerShell 7.5.2+
  • System.Xml.XmlDocument para manipulação de XML
  • Regex para extração de padrões
  • Namespace Manager para XML com namespaces

🧪 Testes

Para testar o script:

  1. Crie uma pasta de teste com arquivos XML de NF-e
  2. Configure o caminho no script
  3. Execute o script e verifique os logs
  4. Confirme que os arquivos foram processados corretamente

📝 Logs e Debugging

Níveis de Log

  • ✅ Verde: Sucesso e conclusão
  • 🟡 Amarelo: Avisos e informações
  • 🔴 Vermelho: Erros críticos
  • ⚪ Branco: Detalhes de processamento
  • ⚫ Cinza: Arquivos ignorados

Troubleshooting

Erro: "Pasta não encontrada"

  • Verifique o caminho na linha 21
  • Confirme permissões de acesso

Erro: "Nenhum arquivo XML encontrado"

  • Verifique se existem arquivos .xml na pasta
  • Confirme a extensão dos arquivos

Erro: "Erro crítico ao processar"

  • Verifique se o XML é válido
  • Confirme se é uma NF-e (modelo 55)

🤝 Contribuição

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.

👨‍💻 Autor

Desenvolvedor Backend Especializado em XML de NF-e

  • Versão: 2.2.0
  • Última atualização: Dezembro 2024
  • Compatibilidade: PowerShell 7.0+

📞 Suporte


Se este projeto foi útil, considere dar uma estrela no GitHub!

About

Processador Automático de XML de NF-e - Script PowerShell para extração e substituição de códigos de produto

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors