/// <summary> /// Envia uma ou mais NFe /// </summary> /// <param name="idLote">ID do Lote</param> /// <param name="indSinc">Indicador de Sincronização</param> /// <param name="nFes">Lista de NFes a serem enviadas</param> /// <param name="compactarMensagem">Define se a mensagem será enviada para a SEFAZ compactada</param> /// <returns>Retorna um objeto da classe RetornoNFeAutorizacao com com os dados do resultado da transmissão</returns> public RetornoNFeAutorizacao NFeAutorizacao(int idLote, IndicadorSincronizacao indSinc, List <Classes.NFe> nFes, bool compactarMensagem = false) { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.NFeAutorizacao, _cFgServico.VersaoNFeAutorizacao); #region Cria o objeto wdsl para consulta var ws = CriarServicoAutorizacao(ServicoNFe.NFeAutorizacao); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, versaoDados = versaoServico }; #endregion #region Cria o objeto enviNFe var pedEnvio = new enviNFe3(versaoServico, idLote, indSinc, nFes); #endregion #region Valida, Envia os dados e obtém a resposta var xmlEnvio = pedEnvio.ObterXmlString(); if (_cFgServico.cUF == Estado.PR) //Caso o lote seja enviado para o PR, colocar o namespace nos elementos <NFe> do lote, pois o serviço do PR o exige, conforme https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe/issues/33 { xmlEnvio = xmlEnvio.Replace("<NFe>", "<NFe xmlns=\"http://www.portalfiscal.inf.br/nfe\">"); } Validador.Valida(ServicoNFe.NFeAutorizacao, _cFgServico.VersaoNFeAutorizacao, xmlEnvio); var dadosEnvio = new XmlDocument(); dadosEnvio.LoadXml(xmlEnvio); SalvarArquivoXml(idLote + "-env-lot.xml", xmlEnvio); XmlNode retorno; if (compactarMensagem) { var xmlCompactado = Convert.ToBase64String(Compressao.Zip(xmlEnvio)); retorno = ws.ExecuteZip(xmlCompactado); } else { retorno = ws.Execute(dadosEnvio); } var retornoXmlString = retorno.OuterXml; var retEnvio = new retEnviNFe().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(idLote + "-rec.xml", retornoXmlString); return(new RetornoNFeAutorizacao(pedEnvio.ObterXmlString(), retEnvio.ObterXmlString(), retornoXmlString, retEnvio)); #endregion }
/// <summary> /// Consulta a situação cadastral, com base na UF/Documento /// <para>O documento pode ser: CPF ou CNPJ. O serviço avaliará o tamanho da string passada e determinará se a coonsulta será por CPF ou por CNPJ</para> /// </summary> /// <param name="uf"></param> /// <param name="documento"></param> /// <returns>Retorna um objeto da classe RetornoNfeConsultaCadastro com o retorno do serviço NfeConsultaCadastro</returns> public RetornoNfeConsultaCadastro NfeConsultaCadastro(string uf, string documento) { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.NfeConsultaCadastro, _cFgServico.VersaoNfeConsultaCadastro); #region Cria o objeto wdsl para consulta var ws = CriarServico(ServicoNFe.NfeConsultaCadastro); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, versaoDados = versaoServico }; #endregion #region Cria o objeto ConsCad var pedConsulta = new ConsCad { versao = versaoServico, infCons = new infConsEnv { UF = uf } }; if (documento.Length == 11) { pedConsulta.infCons.CPF = documento; } if (documento.Length > 11) { pedConsulta.infCons.CNPJ = documento; } #endregion #region Valida, Envia os dados e obtém a resposta var xmlConsulta = pedConsulta.ObterXmlString(); Validador.Valida(ServicoNFe.NfeConsultaCadastro, _cFgServico.VersaoNfeConsultaCadastro, xmlConsulta); var dadosConsulta = new XmlDocument(); dadosConsulta.LoadXml(xmlConsulta); SalvarArquivoXml(DateTime.Now.ToString("yyyyMMddHHmmss") + "-ped-cad.xml", xmlConsulta); var retorno = ws.Execute(dadosConsulta); var retornoXmlString = retorno.OuterXml; var retConsulta = new retConsCad().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(DateTime.Now.ToString("yyyyMMddHHmmss") + "-cad.xml", retornoXmlString); return(new RetornoNfeConsultaCadastro(pedConsulta.ObterXmlString(), retConsulta.ObterXmlString(), retornoXmlString, retConsulta)); #endregion }
public RetornoAdmCscNFCe AdmCscNFCe(string raizCnpj, IdentificadorOperacaoCsc identificadorOperacaoCsc, string idCscASerRevogado = null, string codigoCscASerRevogado = null) { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.NfceAdministracaoCSC, _cFgServico.VersaoNfceAministracaoCSC); #region Cria o objeto wdsl para envio do pedido de Download var ws = CriarServico(ServicoNFe.NfceAdministracaoCSC); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, versaoDados = versaoServico }; #endregion #region Cria o objeto downloadNFe var admCscNFCe = new admCscNFCe { versao = versaoServico, tpAmb = _cFgServico.tpAmb, indOp = identificadorOperacaoCsc, raizCNPJ = raizCnpj }; if (identificadorOperacaoCsc == IdentificadorOperacaoCsc.ioRevogaCscAtivo) { admCscNFCe.dadosCsc = new dadosCsc { codigoCsc = codigoCscASerRevogado, idCsc = idCscASerRevogado }; } #endregion #region Valida, Envia os dados e obtém a resposta var xmlAdmCscNfe = admCscNFCe.ObterXmlString(); var dadosAdmnistracaoCsc = new XmlDocument(); dadosAdmnistracaoCsc.LoadXml(xmlAdmCscNfe); SalvarArquivoXml(raizCnpj + "-adm-csc.xml", xmlAdmCscNfe); var retorno = ws.Execute(dadosAdmnistracaoCsc); var retornoXmlString = retorno.OuterXml; var retCsc = new retAdmCscNFCe().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(raizCnpj + "-ret-adm-csc.xml", retornoXmlString); return(new RetornoAdmCscNFCe(admCscNFCe.ObterXmlString(), retCsc.ObterXmlString(), retornoXmlString, retCsc)); #endregion }
/// <summary> /// Envia um evento do tipo "EPEC" /// </summary> /// <param name="idlote"></param> /// <param name="sequenciaEvento"></param> /// <param name="nfe"></param> /// <param name="veraplic"></param> /// <returns>Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento</returns> public RetornoRecepcaoEvento RecepcaoEventoEpec(int idlote, int sequenciaEvento, Classes.NFe nfe, string veraplic) { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.RecepcaoEventoEpec, _cFgServico.VersaoRecepcaoEventoCceCancelamento); if (string.IsNullOrEmpty(nfe.infNFe.Id)) { nfe.Assina().Valida(); } var detevento = new detEvento { versao = versaoServico, cOrgaoAutor = nfe.infNFe.ide.cUF, tpAutor = TipoAutor.taEmpresaEmitente, verAplic = veraplic, dhEmi = !string.IsNullOrEmpty(nfe.infNFe.ide.dhEmi) ? nfe.infNFe.ide.dhEmi : Convert.ToDateTime(nfe.infNFe.ide.dEmi).ToString("yyyy-MM-ddTHH:mm:sszzz"), tpNF = nfe.infNFe.ide.tpNF, IE = nfe.infNFe.emit.IE, dest = new dest { UF = nfe.infNFe.dest.enderDest.UF, CNPJ = nfe.infNFe.dest.CNPJ, CPF = nfe.infNFe.dest.CPF, IE = nfe.infNFe.dest.IE, vNF = nfe.infNFe.total.ICMSTot.vNF, vICMS = nfe.infNFe.total.ICMSTot.vICMS, vST = nfe.infNFe.total.ICMSTot.vST } }; var infEvento = new infEventoEnv { cOrgao = Estado.AN, tpAmb = nfe.infNFe.ide.tpAmb, CNPJ = nfe.infNFe.emit.CNPJ, CPF = nfe.infNFe.emit.CPF, chNFe = nfe.infNFe.Id.Substring(3), dhEvento = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz"), tpEvento = 110140, nSeqEvento = sequenciaEvento, verEvento = versaoServico, detEvento = detevento }; var evento = new evento { versao = versaoServico, infEvento = infEvento }; var retorno = RecepcaoEvento(idlote, new List <evento> { evento }, ServicoNFe.RecepcaoEventoEpec); return(retorno); }
/// <summary> /// Consulta a Situação da NFe /// </summary> /// <returns>Retorna um objeto da classe RetornoNfeConsultaProtocolo com os dados da Situação da NFe</returns> public RetornoNfeDownload NfeDownloadNf(string cnpj, List <string> chaves) { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.NfeDownloadNF, _cFgServico.VersaoNfeDownloadNF); #region Cria o objeto wdsl para envio do pedido de Download var ws = CriarServico(ServicoNFe.NfeDownloadNF); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, //Embora em http://www.nfe.fazenda.gov.br/portal/webServices.aspx?tipoConteudo=Wak0FwB7dKs=#GO esse serviço está nas versões 2.00 e 3.10, ele rejeita se mandar a versão diferente de 1.00. Testado no Ambiente Nacional - (AN) versaoDados = /*versaoServico*/ "1.00" }; #endregion #region Cria o objeto downloadNFe var pedDownload = new downloadNFe { //Embora em http://www.nfe.fazenda.gov.br/portal/webServices.aspx?tipoConteudo=Wak0FwB7dKs=#GO esse serviço está nas versões 2.00 e 3.10, ele rejeita se mandar a versão diferente de 1.00. Testado no Ambiente Nacional - (AN) versao = /*versaoServico*/ "1.00", CNPJ = cnpj, tpAmb = _cFgServico.tpAmb, chNFe = chaves }; #endregion #region Valida, Envia os dados e obtém a resposta var xmlDownload = pedDownload.ObterXmlString(); Validador.Valida(ServicoNFe.NfeDownloadNF, _cFgServico.VersaoNfeDownloadNF, xmlDownload); var dadosDownload = new XmlDocument(); dadosDownload.LoadXml(xmlDownload); SalvarArquivoXml(cnpj + "-ped-down.xml", xmlDownload); var retorno = ws.Execute(dadosDownload); var retornoXmlString = retorno.OuterXml; var retDownload = new retDownloadNFe().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(cnpj + "-down.xml", retornoXmlString); return(new RetornoNfeDownload(pedDownload.ObterXmlString(), retDownload.ObterXmlString(), retornoXmlString, retDownload)); #endregion }
/// <summary> /// Consulta a Situação da NFe /// </summary> /// <returns>Retorna um objeto da classe RetornoNfeConsultaProtocolo com os dados da Situação da NFe</returns> public RetornoNfeConsultaProtocolo NfeConsultaProtocolo(string chave) { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.NfeConsultaProtocolo, _cFgServico.VersaoNfeConsultaProtocolo); #region Cria o objeto wdsl para consulta var ws = CriarServico(ServicoNFe.NfeConsultaProtocolo); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, versaoDados = versaoServico }; #endregion #region Cria o objeto consSitNFe var pedConsulta = new consSitNFe { versao = versaoServico, tpAmb = _cFgServico.tpAmb, chNFe = chave }; #endregion #region Valida, Envia os dados e obtém a resposta var xmlConsulta = pedConsulta.ObterXmlString(); Validador.Valida(ServicoNFe.NfeConsultaProtocolo, _cFgServico.VersaoNfeConsultaProtocolo, xmlConsulta); var dadosConsulta = new XmlDocument(); dadosConsulta.LoadXml(xmlConsulta); SalvarArquivoXml(chave + "-ped-sit.xml", xmlConsulta); var retorno = ws.Execute(dadosConsulta); var retornoXmlString = retorno.OuterXml; var retConsulta = new retConsSitNFe().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(chave + "-sit.xml", retornoXmlString); return(new RetornoNfeConsultaProtocolo(pedConsulta.ObterXmlString(), retConsulta.ObterXmlString(), retornoXmlString, retConsulta)); #endregion }
/// <summary> /// Consulta o status do Serviço de NFe /// </summary> /// <returns>Retorna um objeto da classe RetornoNfeStatusServico com os dados status do serviço</returns> public RetornoNfeStatusServico NfeStatusServico() { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.NfeStatusServico, _cFgServico.VersaoNfeStatusServico); #region Cria o objeto wdsl para consulta var ws = CriarServico(ServicoNFe.NfeStatusServico); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, versaoDados = versaoServico }; #endregion #region Cria o objeto consStatServ var pedStatus = new consStatServ { cUF = _cFgServico.cUF, tpAmb = _cFgServico.tpAmb, versao = versaoServico }; #endregion #region Valida, Envia os dados e obtém a resposta var xmlStatus = pedStatus.ObterXmlString(); Validador.Valida(ServicoNFe.NfeStatusServico, _cFgServico.VersaoNfeStatusServico, xmlStatus); var dadosStatus = new XmlDocument(); dadosStatus.LoadXml(xmlStatus); SalvarArquivoXml(DateTime.Now.ToString("yyyyMMddHHmmss") + "-ped-sta.xml", xmlStatus); var retorno = ws.Execute(dadosStatus); var retornoXmlString = retorno.OuterXml; var retConsStatServ = new retConsStatServ().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(DateTime.Now.ToString("yyyyMMddHHmmss") + "-sta.xml", retornoXmlString); return(new RetornoNfeStatusServico(pedStatus.ObterXmlString(), retConsStatServ.ObterXmlString(), retornoXmlString, retConsStatServ)); #endregion }
/// <summary> /// Recebe o retorno do processamento de uma ou mais NFe's pela SEFAZ /// </summary> /// <param name="recibo"></param> /// <returns>Retorna um objeto da classe RetornoNFeRetAutorizacao com com os dados do processamento do lote</returns> public RetornoNFeRetAutorizacao NFeRetAutorizacao(string recibo) { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.NFeRetAutorizacao, _cFgServico.VersaoNFeRetAutorizacao); #region Cria o objeto wdsl para consulta var ws = CriarServico(ServicoNFe.NFeRetAutorizacao); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, versaoDados = versaoServico }; #endregion #region Cria o objeto consReciNFe var pedRecibo = new consReciNFe { versao = versaoServico, tpAmb = _cFgServico.tpAmb, nRec = recibo }; #endregion #region Envia os dados e obtém a resposta var xmlRecibo = pedRecibo.ObterXmlString(); var dadosRecibo = new XmlDocument(); dadosRecibo.LoadXml(xmlRecibo); SalvarArquivoXml(recibo + "-ped-rec.xml", xmlRecibo); var retorno = ws.Execute(dadosRecibo); var retornoXmlString = retorno.OuterXml; var retRecibo = new retConsReciNFe().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(recibo + "-pro-rec.xml", retornoXmlString); return(new RetornoNFeRetAutorizacao(pedRecibo.ObterXmlString(), retRecibo.ObterXmlString(), retornoXmlString, retRecibo)); #endregion }
public RetornoRecepcaoEvento RecepcaoEventoManifestacaoDestinatario(int idlote, int sequenciaEvento, string chaveNFe, TipoEventoManifestacaoDestinatario tipoEventoManifestacaoDestinatario, string cpfcnpj, string justificativa = null) { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.RecepcaoEventoManifestacaoDestinatario, _cFgServico.VersaoRecepcaoEventoCceCancelamento); var detEvento = new detEvento { versao = versaoServico, descEvento = tipoEventoManifestacaoDestinatario.Descricao(), xJust = justificativa }; var infEvento = new infEventoEnv { cOrgao = _cFgServico.cUF == Estado.RS ? _cFgServico.cUF : Estado.AN, //RS possui endereço próprio para manifestação do destinatário. Demais UFs usam o ambiente nacional tpAmb = _cFgServico.tpAmb, chNFe = chaveNFe, dhEvento = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz"), tpEvento = (int)tipoEventoManifestacaoDestinatario, nSeqEvento = sequenciaEvento, verEvento = versaoServico, detEvento = detEvento }; if (cpfcnpj.Length == 11) { infEvento.CPF = cpfcnpj; } else { infEvento.CNPJ = cpfcnpj; } var evento = new evento { versao = versaoServico, infEvento = infEvento }; var retorno = RecepcaoEvento(idlote, new List <evento> { evento }, ServicoNFe.RecepcaoEventoManifestacaoDestinatario); return(retorno); }
/// <summary> /// Envia um evento do tipo "Carta de Correção" /// </summary> /// <param name="idlote"></param> /// <param name="sequenciaEvento"></param> /// <param name="chaveNFe"></param> /// <param name="correcao"></param> /// <param name="cpfcnpj"></param> /// <returns>Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento</returns> public RetornoRecepcaoEvento RecepcaoEventoCartaCorrecao(int idlote, int sequenciaEvento, string chaveNFe, string correcao, string cpfcnpj) { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.RecepcaoEventoCartaCorrecao, _cFgServico.VersaoRecepcaoEventoCceCancelamento); var detEvento = new detEvento { versao = versaoServico, xCorrecao = correcao, xJust = null }; var infEvento = new infEventoEnv { cOrgao = _cFgServico.cUF, tpAmb = _cFgServico.tpAmb, chNFe = chaveNFe, dhEvento = DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz"), tpEvento = 110110, nSeqEvento = sequenciaEvento, verEvento = versaoServico, detEvento = detEvento }; if (cpfcnpj.Length == 11) { infEvento.CPF = cpfcnpj; } else { infEvento.CNPJ = cpfcnpj; } var evento = new evento { versao = versaoServico, infEvento = infEvento }; var retorno = RecepcaoEvento(idlote, new List <evento> { evento }, ServicoNFe.RecepcaoEventoCartaCorrecao); return(retorno); }
/// <summary> /// Serviço destinado à distribuição de informações resumidas e documentos fiscais eletrônicos de interesse de um ator, seja este pessoa física ou jurídica. /// </summary> /// <param name="ufAutor">Código da UF do Autor</param> /// <param name="documento">CNPJ/CPF do interessado no DF-e</param> /// <param name="ultNSU">Último NSU recebido pelo Interessado</param> /// <param name="nSU">Número Sequencial Único</param> /// <returns>Retorna um objeto da classe RetornoNfeDistDFeInt com os documentos de interesse do CNPJ/CPF pesquisado</returns> public RetornoNfeDistDFeInt NfeDistDFeInteresse(string ufAutor, string documento, string ultNSU, string nSU = "0") { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.NFeDistribuicaoDFe, _cFgServico.VersaoNFeDistribuicaoDFe); #region Cria o objeto wdsl para consulta var ws = CriarServico(ServicoNFe.NFeDistribuicaoDFe); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, versaoDados = versaoServico }; #endregion #region Cria o objeto distDFeInt var pedDistDFeInt = new distDFeInt { versao = versaoServico, tpAmb = _cFgServico.tpAmb, cUFAutor = _cFgServico.cUF, distNSU = new distNSU { ultNSU = ultNSU.PadLeft(15, '0') } }; if (documento.Length == 11) { pedDistDFeInt.CPF = documento; } if (documento.Length > 11) { pedDistDFeInt.CNPJ = documento; } if (!nSU.Equals("0")) { pedDistDFeInt.consNSU = new consNSU { NSU = nSU.PadLeft(15, '0') } } ; #endregion #region Valida, Envia os dados e obtém a resposta var xmlConsulta = pedDistDFeInt.ObterXmlString(); Validador.Valida(ServicoNFe.NFeDistribuicaoDFe, _cFgServico.VersaoNFeDistribuicaoDFe, xmlConsulta); var dadosConsulta = new XmlDocument(); dadosConsulta.LoadXml(xmlConsulta); SalvarArquivoXml(DateTime.Now.ToString("yyyyMMddHHmmss") + "-ped-DistDFeInt.xml", xmlConsulta); var retorno = ws.Execute(dadosConsulta); var retornoXmlString = retorno.OuterXml; var retConsulta = new retDistDFeInt().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(DateTime.Now.ToString("yyyyMMddHHmmss") + "-distDFeInt.xml", retornoXmlString); #region Obtém um retDistDFeInt de cada evento e salva em arquivo for (int i = 0; i < retConsulta.loteDistDFeInt.Length; i++) { string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe); var retConteudo = FuncoesXml.XmlStringParaClasse <Classes.Servicos.DistribuicaoDFe.Schemas.resNFe>(conteudo); string[] schema = retConsulta.loteDistDFeInt[i].schema.Split('_'); SalvarArquivoXml(retConteudo.chNFe + "_" + schema[0] + ".xml", conteudo); } #endregion return(new RetornoNfeDistDFeInt(pedDistDFeInt.ObterXmlString(), retConsulta.ObterXmlString(), retornoXmlString, retConsulta)); #endregion }
/// <summary> /// Envia um evento genérico /// </summary> /// <param name="idlote"></param> /// <param name="eventos"></param> /// <param name="servicoEvento">Tipo de serviço do evento: valores válidos: RecepcaoEventoCancelmento, RecepcaoEventoCartaCorrecao, RecepcaoEventoEpec e RecepcaoEventoManifestacaoDestinatario</param> /// <returns>Retorna um objeto da classe RetornoRecepcaoEvento com o retorno do serviço RecepcaoEvento</returns> private RetornoRecepcaoEvento RecepcaoEvento(int idlote, List <evento> eventos, ServicoNFe servicoEvento) { var listaEventos = new List <ServicoNFe> { ServicoNFe.RecepcaoEventoCartaCorrecao, ServicoNFe.RecepcaoEventoCancelmento, ServicoNFe.RecepcaoEventoEpec, ServicoNFe.RecepcaoEventoManifestacaoDestinatario }; if ( !listaEventos.Contains(servicoEvento)) { throw new Exception(string.Format("Serviço {0} é inválido para o método {1}!\nServiços válidos: \n • {2}", servicoEvento, MethodBase.GetCurrentMethod().Name, string.Join("\n • ", listaEventos.ToArray()))); } var versaoServico = Conversao.VersaoServicoParaString(servicoEvento, _cFgServico.VersaoRecepcaoEventoCceCancelamento); #region Cria o objeto wdsl para consulta var ws = CriarServico(servicoEvento); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, versaoDados = versaoServico }; #endregion #region Cria o objeto envEvento var pedEvento = new envEvento { versao = versaoServico, idLote = idlote, evento = eventos }; foreach (var evento in eventos) { evento.infEvento.Id = "ID" + evento.infEvento.tpEvento + evento.infEvento.chNFe + evento.infEvento.nSeqEvento.ToString().PadLeft(2, '0'); evento.Assina(); } #endregion #region Valida, Envia os dados e obtém a resposta var xmlEvento = pedEvento.ObterXmlString(); Validador.Valida(servicoEvento, _cFgServico.VersaoRecepcaoEventoCceCancelamento, xmlEvento); var dadosEvento = new XmlDocument(); dadosEvento.LoadXml(xmlEvento); SalvarArquivoXml(idlote + "-ped-eve.xml", xmlEvento); var retorno = ws.Execute(dadosEvento); var retornoXmlString = retorno.OuterXml; var retEnvEvento = new retEnvEvento().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(idlote + "-eve.xml", retornoXmlString); #region Obtém um procEventoNFe de cada evento e salva em arquivo var listprocEventoNFe = new List <procEventoNFe>(); foreach (var evento in eventos) { var eve = evento; var query = (from retevento in retEnvEvento.retEvento where retevento.infEvento.chNFe == eve.infEvento.chNFe && retevento.infEvento.tpEvento == eve.infEvento.tpEvento select retevento).SingleOrDefault(); var procevento = new procEventoNFe { evento = eve, versao = eve.versao, retEvento = new List <retEvento> { query } }; listprocEventoNFe.Add(procevento); if (!_cFgServico.SalvarXmlServicos) { continue; } var proceventoXmlString = procevento.ObterXmlString(); SalvarArquivoXml(procevento.evento.infEvento.Id.Substring(2) + "-procEventoNFe.xml", proceventoXmlString); } #endregion return(new RetornoRecepcaoEvento(pedEvento.ObterXmlString(), retEnvEvento.ObterXmlString(), retornoXmlString, retEnvEvento, listprocEventoNFe)); #endregion }
/// <summary> /// Inutiliza uma faixa de números /// </summary> /// <param name="cnpj"></param> /// <param name="ano"></param> /// <param name="modelo"></param> /// <param name="serie"></param> /// <param name="numeroInicial"></param> /// <param name="numeroFinal"></param> /// <param name="justificativa"></param> /// <returns>Retorna um objeto da classe RetornoNfeInutilizacao com o retorno do serviço NfeInutilizacao</returns> public RetornoNfeInutilizacao NfeInutilizacao(string cnpj, int ano, ModeloDocumento modelo, int serie, int numeroInicial, int numeroFinal, string justificativa) { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.NfeInutilizacao, _cFgServico.VersaoNfeInutilizacao); #region Cria o objeto wdsl para consulta var ws = CriarServico(ServicoNFe.NfeInutilizacao); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, versaoDados = versaoServico }; #endregion #region Cria o objeto inutNFe var pedInutilizacao = new inutNFe { versao = versaoServico, infInut = new infInutEnv { tpAmb = _cFgServico.tpAmb, cUF = _cFgServico.cUF, ano = ano, CNPJ = cnpj, mod = modelo, serie = serie, nNFIni = numeroInicial, nNFFin = numeroFinal, xJust = justificativa } }; var numId = string.Concat((int)pedInutilizacao.infInut.cUF, pedInutilizacao.infInut.ano, pedInutilizacao.infInut.CNPJ, (int)pedInutilizacao.infInut.mod, pedInutilizacao.infInut.serie.ToString().PadLeft(3, '0'), pedInutilizacao.infInut.nNFIni.ToString().PadLeft(9, '0'), pedInutilizacao.infInut.nNFFin.ToString().PadLeft(9, '0')); pedInutilizacao.infInut.Id = "ID" + numId; pedInutilizacao.Assina(); #endregion #region Valida, Envia os dados e obtém a resposta var xmlInutilizacao = pedInutilizacao.ObterXmlString(); Validador.Valida(ServicoNFe.NfeInutilizacao, _cFgServico.VersaoNfeInutilizacao, xmlInutilizacao); var dadosInutilizacao = new XmlDocument(); dadosInutilizacao.LoadXml(xmlInutilizacao); SalvarArquivoXml(numId + "-ped-inu.xml", xmlInutilizacao); var retorno = ws.Execute(dadosInutilizacao); var retornoXmlString = retorno.OuterXml; var retInutNFe = new retInutNFe().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(numId + "-inu.xml", retornoXmlString); return(new RetornoNfeInutilizacao(pedInutilizacao.ObterXmlString(), retInutNFe.ObterXmlString(), retornoXmlString, retInutNFe)); #endregion }
/// <summary> /// Consulta a situação cadastral, com base na UF/Documento /// <para>O documento pode ser: IE, CNPJ ou CPF</para> /// </summary> /// <param name="uf">Sigla da UF consultada, informar 'SU' para SUFRAMA</param> /// <param name="tipoDocumento">Tipo de documento a ser consultado</param> /// <param name="documento">Documento a ser consultado</param> /// <returns>Retorna um objeto da classe RetornoNfeConsultaCadastro com o retorno do serviço NfeConsultaCadastro</returns> public RetornoNfeConsultaCadastro NfeConsultaCadastro(string uf, ConsultaCadastroTipoDocumento tipoDocumento, string documento) { var versaoServico = Conversao.VersaoServicoParaString(ServicoNFe.NfeConsultaCadastro, _cFgServico.VersaoNfeConsultaCadastro); #region Cria o objeto wdsl para consulta var ws = CriarServico(ServicoNFe.NfeConsultaCadastro); ws.nfeCabecMsg = new nfeCabecMsg { cUF = _cFgServico.cUF, versaoDados = versaoServico }; #endregion #region Cria o objeto ConsCad var pedConsulta = new ConsCad { versao = versaoServico, infCons = new infConsEnv { UF = uf } }; switch (tipoDocumento) { case ConsultaCadastroTipoDocumento.Ie: pedConsulta.infCons.IE = documento; break; case ConsultaCadastroTipoDocumento.Cnpj: pedConsulta.infCons.CNPJ = documento; break; case ConsultaCadastroTipoDocumento.Cpf: pedConsulta.infCons.CPF = documento; break; default: throw new ArgumentOutOfRangeException(); } #endregion #region Valida, Envia os dados e obtém a resposta var xmlConsulta = pedConsulta.ObterXmlString(); Validador.Valida(ServicoNFe.NfeConsultaCadastro, _cFgServico.VersaoNfeConsultaCadastro, xmlConsulta); var dadosConsulta = new XmlDocument(); dadosConsulta.LoadXml(xmlConsulta); SalvarArquivoXml(DateTime.Now.ToString("yyyyMMddHHmmss") + "-ped-cad.xml", xmlConsulta); var retorno = ws.Execute(dadosConsulta); var retornoXmlString = retorno.OuterXml; var retConsulta = new retConsCad().CarregarDeXmlString(retornoXmlString); SalvarArquivoXml(DateTime.Now.ToString("yyyyMMddHHmmss") + "-cad.xml", retornoXmlString); return(new RetornoNfeConsultaCadastro(pedConsulta.ObterXmlString(), retConsulta.ObterXmlString(), retornoXmlString, retConsulta)); #endregion }