### Install libgdiplus on Ubuntu 18.x Source: https://github.com/zeusautomacao/dfe.net/blob/master/README.md Installs the libgdiplus and libc6-dev libraries required for printing in Linux environments. ```bash apt-get install -y --no-install-recommends libgdiplus libc6-dev ``` -------------------------------- ### Install libgdiplus on Docker Ubuntu 18.x Source: https://github.com/zeusautomacao/dfe.net/blob/master/README.md Installs necessary libraries for printing within a Docker container based on Ubuntu 18.x. ```dockerfile RUN apt-get update \ && apt-get install -y --no-install-recommends libgdiplus libc6-dev \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* ``` -------------------------------- ### Install libgdiplus 6.0.5 on Debian 10 Source: https://github.com/zeusautomacao/dfe.net/blob/master/README.md Installs a specific version (6.0.5) of libgdiplus on Debian 10, addressing potential OutOfMemoryException errors. ```bash RUN apt-get update && apt-get remove libgdiplus -y && apt autoremove -y && apt-get install -y apt-transport-https dirmngr gnupg ca-certificates RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF RUN echo "deb https://download.mono-project.com/repo/debian stable-buster main" | tee /etc/apt/sources.list.d/mono-official-stable.list RUN apt-get update && apt-get install -y libgdiplus=6.0.5-0xamarin1+debian10b1 RUN apt show libgdiplus && rm -rf /var/lib/apt/lists/* ``` -------------------------------- ### Install Core Fonts on Debian 10 Source: https://github.com/zeusautomacao/dfe.net/blob/master/README.md Installs Microsoft core fonts on Debian 10, which may be required for specific report generations. ```bash apt-get install -y ttf-mscorefonts-installer fontconfig ``` -------------------------------- ### Install Core Fonts on Ubuntu 18.x Source: https://github.com/zeusautomacao/dfe.net/blob/master/README.md Installs Microsoft core fonts, including Times New Roman, which are used in some DANFE reports. ```bash sudo apt-get install ttf-mscorefonts-installer ``` -------------------------------- ### XML Documentation for Project Classes Source: https://github.com/zeusautomacao/dfe.net/blob/master/CONTRIBUTING.md Document all classes and attributes in XML format, following the pattern used in NFe.Classes. For project `*.Classes`, include the code and description as specified in the Manual de Orientação do Contribuinte. ```csharp /// /// PR06 - Versão do Aplicativo que processou a consulta. /// public string verAplic { get; set; } ``` -------------------------------- ### ConfiguracaoServico - Configuration Source: https://context7.com/zeusautomacao/dfe.net/llms.txt Demonstrates how to instantiate and configure the ConfiguracaoServico class for SEFAZ communication, specifying state, environment, document model, and digital certificate. ```APIDOC ## ConfiguracaoServico - Configuration ### Description Instantiate and configure the `ConfiguracaoServico` class to set up parameters for SEFAZ communication. This includes defining the emitting state (UF), operation environment (production/homologation), fiscal document model, layout version, and the digital certificate (A1/A3). ### Usage ```csharp using NFe.Core.Cadastros; using NFe.Core.Interfaces; using NFe.Core.XmlSchemas.NfeAutorizacao.Retorno; using NFe.Utils.Informacoes; // Configure the service for NFe issuance in São Paulo, in homologation environment var configuracaoServico = new ConfiguracaoServico { cUF = Estado.SP, // Emitting state: São Paulo tpAmb = TipoAmbiente.Homologacao, // Environment: homologation (2) Modelo = ModeloDocumento.NFe, // Model 55 = NFe tpEmis = TipoEmissao.Normal, // Normal emission (1) Versao = VersaoServico.Versao400, // Layout version 4.00 Certificado = certificadoX509 // X.509 digital certificate }; // Alternatively, load certificate from Windows repository var certificado = CertificadoDigital.ObterDoRepositorio("certificate-serial-number"); configuracaoServico.Certificado = certificado; ``` ``` -------------------------------- ### Configurar Serviços para CT-e e MDF-e com DFe.NET Source: https://context7.com/zeusautomacao/dfe.net/llms.txt Configure instâncias de serviço para CT-e e MDF-e usando a classe ConfiguracaoServico. Permite interagir com os respectivos Web Services da SEFAZ. ```csharp using CTe.Utils; using MDFe.Utils; // Configuração para CT-e var configuracaoCTe = new ConfiguracaoServico { cUF = Estado.SP, tpAmb = TipoAmbiente.Homologacao, Modelo = ModeloDocumento.CTe, // Modelo 57 Versao = VersaoServico.Versao400, Certificado = certificadoX509 }; var servicoCTe = new ServicosCTe(configuracaoCTe); var retornoStatusCTe = servicoCTe.CTeStatusServico(); // Configuração para MDF-e var configuracaoMDFe = new ConfiguracaoServico { cUF = Estado.SP, tpAmb = TipoAmbiente.Homologacao, Modelo = ModeloDocumento.MDFe, // Modelo 58 Versao = VersaoServico.Versao300, Certificado = certificadoX509 }; var servicoMDFe = new ServicosMDFe(configuracaoMDFe); var retornoStatusMDFe = servicoMDFe.MDFeStatusServico(); // Autorizar um MDF-e (manifesto para transportadoras) var retornoMDFe = servicoMDFe.MDFeAutorizacaoLote(loteManifesto); ``` -------------------------------- ### NFe XML Structure Example Source: https://github.com/zeusautomacao/dfe.net/blob/master/NFe.Danfe.Html/Readme.txt This XML snippet represents a complete NFe (Nota Fiscal Eletrônica) structure, including issuer, recipient, item details, and tax information. It adheres to version 4.00 of the NFe schema. ```xml 4368509077VENDA DE MERCADORIAS E SERVICOS551365222019-06-11T17:00:55-03:00124313409110210101.1.78.010835909000113KRAFCHINSKI, MORAES E LINARES LTDAKRAFCHINSKI, MORAES E LINARES LTDARUA GUIA LOPES1280RONDONIA4313409NOVO HAMBURGORS934155121058BRASIL51307730100860452247332806205000155BIKETOP COMERCIO E SERVICOS DE BICICLETAS EIRELIALTINO SERBETO DE BARROS173LOJA 01PITUBA2927408SALVADORBA418304921058BRASIL719880151741155731233005110SEM GTINCAMISA CANNONDALE PRETA/RAJADA CINZA LETRA AMARELA-ZIPER CURTO-MASC TAM G611300006102UN1.000029.990000000029.99SEM GTINUN1.000029.99000000001000329.997.00002.10999500.000.00000.000129.990.65000.190129.993.00000.90005115SEM GTINCAMISA ORBEA PRETA/AZUL/BRANCA-ZIPER CURTO- MASC - TAM G611300006102UN1.000029.990000000029.99SEM GTINUN1.000029.99000000001000329.997.00002.10999500.000.00000.000129.990.65000.190129.993.00000.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 ``` -------------------------------- ### Question Template Source: https://github.com/zeusautomacao/dfe.net/blob/master/CONTRIBUTING.md Use this markdown template when asking questions about the project. Provide a clear question, context, steps already taken, and environment details. ```markdown **Pergunta:** Como posso configurar o projeto para rodar em um ambiente Linux? **Contexto:** Estou tentando executar o projeto no Ubuntu 22.04, mas estou enfrentando dificuldades para instalar as dependências corretamente. **O que já tentei:** 1. Instalei todas as dependências listadas na documentação. 2. Executei o comando X, mas recebo o erro "Y". 3. Tentei a solução alternativa Z, sem sucesso. **Ambiente:** - Sistema Operacional: Ubuntu 22.04 - .NET versão: 6.0 - Dependências instaladas: A, B, C ``` -------------------------------- ### Enviar Carta de Correção Eletrônica (CC-e) com NFe.NET Source: https://context7.com/zeusautomacao/dfe.net/llms.txt Use RecepcaoEventoCartaCorrecao para enviar uma CC-e e corrigir informações de uma NFe autorizada. Podem ser registradas até 20 CC-es por NFe, mas apenas a última é válida. O texto da correção deve ter entre 15 e 1000 caracteres. ```csharp using NFe.Utils; var servicoNFe = new ServicosNFe(configuracaoServico); // Enviar carta de correção para ajustar dado do destinatário var retornoCartaCorrecao = servicoNFe.RecepcaoEventoCartaCorrecao( idLote: 1, sequenciaEvento: 1, // Incrementar para cada nova CC-e da mesma nota chave: "35240112345678000195550010000001001234567890", correcao: "Correção do endereço do destinatário: Rua Exemplo, 123, Bairro Centro", cpfCnpj: "12345678000195" ); if (retornoCartaCorrecao.cStat == "135") { Console.WriteLine($"CC-e registrada com protocolo: {retornoCartaCorrecao.nProt}"); } ``` -------------------------------- ### XML Documentation for Certificate Retrieval Source: https://github.com/zeusautomacao/dfe.net/blob/master/CONTRIBUTING.md Use XML documentation comments for methods and classes. When referencing other elements, use the `` tag. Ensure to include the license header and usage rights. ```csharp /// /// Obtém o certificado digital. /// /// Se for informado, será usado o método . /// Caso contrário, será usado . /// /// Após o uso, invoque . /// ``` -------------------------------- ### Serializar e Desserializar NFeProc com ExtNfeProc Source: https://context7.com/zeusautomacao/dfe.net/llms.txt Utilize ExtNfeProc para converter XML de NFeProc em objetos C# e vice-versa. Essencial para persistir e carregar documentos fiscais autorizados. ```csharp using NFe.Utils.NFe; using NFe.Core.XmlSchemas.NfeAutorizacao.Retorno; // Deserializar um nfeProc a partir de XML em string var xmlNfeProc = File.ReadAllText("nfeproc_35240112345678.xml"); var nfeProc = xmlNfeProc.XmlDeserialize(); // Acessar informações do documento autorizado var chaveAcesso = nfeProc.protNFe.infProt.chNFe; var protocolo = nfeProc.protNFe.infProt.nProt; var dataAutorizacao = nfeProc.protNFe.infProt.dhRecbto; Console.WriteLine($"Chave: {chaveAcesso}"); Console.WriteLine($"Protocolo: {protocolo}"); Console.WriteLine($"Autorizada em: {dataAutorizacao}"); // Serializar de volta para XML var xmlSerializado = nfeProc.XmlSerialize(); File.WriteAllText("nfeproc_salvo.xml", xmlSerializado); ``` -------------------------------- ### Configure SEFAZ Service for NFe Source: https://context7.com/zeusautomacao/dfe.net/llms.txt Set up the service configuration for NFe emissions, specifying the state, environment, document model, and digital certificate. The certificate can be loaded from a file or the Windows certificate store. ```csharp using NFe.Core.Cadastros; using NFe.Core.Interfaces; using NFe.Core.XmlSchemas.NfeAutorizacao.Retorno; using NFe.Utils.Informacoes; // Configurar o serviço para emissão de NFe no estado de São Paulo em homologação var configuracaoServico = new ConfiguracaoServico { cUF = Estado.SP, // Estado emissor: São Paulo tpAmb = TipoAmbiente.Homologacao, // Ambiente: homologação (2) Modelo = ModeloDocumento.NFe, // Modelo 55 = NFe tpEmis = TipoEmissao.Normal, // Emissão normal (1) Versao = VersaoServico.Versao400, // Layout versão 4.00 Certificado = certificadoX509 // Certificado digital X.509 }; // Alternativamente, carregar certificado do repositório do Windows var certificado = CertificadoDigital.ObterDoRepositorio("numero-serie-certificado"); configuracaoServico.Certificado = certificado; ``` -------------------------------- ### Consultar Cadastro de Contribuinte com NfeConsultaCadastro Source: https://context7.com/zeusautomacao/dfe.net/llms.txt Use NfeConsultaCadastro para verificar informações cadastrais de um contribuinte (CNPJ/CPF/IE) junto à SEFAZ. Útil para validação antes da emissão de documentos. ```csharp using NFe.Utils; var servicoNFe = new ServicosNFe(configuracaoServico); // Consultar cadastro por CNPJ var retornoCadastro = servicoNFe.NfeConsultaCadastro( cUF: Estado.SP, cpfCnpj: "12345678000195", ie: null ); if (retornoCadastro.cStat == "111" || retornoCadastro.cStat == "112") { var cadastro = retornoCadastro.infCad.FirstOrDefault(); Console.WriteLine($"CNPJ: {cadastro?.CNPJ}"); Console.WriteLine($"Razão Social: {cadastro?.xNome}"); Console.WriteLine($"Situação: {cadastro?.xSit}"); Console.WriteLine($"IE: {cadastro?.IE}"); } ``` -------------------------------- ### Transmitir Evento Prévio de Emissão em Contingência (EPEC) com NFe.NET Source: https://context7.com/zeusautomacao/dfe.net/llms.txt O método RecepcaoEventoEpec envia o EPEC ao ambiente nacional da SEFAZ, usado quando o contribuinte opera em modo de contingência por indisponibilidade dos webservices do estado emissor. O EPEC registra antecipadamente as informações resumidas da NFe. ```csharp using NFe.Utils; var servicoNFe = new ServicosNFe(configuracaoServico); // Enviar EPEC durante operação em contingência var retornoEpec = servicoNFe.RecepcaoEventoEpec( idLote: 1, sequenciaEvento: 1, nfe: nfeGerada, // Objeto NFe gerado localmente versao: "4.00" ); if (retornoEpec.cStat == "135") { Console.WriteLine($"EPEC registrado: {retornoEpec.nProt}"); // Após restabelecimento, transmitir a NFe normalmente com tpEmis = Contingência } ``` -------------------------------- ### Load and Print NF-e/NFC-e Document Source: https://github.com/zeusautomacao/dfe.net/blob/master/README.md Loads an XML file into an nfeProc object and generates a DANFE (printable version) for NFCe. Requires the DFe.NET library and optionally FastReport.Net for advanced printing features. ```cs var proc = new nfeProc().CarregarDeArquivoXml(Caminho_do_arquivo_XML); var danfe = new DanfeFrNfce(proc, new ConfiguracaoDanfeNfce(NfceDetalheVendaNormal.UmaLinha, NfceDetalheVendaContigencia.UmaLinha, null/*Logomarca em byte[]*/), "00001", "XXXXXXXXXXXXXXXXXXXXXXXXXX"); danfe.Visualizar(); //danfe.Imprimir(); //danfe.ExibirDesign(); ``` -------------------------------- ### ConfiguracaoServico for CT-e and MDF-e Source: https://context7.com/zeusautomacao/dfe.net/llms.txt Configures services for CT-e and MDF-e, following the same pattern as NFe. This allows for easy integration of multiple document types within a single application. ```APIDOC ## ConfiguracaoServico para CT-e e MDF-e A configuração de serviço para CT-e (Conhecimento de Transporte Eletrônico) e MDF-e (Manifesto de Documentos Fiscais Eletrônicos) segue o mesmo padrão da NFe, com a diferença no modelo do documento. As classes `ServicosCTe` e `ServicosMDFe` seguem a mesma interface de uso que `ServicosNFe`, facilitando a integração de múltiplos tipos de documentos em uma única aplicação. ```csharp using CTe.Utils; using MDFe.Utils; // Configuração para CT-e var configuracaoCTe = new ConfiguracaoServico { cUF = Estado.SP, tpAmb = TipoAmbiente.Homologacao, Modelo = ModeloDocumento.CTe, // Modelo 57 Versao = VersaoServico.Versao400, Certificado = certificadoX509 }; var servicoCTe = new ServicosCTe(configuracaoCTe); var retornoStatusCTe = servicoCTe.CTeStatusServico(); // Configuração para MDF-e var configuracaoMDFe = new ConfiguracaoServico { cUF = Estado.SP, tpAmb = TipoAmbiente.Homologacao, Modelo = ModeloDocumento.MDFe, // Modelo 58 Versao = VersaoServico.Versao300, Certificado = certificadoX509 }; var servicoMDFe = new ServicosMDFe(configuracaoMDFe); var retornoStatusMDFe = servicoMDFe.MDFeStatusServico(); // Autorizar um MDF-e (manifesto para transportadoras) var retornoMDFe = servicoMDFe.MDFeAutorizacaoLote(loteManifesto); ``` ```