FireMonkey e NFe 2.02 - Partes 3 e 4
Esta série de artigos demonstrará como utilizar uma aplicação criada na nova plataforma da Embarcadero, a FireMonkey, para gerar, assinar e validar notas fiscais eletrônicas partindo do zero, sem a utilização de componentes de terceiros integrados à ferramenta, bem como consumir os recursos dos Web Services da Secretaria da Fazenda para o envio e consulta das mesmas, finalizando com a impressão da DANFE. Nesta primeira parte são abordados os itens necessários para a geração da NF-e.
Em que situação o tema é útil
Possibilitar o desenvolvimento de um módulo de nota fiscal eletrônica para ser integrado as aplicações desenvolvidas na plataforma nova FireMonkey, uma vez que a mesma não tenha ainda componentes voltados para a utilização da NF-e, bem como demonstrar passo á passo o desenvolvimento de uma aplicação NF-e.
FireMonkey e NF-e 2.0
Atualmente grande parte das empresas de vários seguimentos é obrigada a emitir a nota fiscal eletrônica e muitas podem optar pela mesma. Por este motivo, os novos e antigos softwares comerciais e industriais devem possibilitar uma estrutura para a elaboração e transmissão das mesmas, caso contrário correm sérios riscos de perder mercado. Como a FireMonkey ainda é uma plataforma muito recente, evidentemente não possui tantos componentes para funções especificas em comparação com a plataforma VCL, como é o caso da integração com a NF-e. Nesta primeira parte do artigo é abordada a estrutura básica para a geração do arquivo XML da NF-e através do recurso XML Data Binding, que em suma, permite que um documento ou XML Schema possa ser importado para a aplicação de uma maneira muito rápida e prática, onde tal recurso também esta presente em diversas versões do Delphi, bem como a elaboração das funções básicas para a geração da nota fiscal eletrônica, como é o caso de remoção de caracteres não permitidos, geração de número aleatório, cálculo do digito verificador e elaboração da chave de acesso. Para concluir, um exemplo completo da composição de uma nota fiscal por uma empresa optante pelo Simples Nacional.
A Nota Fiscal Eletrônica se tornou uma obrigatoriedade na maioria das aplicações comerciais e industriais da atualidade no país. Ela surgiu com o propósito de substituir a emissão de notas fiscais em papel por um documento eletrônico, devidamente baseado em um padrão constituído de várias regras e que deve ser assinado digitalmente pelo emitente através de um certificado digital para garantir sua autenticidade. Tal documento deve ser elaborado, validado, transmitido, autorizado e por fim, consultado através da Internet, possibilitando assim um acompanhamento fiscal das movimentações comerciais praticamente em tempo real pela Secretaria da Fazenda - SEFAZ. Entretanto, para o transporte das mercadorias presentes na nota e a facilidade de consulta, existe o DANFE (Documento Auxiliar da Nota Fiscal Eletrônica), que pode ser impresso em uma folha de papel comum, porém que não substitui o documento eletrônico e tampouco é considerado uma nota fiscal.
Há alguns anos atrás quando surgiu, a Nota Fiscal Eletrônica fez com que muitas empresas e desenvolvedores tivessem que se adaptar e adotar um novo padrão na elaboração de seus projetos e alimentação dos dados nas bases.
Além do executável da aplicação comercial, suas informações também devem estar coerentes e compostas pelos objetos que estão presentes na nota fiscal, como os impostos, para que os mesmos possam ser futuramente calculados. Também é importante ressaltar que para a emissão das notas fiscais, a empresa deve entrar em contato com um órgão responsável para a obtenção do certificado digital, possibilitando assim a futura assinatura da nota. É evidente que esta se torna a primeira fase da implantação do Projeto de NF-e, ou seja, a base necessária para que uma nota possa ser gerada e assinada pela aplicação.
Uma vez que a base para o Projeto está concluída, os dados das notas fiscais devem ser sujeitos a uma validação ainda na aplicação do cliente, permitindo assim a detecção de erros antes do envio das mesmas. Tal validação deve ser feita através dos schemas disponibilizados pela Secretaria da Fazenda. Os schemas (arquivos XSD – XML Schema Definition) são documentos baseados em XML (Extensible Markup Language) que possuem regras de validação para serem aplicadas em arquivos XML, uma vez que a nota fiscal eletrônica é um documento baseado nesta linguagem. Algumas regras de validação que devem ser bem observadas durante a elaboração da nota fiscal eletrônica, pois podem causar “dores de cabeça” no momento da validação, tratam da existência de espaços no início e no fim das informações presentes nos elementos, bem como a utilização de quebras de linha no arquivo XML com a intenção de efetuar uma formatação no arquivo texto, dentre várias outras.
Com o documento eletrônico elaborado, assinado e validado, o próximo passo é efetuar sua transmissão para um Web Service da Secretaria da Fazenda. Um Web Service é um serviço automatizado que disponibiliza as mais variadas funções através da Internet, permitindo assim a troca de informações entre diversas aplicações e plataformas, sendo baseado em XML e HTML. Em suma, ele “simplesmente” recebe uma solicitação, processa e devolve uma resposta para o solicitante. Para que exista tal comunicação, uma implementação do protocolo SOAP (Simple Object Access Protocol) pode ser efetuada, disponibilizando assim a independência necessária para o funcionamento do Web Service. Contudo, para que se possa acessar e utilizar os recursos de um Web Service, há a necessidade de se conhecer sua estrutura. Tal estrutura pode ser obtida através de um arquivo XML sob a padronização WSDL (Web Service Description Language) ou, muitas vezes, através de um manual de utilização do mesmo, como é o caso dos Web Services da Secretaria da Fazenda. Para o ambiente da Nota Fiscal Eletrônica são disponibilizados vários Web Services, sendo destinados para homologação (testes) e produção. Estes possibilitam o envio, cancelamento, inutilização e diversas consultas das notas fiscais eletrônicas emitidas através da aplicação cliente. Vale à pena lembrar que os Web Services também são constituídos de serviços síncronos e assíncronos, onde neste último, a aplicação cliente deve fazer futuras consultas até obter a resposta almejada. No que diz respeito ao FireMonkey, a mais recente plataforma de desenvolvimento de aplicações presente no Delphi XE 2, também pode ser utilizada para a elaboração das notas fiscais eletrônicas. Vale a pena lembrar que vários objetos e recursos presentes na VCL também estão presentes no FireMonkey, como é o caso do XML Data Binding, que será abordado posteriormente, possibilitando assim a estrutura para a elaboração de uma aplicação NF-e.
O XML (Extensible Markup Language) é um documento que utiliza uma linguagem de marcação de acordo com a W3C para ser utilizado na descrição e armazenamento dos mais diversos tipos de informações, visando o compartilhamento de dados principalmente através da Internet, e como seu próprio nome sugere, é extensível, não havendo um limite pré-estabelecido para o número de Tags que podem ser utilizadas, bem como as mesmas podem ser criadas pelo próprio desenvolvedor do arquivo. Possui uma composição baseada em elementos também conhecidos como “nós”, sendo constituído de um elemento raiz (nó raiz) e vários elementos filhos de acordo com a necessidade do projeto. Vale à pena evidenciar que tais nós podem possuir atributos, bem como podem utilizar uma Tag inicial '< >' e uma Tag final '< />' para a estrutura dos seus dados. Para concluir, um arquivo XML é basicamente um arquivo de texto evidentemente estruturado, que pode ser simplesmente alterado por qualquer editor de textos.
A W3C (World Wide Web Consortium) é um consórcio internacional com vários membros, envolvendo diversas instituições cujo objetivo é estabelecer padrões para a elaboração e interpretação de vários documentos utilizados na Web. Em outras palavras, um site ou um arquivo XML que é criado sob estes padrões, pode ser acessado por qualquer Software interpretador, permitindo assim que computadores, Tablets, Smartphones entre outros, acessem e obtenham tal conteúdo normalmente, independente da plataforma utilizada.
XML Data Binding
O recurso XML Data Binding é muito útil e se torna essencial para a elaboração de uma aplicação NF-e, obtendo assim uma alta produtividade, uma vez que a Secretaria da Fazenda disponibiliza os XML Schemas para geração e validação das notas fiscais.
O assistente para utilização deste recurso pode ser facilmente acessado no Delphi XE 2 através do menu File>New>Other>XML>XML Data Binding. Vale à pena evidenciar que o XML Data Binding também está disponível em versões anteriores do Delphi. Através dele é possível gerar classes originadas de XML Schemas (XSD), arquivos DTD (Document Type Definition), Data Reduced XML (XDR) e etc.
Ao utilizar o assistente, a primeira etapa é a seleção do esquema ou documento XML para que futuramente uma Unit possa ser gerada automaticamente de acordo com o Schema informado, permitindo também que possam ser especificadas as estratégias de nomes para a geração das interfaces e classes. A Figura 1 demonstra a tela inicial do assistente de XML Data Binding do Delphi XE 2.
Figura 1. Tela inicial do assistente de XML Data Binding
No próximo passo, é possível visualizar e fornecer informações detalhadas para cada nó e seus elementos (se existirem) no esquema ou documento. Também pode ser gerada uma função global que utiliza um objeto do tipo TXMLDocument, possibilitando o retorno da interface do nó raiz pertencente a hierarquia de dados. O TXMLDocument é um objeto que pode ser utilizado para a construção de um arquivo XML (novo ou existente), bem como possibilitar sua leitura, podendo ser futuramente gravado em um arquivo.
Com a conclusão do assistente, o documento XML é abstraído para um grupo de interfaces que permitem a definição de valores finais, em outras palavras, a representação de um objeto (documento XML) é feita na memória, não necessitando que a aplicação utilize DOM (Document Object Model), SAX (Simple API for XML) ou outro recurso para acesso aos dados. Ao utilizar tal recurso, o código do nó raiz é uma interface derivada de TXMLDocument, como mencionado anteriormente, e seus nós filhos podem ser derivados de qualquer IXMLNode ou interface gerada à partir do tipo do nó. Após a obtenção das classes, a leitura e a criação de arquivos do tipo XML se torna muito mais fácil e rápida, permitindo uma maior produtividade e flexibilidade na manipulação dos dados. Vale à pena evidenciar também que, como o XML foi mapeado em uma Unit, a mesma pode ser facilmente gravada em conjunto com o projeto. Como pode ser observado, na elaboração das classes o Delphi utiliza interfaces para a geração dos métodos públicos, podendo assim utilizar o mecanismo denominado contagem de referência para que a instância seja liberada da memória de uma maneira automática, sendo assim, um método que utilize a interface não necessita que sua referência seja removida de forma explicita.
...Confira outros conteúdos:
Instalando o ACBr
Mapeamento Objeto-Relacional com TMS...
Introdução aos componentes JEDI
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.