/// <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 }
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 }
/// <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); }
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); }