Como emitir NFCe com a linguagem CSharp (ou C#)? Leia o nosso artigo e entenda o passo a passo!
O sistema fiscal brasileiro traz uma série de complexidades que desafiam o desenvolvimento de módulos nos sistemas financeiros.
São vários tributos e regras específicas que exigem conhecimentos adequados em suas configurações, tal como emitir NFCe com CSharp (ou C#).
Há uma série de etapas que o seu software precisa ser capaz de realizar, desde a emissão até a consulta da nota fiscal.
Elas exigem o conhecimento adequado para criar módulos capazes de realizar as ações com eficiência.
Os tributos das notas incluem benefícios fiscais, isenções e reduções de cálculos, regimes especiais, decretos, portarias e regulamentos.
Se não bastassem tantos aspectos, eles ainda são considerados em todos os níveis governamentais, que são representados pela União, pelos Estados e pelos mais de 5,5 mil municípios.
Há divergências também em relação aos tipos de serviços prestados, como os profissionais empregados de maneira formal e as pessoas jurídicas que não estão atreladas diretamente.
Muitas empresas lidam com valores colossais na tributação e precisam estar atentas em relação à sonegação, evitando problemas de compliance.
Todas essas questões contribuem para a dificuldade em emitir NFCe em CSharp. Mas como é possível preparar a API de notas fiscais nos sistemas da sua software house?
Entenda a linguagem C#
Para emitir NFCe em CSharp, você precisa entender como funciona a linguagem C#. Esse tipo de programação é orientada para objetos, tendo como base a linguagem C++ e elementos de Java e Pascal.
A ideia emsua criação era desprender a plataforma .NET de outras linguagens existentes que limitavam o seu desenvolvimento.
Assim, foi desenvolvida especificamente para essa plataforma, mas permite suporte a outras linguagens, como VB.NET, C++ e J+.
Isso porque há bibliotecas que permitem que as aplicações rodem em um ambiente CLR (Common Language Runtime). Uma vantagem do C# é que é uma forma de programação próxima do Java, mas com algumas diferenças mais nítidas.
Ao emitir NFCe com CSharp (ou C#), o módulo facilita implementar propriedades e sobrecarga de operadores e um módulo para manipular ponteiros e aritmética sem checagem, funções inexistes em Java. Além disso, o C# utiliza XML em vez de Javadoc.
Aprenda a emitir NFCe em CSharp
Existem 4 passos gerais para criar um módulo capaz de emitir NFCe com CSharp (ou C#). Veja a seguir um resumo dessas etapas!
1. Criação do XML
Para começar, você precisa saber gerar um arquivo XML corretamente. Para isso, é necessário aprender como pegar as informações necessárias.
Há um formato padrão de XML da Sefaz, mas não se preocupe.Essa é uma tarefa sem grandes segredos, já que o próprio site da NF-e disponibiliza um manual para seguir as orientações. Vale ressaltar que a estrutura do documento é bastante parecida para NF-e e NFC-e.
A Receita Federal também libera acesso aos schemas XML necessários para validar o arquivo pela linguagem C#.
2. Assinatura com certificado digital
O envio das notas à Sefaz requer a assinatura do XML. Para fazer isso, o sistema em C# precisa ser capaz de acessar os certificados digitais instalados no computador.
A manipulação pode ser feita por diferentes classes, que irão receber o arquivo e fazer a assinatura em si.
O certificado digital precisa ter o mesmo CNPJ do emissor. É possível fazer a assinatura pelo aplicativo AssinadorRS oficial da Fazenda ou por métodos como AssinarNota usado pelo componente da TecnoSpeed.
Esse método retorna o mesmo XML como parâmetro, com tags de assinatura no conteúdo.
Na linguagem C#, usamos:
- retorno = spdNFCe.AssinarNota(“Conteúdo do XML a ser Assinado”).
3. Implementação do cliente
Para o processamento das solicitações, é necessário ter um cliente com acesso a webservices SOAP. As instruções de implementação estão no manual da NF-e.
O processamento pode ser de forma síncrona, se o atendimento da solicitação ocorrer na mesma conexão, ou assíncrona, se for necessário mais de uma conexão para o resultado.
4. Retorno dos webservices
O último passo é tratar o retorno dos webservices. Se houver resposta positiva para a NFCe, basta atualizar o banco com as informações solicitadas, como o número de protocolo. Então, gere a impressão segundo o padrão.
Cuidados para emitir NFCe com CSharp (ou C#)
Para que esses passos sejam concluídos com êxito, há alguns cuidados a serem tomados. Você precisa conferir se está com todos os elementos necessários para o processo. A checagem inclui:
- Certificado digital instalado na máquina;
- Download do componente NFCe;
- Download da demonstração do componente NFCe em C#;
- Instalação correta do componente;
- Visual Studio instalado e configurado.
Como emitir NFCe em CSharp (C#) em poucos minutos
Quer tornar o seu sistema mais preparado para emitir NFCe com CSharp (ou C#) de forma rápida e prática? A API pronta da TecnoSpeed permite realizar essa ação em poucos minutos.
Uma vez que você se certifique de cumprir os requisitos listados nos cuidados, pode ir até a pasta de instalação do componente da NFCe. Copie tudo que estiver em “Arquivo” e troque o conteúdo da pasta de demonstração em “Bin\debug\” por eles.
Então, abra o NFCeServidoresHom.ini e verifique a quantidade de blocos de servidores. Se houver três, é porque já há WebService para testes. Se não houver autorização para usar o ambiente de homologação da UF ou haver apenas dois blocos, você deve incluir ou substituir o terceiro bloco, de acordo com as URLs da UF em questão.
Após essa etapa, procure as seguintes linhas no projeto da demonstração em C#:
- NFCeDataSet.SetCampo(“dhEmi_B09=” + String.Format(“{0:yyyy-MM-ddTHH:mm:ss}”, DateTime.Now) + “-03:00”); ‘Verifique se o fuso corresponde ao de sua UF.
- NFCeDataSet.SetCampo(“cMunFG_B12=4115200”); ‘Informe o código de seu municipio.
- NFCeDataSet.SetCampo(“cMun_C10=4115200”); ‘Informe o código de seu municipio.
- NFCeDataSet.SetCampo(“xMun_C11=MARINGA”); ‘Informe o nome de seu municipio.
Ao localizá-las, você deve adicionar as informações solicitadas. Quando se tratar do ambiente de testes de uma UF específica, também será necessário fazer alterações nas seguintes linhas:
- NFCeDataSet.SetCampo(“cUF_B02=13”); ‘Informe o código de sua UF.
- NFCeDataSet.SetCampo(“IE_C17=9044016688”); ‘Informe a IE do emitente.
- NFCeDataSet.SetCampo(“CRT_C21=3”); ‘Informe 1 para simples nacional, 2 para simples nacional com excedente e 3 para normal.
Salve e compile o projeto. Após a execução selecione o certificado ComboBox e clique em “Configurar Ini” para que o nome do certificado apareça na propriedade “NomeCertificado”.
Um arquivo irá se abrir. Nele, preencha os dados de CNPJ e UF e configura se Ambiente=2 e VersaoManual=5.0. Em caso positivo, você pode salvar e fechar. Na demonstração, clique em “Load Config” e as alterações serão carregadas no componente.
Por fim, clique em “2. Gerar Via DataSet” para converter os dados em XML, em “3. Assinar XML” E EM 4.2 Enviar Sincrono”. Recebendo a autorização da NFCe como retorno, a DANFCE estará pronta para ser visualizada, exportada e impressa.
Essas etapas são bastante simples e levam, em média, 10 minutos. Além disso, contar com uma API terceirizada tem a vantagem de focar os esforços da equipe em pontos mais estratégicos da sua ferramenta.
Se você quer que seu sistema possa emitir NFCe em CSharp (C#) de forma econômica e eficiente, conheça a nossa API de NFCe!