Example #1
0
        /// <summary>
        /// Cria o arquivo XML da nota fiscal pronto para ser assinado e enviado para o servidor do Governo.
        /// </summary>
        /// <param name="nfe"></param>
        public void criarNfeXml(NotaFiscalEletronica nfe)
        {
            #region VARIÁVEIS

            int intResultado;

            #endregion VARIÁVEIS

            #region AÇÕES

            try
            {
                if (nfe == null)
                {
                    throw new ArgumentNullException();
                }

                if (!this.validarNfe(nfe))
                {
                    return;
                }

                Server.i.criarNfeXml(nfe);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
            }

            #endregion AÇÕES
        }
Example #2
0
        private void exportarVariosArquivosNotaFiscalEletronica()
        {
            #region VARIÁVEIS

            #endregion VARIÁVEIS

            #region AÇÕES

            try
            {
                for (int i = 0; i < 100; i++)
                {
                    Endereco objEndereco = new Endereco();
                    objEndereco.strBairro = "Centro";

                    Pessoa objPessoaEmitente = new Pessoa();
                    objPessoaEmitente.objEndereco = objEndereco;
                    objPessoaEmitente.strNome     = "Rodrigo";

                    NotaFiscalEletronica nfe = new NotaFiscalEletronica();
                    nfe.objPessoaEmitente = objPessoaEmitente;
                    nfe.strId             = "NFE999999999999999999999999999999";
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
            }

            #endregion AÇÕES
        }
Example #3
0
        /// <summary>
        /// Envia o objeto "NotaFiscalEletronica" para o servidor e aguarda o retorno do XML da nota
        /// fiscal como resposta se todos os dados estiverem corretos.
        /// </summary>
        /// <param name="nfe">Nota Fiscal com os dados para geração do XML.</param>
        public void criarNfeXml(NotaFiscalEletronica nfe)
        {
            #region VARIÁVEIS

            ObjInterlocutor objInterlocutor;
            ObjInterlocutor objInterlocutorResposta;

            #endregion VARIÁVEIS

            #region AÇÕES

            try
            {
                objInterlocutor = new ObjInterlocutor();

                objInterlocutor.intFuncaoId = ObjInterlocutor.INT_FUNCAO_CRIAR_XML_NFE;
                objInterlocutor.strJson     = JsonConvert.SerializeObject(nfe);

                objInterlocutorResposta = this.enviar(objInterlocutor);

                // TODO: Tratar retorno (objInterlocutorResposta).
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
            }

            #endregion AÇÕES
        }
        public void Verifica_Deserializacao_From_File()
        {
            var     nfeSerializer = new NfeXmlSerializer();
            NfeProc nfe           = nfeSerializer.DeserializeFromFile <NfeProc>("NfeProc.xml");

            Assert.IsTrue(nfe != null);
            Assert.IsTrue(nfe.Nfe != null);
            Debug.WriteLine(String.Format("Num Nfe.: {0}", nfe.Nfe.InfNfe.Ide.NumNf));

            Debug.WriteLine(String.Format("Remetente.: {0}", nfe.Nfe.InfNfe.Emitente.Nome));
            Debug.WriteLine(String.Format("Destinatário.: {0}", nfe.Nfe.InfNfe.Destinatario.Nome));
            Debug.WriteLine(String.Format("Qtde. Itens.: {0}", nfe.Nfe.InfNfe.Itens.Count));

            Assert.IsTrue(nfe.Nfe.InfNfe.Itens.Count > 0);

            foreach (var item in nfe.Nfe.InfNfe.Itens)
            {
                Debug.WriteLine(String.Format("Produto .: {0}", item.Produto.Descricao));
                Debug.WriteLine(String.Format("Inf. Adicional .: {0}", item.InfAdProd));
            }

            NotaFiscalEletronica notaFiscal = nfeSerializer.DeserializeFromFile <NotaFiscalEletronica>("Nfe.xml");

            Assert.IsTrue(notaFiscal != null);
        }
        public List <NfeProc> GetNfeProcList(List <Stream> pStreamList)
        {
            List <NfeProc> nfeProcList = new List <NfeProc>();

            if (pStreamList != null && pStreamList.Any())
            {
                NfeXmlSerializer xmlSerializer = new NfeXmlSerializer();

                pStreamList.Select(stream => stream)
                .ToList()
                .ForEach(inputStream =>
                {
                    NfeProc nfeProc = null;
                    try
                    {
                        nfeProc = xmlSerializer.DeserializeFromStream <NfeProc>(inputStream);
                    }
                    catch (InvalidOperationException)
                    {
                        if (nfeProc == null)
                        {
                            try
                            {
                                NotaFiscalEletronica nota = xmlSerializer.DeserializeFromStream <NotaFiscalEletronica>(inputStream);

                                nfeProc = new NfeProc
                                {
                                    ProtNfe = new ProtNfe
                                    {
                                        InfProt = new InfProt
                                        {
                                            ChaveNFe = nota.InfNfe.Id.Replace("NFe", ""),
                                            tpAmb    = nota.InfNfe.Ide.tpAmb,
                                            VerAplic = nota.InfNfe.Ide.VerProc,
                                            Motivo   = "Protocolo não encontrado"
                                        }
                                    },

                                    Nfe = nota
                                };
                            }
                            catch (InvalidOperationException)
                            {
                                nfeProc = new NfeProc {
                                    ProtNfe = new ProtNfe {
                                        InfProt = new InfProt {
                                            Motivo = "Falha ao processar arquivo"
                                        }
                                    }
                                };
                            }
                        }
                    }
                    nfeProcList.Add(nfeProc);
                });
            }

            return(nfeProcList);
        }
Example #6
0
        private bool validarNfe(NotaFiscalEletronica nfe)
        {
            #region VARIÁVEIS
            #endregion VARIÁVEIS

            #region AÇÕES
            try
            {
                // TODO: Validar o objeto antes de ser enviado para a biblioteca principal.
                // TODO: Armazenar as possíveis críticas numa propriedade chamada "lstStrCritica".
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
            }
            #endregion AÇÕES

            return(true);
        }
        public List <NfeValidation> GetNfeValidationMessages(string path, List <Stream> pStreamList)
        {
            List <NfeValidation> NfeValidationList = new List <NfeValidation>();

            if (pStreamList != null && pStreamList.Any())
            {
                NfeXmlSerializer xmlSerializer  = new NfeXmlSerializer();
                string           xsdFileName    = null;
                List <string>    validationList = null;

                pStreamList.Select(stream => stream)
                .ToList()
                .ForEach(inputStream =>
                {
                    NfeProc nfeProc = null;
                    try
                    {
                        nfeProc             = xmlSerializer.DeserializeFromStream <NfeProc>(inputStream);
                        xsdFileName         = NfeSchemaFileResolver <NfeProc> .GetByNfeVersion(nfeProc.Versao);
                        var xsdFileNamePath = Path.Combine(path, xsdFileName);
                        validationList      = xmlSerializer.Validate(inputStream, xsdFileNamePath);
                        validationList.ForEach(msg => NfeValidationList.Add(new NfeValidation {
                            NumNf = nfeProc.Nfe.InfNfe.Ide.NumNf, Message = msg
                        }));

                        if (!validationList.Any())
                        {
                            NfeValidationList.Add(new NfeValidation {
                                NumNf = nfeProc.Nfe.InfNfe.Ide.NumNf, Message = "Nenhuma inconsistência encontrada"
                            });
                        }
                    }
                    catch (InvalidOperationException)
                    {
                        if (nfeProc == null)
                        {
                            try
                            {
                                NotaFiscalEletronica nota = xmlSerializer.DeserializeFromStream <NotaFiscalEletronica>(inputStream);
                                xsdFileName         = NfeSchemaFileResolver <NotaFiscalEletronica> .GetByNfeVersion(nota.InfNfe.Versao);
                                var xsdFileNamePath = Path.Combine(path, xsdFileName);
                                validationList      = xmlSerializer.Validate(inputStream, xsdFileNamePath);
                                validationList.ForEach(msg => NfeValidationList.Add(new NfeValidation {
                                    NumNf = nota.InfNfe.Ide.NumNf, Message = msg
                                }));

                                if (!validationList.Any())
                                {
                                    NfeValidationList.Add(new NfeValidation {
                                        NumNf = nota.InfNfe.Ide.NumNf, Message = "Nenhuma inconsistência encontrada"
                                    });
                                }
                            }
                            catch (Exception e)
                            {
                                NfeValidationList.Add(new NfeValidation {
                                    NumNf = "", Message = e.Message
                                });
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        NfeValidationList.Add(new NfeValidation {
                            NumNf = "", Message = e.Message
                        });
                    }
                });
            }

            return(NfeValidationList);
        }