{"id":26213022,"url":"https://github.com/nathaliacosim/importar-xml-nfce","last_synced_at":"2026-05-22T04:37:39.750Z","repository":{"id":281728790,"uuid":"946098391","full_name":"nathaliacosim/importar-xml-nfce","owner":"nathaliacosim","description":"Importação e processamento de NFC-e (Nota Fiscal de Consumidor Eletrônica) em arquivos XML para banco de dados PostgreSQL.","archived":false,"fork":false,"pushed_at":"2025-03-10T20:42:38.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-10T21:27:29.941Z","etag":null,"topics":["csharp-code","csharp-console","csharp-xml","migration-tool","nfce","pis-cofins","read-xml"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nathaliacosim.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-10T15:53:59.000Z","updated_at":"2025-03-10T20:42:41.000Z","dependencies_parsed_at":"2025-03-10T21:28:15.957Z","dependency_job_id":null,"html_url":"https://github.com/nathaliacosim/importar-xml-nfce","commit_stats":null,"previous_names":["nathaliacosim/importar-xml-nfce"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathaliacosim%2Fimportar-xml-nfce","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathaliacosim%2Fimportar-xml-nfce/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathaliacosim%2Fimportar-xml-nfce/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nathaliacosim%2Fimportar-xml-nfce/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nathaliacosim","download_url":"https://codeload.github.com/nathaliacosim/importar-xml-nfce/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243188241,"owners_count":20250457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp-code","csharp-console","csharp-xml","migration-tool","nfce","pis-cofins","read-xml"],"created_at":"2025-03-12T09:17:01.335Z","updated_at":"2025-12-27T07:43:24.755Z","avatar_url":"https://github.com/nathaliacosim.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# 📥 Importação de NFC-e (Nota Fiscal de Consumidor Eletrônica)\n\nEste projeto realiza a importação de arquivos XML de NFC-e (Nota Fiscal de Consumidor Eletrônica) para um banco de dados PostgreSQL 📊. A solução lê os arquivos XML de um diretório, processa e insere os dados relevantes nas tabelas do banco de dados, como informações sobre a NFC-e, emitente, produtos, tributos e pagamentos.\n\n---\n\n## 🚀 Tecnologias Utilizadas\n\n- 🖥 **.NET Framework** (C#)\n- 🗄 **PostgreSQL** (Banco de dados)\n- 🔌 **Npgsql** (Biblioteca para comunicação com PostgreSQL)\n- 📄 **XML** (Formato de dados para as NFC-e)\n- 🔍 **LINQ to XML** (Para manipulação dos dados XML)\n\n---\n\n## ⚡ Funcionalidades\n\n- 📂 Leitura de arquivos XML de NFC-e.\n- 📊 Extração e inserção dos dados em um banco de dados PostgreSQL.\n- 🛑 Verificação da existência de NFC-e e emitente antes da inserção para evitar duplicidades.\n- ⚙ Processamento assíncrono de múltiplos arquivos XML em paralelo.\n- 🔄 Controle de concorrência através de semáforos para limitar o número de tarefas simultâneas.\n\n---\n\n## 🗃 Estrutura do Banco de Dados\n\nO banco de dados utilizado é o **PostgreSQL**, com as seguintes tabelas:\n\n- **nfce** 🧾: Armazena informações sobre a NFC-e, como chave de acesso, número, série, data de emissão e total.\n- **emitente** 🏢: Contém os dados do emitente da NFC-e, como CNPJ, nome e endereço.\n- **produto** 📦: Armazena informações dos produtos presentes na NFC-e, como código, descrição, quantidade, valor unitário e total.\n- **impostos_detalhados** 💰: Armazena os tributos relacionados à NFC-e, como PIS e COFINS.\n- **pagamento** 💳: Registra os detalhes do pagamento da NFC-e, como forma de pagamento e valor pago.\n\n---\n\n## 📌 Pré-requisitos\n\n- **.NET Framework** 4.7.2 ou superior.\n- **PostgreSQL**.\n- **Npgsql** instalado via NuGet.\n- Arquivos XML de NFC-e válidos.\n\n---\n\n## 📥 Instalação\n\n### 1️⃣ Clone o repositório\n\n```bash\ngit clone https://github.com/username/importar-xml-nfce.git\ncd importar-xml-nfce\n```\n\n### 2️⃣ Configure o banco de dados\n\nCrie as tabelas no seu banco de dados PostgreSQL. Utilize o Postgres 13 de preferência. Você pode usar os scripts SQL a seguir para criar a estrutura do banco:\n\n```sql\nCREATE TABLE nfce (\n    id SERIAL PRIMARY KEY,\n    chave_acesso VARCHAR(44) UNIQUE NOT NULL,\n    numero_nota INTEGER NOT NULL,\n    serie INTEGER NOT NULL,\n    data_emissao TIMESTAMP NOT NULL,\n    total DECIMAL(10,2) NOT NULL\n);\n\nCREATE TABLE emitente (\n    id SERIAL PRIMARY KEY,\n    cnpj VARCHAR(14) UNIQUE NOT NULL,\n    nome VARCHAR(255) NOT NULL,\n    endereco TEXT NOT NULL\n);\n\nCREATE TABLE produto (\n    id SERIAL PRIMARY KEY,\n    id_nfce INTEGER REFERENCES nfce(id) ON DELETE CASCADE,\n    codigo VARCHAR(50) NOT NULL,\n    descricao VARCHAR(255) NOT NULL,\n    quantidade DECIMAL(10,2) NOT NULL,\n    valor_unitario DECIMAL(10,2) NOT NULL,\n    valor_total DECIMAL(10,2) NOT NULL\n);\n\nCREATE TABLE impostos_detalhados (\n    id SERIAL PRIMARY KEY,\n    id_produto INTEGER REFERENCES produto(id) ON DELETE CASCADE,\n    tipo VARCHAR(50) NOT NULL,\n    cst VARCHAR(10) NOT NULL,\n    base_calculo DECIMAL(10,2),\n    aliquota DECIMAL(10,4),\n    valor DECIMAL(10,2) NOT NULL\n);\n\nCREATE TABLE pagamento (\n    id SERIAL PRIMARY KEY,\n    id_nfce INTEGER REFERENCES nfce(id) ON DELETE CASCADE,\n    forma_pagamento VARCHAR(50) NOT NULL,\n    valor_pago DECIMAL(10,2) NOT NULL\n);\n```\n\n### 3️⃣ Configure o arquivo de conexão\n\nVá até o diretório `bin/debug/` e crie um arquivo chamado **appsettings.json**, contendo:\n\n```json\n{\n  \"Postgres\": {\n    \"Host\": \"localhost\",\n    \"Port\": \"porta_banco\",\n    \"Database\": \"nome_banco\",\n    \"Username\": \"usuario_postgres\",\n    \"Password\": \"senha_postgres\"\n  }\n}\n```\n\nPreencha com os dados do seu banco de dados PostgreSQL.\n\n### 4️⃣ Adicione seus arquivos XML na pasta `XMLFiles`\n\nNo diretório `bin/debug/`, crie uma pasta chamada **XMLFiles** e coloque seus arquivos XML de NFC-e dentro dela. Somente arquivos `.xml` serão processados.\n\n---\n\n## 🎯 Uso\n\n1️⃣ **Execute o programa**:\n\n   Após configurar o banco de dados e os arquivos XML, execute:\n\n   ```bash\n   dotnet run\n   ```\n\n2️⃣ **Processamento de arquivos**:\n\n   O sistema processará automaticamente todos os arquivos XML de NFC-e encontrados na pasta `XMLFiles`. Para cada arquivo, ele fará a inserção dos dados no banco de dados.\n\n---\n\n## 🤝 Contribuindo\n\n1. Faça o fork do repositório.\n2. Crie uma nova branch (`git checkout -b feature-nova-funcionalidade`).\n3. Faça suas alterações e commit (`git commit -am 'Adiciona nova funcionalidade'`).\n4. Faça o push para a branch (`git push origin feature-nova-funcionalidade`).\n5. Abra um Pull Request.\n\n---\n\n## 📜 Licença\n\nEste projeto está licenciado sob a [MIT License](LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathaliacosim%2Fimportar-xml-nfce","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnathaliacosim%2Fimportar-xml-nfce","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnathaliacosim%2Fimportar-xml-nfce/lists"}