/// <summary> /// /// </summary> /// <param name="cnpjEmitente"></param> /// <param name="numeroLote"></param> /// <param name="sequenciaEvento"></param> /// <param name="chaveAcesso"></param> /// <param name="protocolo"></param> /// <param name="justificativa"></param> /// <returns></returns> public RetornoRecepcaoEvento CancelarNFe(string cnpjEmitente, int numeroLote, short sequenciaEvento, string chaveAcesso, string protocolo, string justificativa) { var servicoNFe = new ServicosNFe(ConfiguracaoServico.Instancia); return(servicoNFe.RecepcaoEventoCancelamento(numeroLote, sequenciaEvento, protocolo, chaveAcesso, justificativa, cnpjEmitente)); }
/// <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">Sigla da UF consultada, informar 'SU' para SUFRAMA.</param> /// <param name="tipoDocumento">Tipo do documento</param> /// <param name="documento">CPF ou CNPJ</param> /// <returns>Retorna um objeto da classe RetornoNfeConsultaCadastro com o retorno do serviço NfeConsultaCadastro</returns> public RetornoNfeConsultaCadastro ConsultaCadastro(string uf, ConsultaCadastroTipoDocumento tipoDocumento, string documento) { var servicoNFe = new ServicosNFe(ConfiguracaoServico.Instancia); return(servicoNFe.NfeConsultaCadastro(uf, tipoDocumento, documento)); }
/// <summary> /// /// </summary> /// <param name="ano"></param> /// <param name="cnpj"></param> /// <param name="justificativa"></param> /// <param name="numeroInicial"></param> /// <param name="numeroFinal"></param> /// <param name="serie"></param> /// <returns></returns> public RetornoNfeInutilizacao InutilizarNumeracao(int ano, string cnpj, string justificativa, int numeroInicial, int numeroFinal, int serie) { var servicoNFe = new ServicosNFe(ConfiguracaoServico.Instancia); return(servicoNFe.NfeInutilizacao(cnpj, Convert.ToInt16(ano.ToString().Substring(2, 2)), ConfiguracaoServico.Instancia.ModeloDocumento, Convert.ToInt16(serie), Convert.ToInt32(numeroInicial), Convert.ToInt32(numeroFinal), justificativa)); }
private static async Task FuncaoStatusServico() { try { #region Status do serviço using (ServicosNFe servicoNFe = new ServicosNFe(_configuracoes.CfgServico)) { var retornoStatus = servicoNFe.NfeStatusServico(); OnSucessoSync(retornoStatus); } #endregion } catch (ComunicacaoException ex) { throw ex; } catch (ValidacaoSchemaException ex) { throw ex; } catch (Exception ex) { throw ex; } }
/// <summary> /// Responsavel por Enviar NFe para Sefaz /// </summary> /// <param name="cFgServico"></param> /// <param name="numLote"></param> /// <param name="nfe"></param> /// <returns></returns> public RetornoNFeAutorizacao EnviarNFe(int numLote, Classes.NFe nfe, ConfiguracaoServico cFgServico) { //nfe.Assina(cFgServico); //não precisa validar aqui, pois o lote será validado em ServicosNFe.NFeAutorizacao var servicoNFe = new ServicosNFe(cFgServico); var retornoEnvio = servicoNFe.NFeAutorizacao(numLote, IndicadorSincronizacao.Assincrono, new List <Classes.NFe> { nfe }, false /*Envia a mensagem compactada para a SEFAZ*/); var recibo = servicoNFe.NFeRetAutorizacao(retornoEnvio.Retorno.infRec.nRec); var cStat = this.VerificarcStat(recibo.RetornoCompletoStr, "protNFe", "infProt"); if (cStat == "100") { //Salva NFe+protNFe na tag nfeProc apos autorização da NFe this.AdicionarNFeProc(nfe.infNFe.Id.Substring(3), nfe, cFgServico); } if (nfe.infNFe.ide.mod == ModeloDocumento.NFCe) { this.SalvarXmlArquivo(nfe.infNFe.Id.Substring(3) + "-nfce", nfe.ObterXmlString(), cFgServico.tpAmb); } else { this.SalvarXmlArquivo(nfe.infNFe.Id.Substring(3) + "-nfe", nfe.ObterXmlString(), cFgServico.tpAmb); } return(retornoEnvio); }
private void BtnConsultaChave_Click(object sender, RoutedEventArgs e) { try { #region Consulta Situação NFe var chave = Funcoes.InpuBox(this, "Consultar NFe pela Chave", "Chave da NFe:"); if (String.IsNullOrEmpty(chave)) { throw new Exception("A Chave deve ser informada!"); } if (chave.Length != 44) { throw new Exception("Chave deve conter 44 caracteres!"); } var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var retornoConsulta = servicoNFe.NfeConsultaProtocolo(chave); TrataRetorno(retornoConsulta); #endregion } catch (Exception ex) { if (!String.IsNullOrEmpty(ex.Message)) { Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); } } }
private void BtnConsultaXml_Click(object sender, RoutedEventArgs e) { try { #region Consulta Situação NFe pelo XML var arquivoXml = Funcoes.BuscarArquivoXml(); var nfe = new Classes.NFe().CarregarDeArquivoXml(arquivoXml); var chave = nfe.infNFe.Id.Substring(3); if (String.IsNullOrEmpty(chave)) { throw new Exception("A Chave da NFe não foi encontrada no arquivo!"); } if (chave.Length != 44) { throw new Exception("Chave deve conter 44 caracteres!"); } var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var retornoConsulta = servicoNFe.NfeConsultaProtocolo(chave); TrataRetorno(retornoConsulta); #endregion } catch (Exception ex) { if (!String.IsNullOrEmpty(ex.Message)) { Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); } } }
/// <summary> /// Responsavel Consultar Status do Serviço da Sefaz /// </summary> /// <returns></returns> public RetornoNfeStatusServico ConsultarStatusServico(ConfiguracaoServico cFgServico) { var servicoNFe = new ServicosNFe(cFgServico); var retornoStatus = servicoNFe.NfeStatusServico(); return(retornoStatus); }
private void BtnConsultarReciboLote3_Click(object sender, RoutedEventArgs e) { try { #region Consulta Recibo de lote var recibo = Funcoes.InpuBox(this, "Consultar processamento de lote de NF-e", "Número do recibo:"); if (String.IsNullOrEmpty(recibo)) { throw new Exception("O número do recibo deve ser informado!"); } var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var retornoRecibo = servicoNFe.NFeRetAutorizacao(recibo); TrataRetorno(retornoRecibo); #endregion } catch (Exception ex) { if (!String.IsNullOrEmpty(ex.Message)) { Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); } } }
/// <summary> /// Responsavel Inutilizar NFe /// </summary> /// <param name="cFgServico"></param> /// <param name="ano"></param> /// <param name="cnpj"></param> /// <param name="justificativa"></param> /// <param name="numeroInicial"></param> /// <param name="numeroFinal"></param> /// <param name="serie"></param> /// <returns></returns> public RetornoNfeInutilizacao InutilizarNumeracao(int ano, string cnpj, string justificativa, int numeroInicial, int numeroFinal, int serie, ConfiguracaoServico cFgServico) { var servicoNFe = new ServicosNFe(cFgServico); return(servicoNFe.NfeInutilizacao(cnpj, Convert.ToInt32(ano.ToString().Substring(2, 2)), cFgServico.ModeloDocumento, serie, numeroInicial, numeroFinal, justificativa)); }
private void BtnCarregaXmlEnvia_Click(object sender, RoutedEventArgs e) { try { var lote = Funcoes.InpuBox(this, "Criar e Enviar NFe", "Id do Lote:"); if (String.IsNullOrEmpty(lote)) { throw new Exception("A Id do lote deve ser informada!"); } BtnImportarXml_Click(sender, e); _nfe.Assina(); //não precisa validar aqui, pois o lote será validado em ServicosNFe.NFeAutorizacao var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var retornoEnvio = servicoNFe.NFeAutorizacao(Convert.ToInt32(lote), IndicadorSincronizacao.Assincrono, new List <Classes.NFe> { _nfe }); TrataRetorno(retornoEnvio); } catch (Exception ex) { if (!String.IsNullOrEmpty(ex.Message)) { Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); } } }
private static async Task DownloadXml() { try { Console.WriteLine("Informe a chave da NFe para download:"); string chave = Console.ReadLine(); Console.WriteLine("Deseja manifestar a NFe? (S/N)"); bool manifestar = string.Equals(Console.ReadLine().Trim().ToLower(), "s"); using (var _certificado = CertificadoDigital.ObterCertificado(_configuracoes.CfgServico.Certificado)) using (var servicoNFe = new ServicosNFe(_configuracoes.CfgServico, _certificado)) { if (manifestar) { try { var retornoManifestacao = servicoNFe.RecepcaoEventoManifestacaoDestinatario(idlote: 1, sequenciaEvento: 1, chavesNFe: new string[] { chave }, nFeTipoEventoManifestacaoDestinatario: NFeTipoEvento.TeMdCienciaDaOperacao, cpfcnpj: _configuracoes.Emitente.CNPJ, justificativa: null); Console.WriteLine($"Retorno da manifestação: {retornoManifestacao.RetornoStr}"); } catch (Exception ex) { Console.WriteLine($"Manifestação: {ex.Message}"); } } var retornoNFeDistDFe = servicoNFe.NfeDistDFeInteresse(ufAutor: _configuracoes.EnderecoEmitente.UF.ToString(), documento: _configuracoes.Emitente.CNPJ, chNFE: chave); if (retornoNFeDistDFe.Retorno.loteDistDFeInt == null) { await Task.Delay(2000); //https://github.com/ZeusAutomacao/DFe.NET/issues/568#issuecomment-339862458 retornoNFeDistDFe = servicoNFe.NfeDistDFeInteresse(ufAutor: _configuracoes.EnderecoEmitente.UF.ToString(), documento: _configuracoes.Emitente.CNPJ, chNFE: chave); if (retornoNFeDistDFe.Retorno.loteDistDFeInt == null) { throw new Exception(retornoNFeDistDFe.Retorno.xMotivo); } } if ((retornoNFeDistDFe.Retorno.loteDistDFeInt.Count()) > 0) { var xmlBytes = retornoNFeDistDFe.Retorno.loteDistDFeInt[0].XmlNfe; string xmlStr = Compressao.Unzip(xmlBytes); Console.WriteLine($"Xml: {xmlStr}"); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
private static async Task ManifestarCienciaOperacao() { try { Console.WriteLine("Informe a chave da NFe para download:"); string chave = Console.ReadLine(); using (var _certificado = CertificadoDigital.ObterCertificado(_configuracoes.CfgServico.Certificado)) using (var servicoNFe = new ServicosNFe(_configuracoes.CfgServico, _certificado)) { var retornoManifestacao = servicoNFe.RecepcaoEventoManifestacaoDestinatario(idlote: 1, sequenciaEvento: 1, chavesNFe: new string[] { chave }, nFeTipoEventoManifestacaoDestinatario: NFeTipoEvento.TeMdCienciaDaOperacao, cpfcnpj: _configuracoes.Emitente.CNPJ, justificativa: null); Console.WriteLine($"Retorno da manifestação: {retornoManifestacao.RetornoStr}"); } } catch (Exception ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// /// </summary> /// <param name="numLote"></param> /// <param name="nfe"></param> /// <returns></returns> public RetornoNFeAutorizacao EnviarNFe(Int32 numLote, Classes.NFe nfe) { nfe.Assina(); //não precisa validar aqui, pois o lote será validado em ServicosNFe.NFeAutorizacao var servicoNFe = new ServicosNFe(ConfiguracaoServico.Instancia); return(servicoNFe.NFeAutorizacao(numLote, IndicadorSincronizacao.Assincrono, new List <Classes.NFe> { nfe })); }
private static async Task FuncaoEnviaNfeAssincrono() { try { #region Cria e Envia NFe /*var numero = Funcoes.InpuBox(this, "Criar e Enviar NFe", "Número da Nota:"); * if (string.IsNullOrEmpty(numero)) throw new Exception("O Número deve ser informado!"); * * var lote = Funcoes.InpuBox(this, "Criar e Enviar NFe", "Id do Lote:"); * if (string.IsNullOrEmpty(lote)) throw new Exception("A Id do lote deve ser informada!");*/ //parametros string numero = "123"; string lote = "321"; var versaoServico = _configuracoes.CfgServico.VersaoNFeAutorizacao; var modelo = _configuracoes.CfgServico.ModeloDocumento; //gera o objeto NFe var nfe = GetNf(Convert.ToInt32(numero), modelo, versaoServico); nfe.Assina(); //apenas para nfce /*if (nfe.infNFe.ide.mod == ModeloDocumento.NFCe) * { * nfe.infNFeSupl = new infNFeSupl(); * if (versaoServico == VersaoServico.Versao400) * nfe.infNFeSupl.urlChave = nfe.infNFeSupl.ObterUrlConsulta(nfe, _configuracoes.ConfiguracaoDanfeNfce.VersaoQrCode); * nfe.infNFeSupl.qrCode = nfe.infNFeSupl.ObterUrlQrCode(nfe, _configuracoes.ConfiguracaoDanfeNfce.VersaoQrCode, configuracaoCsc.CIdToken, configuracaoCsc.Csc); * }*/ nfe.Valida(); //envia via req ServicosNFe servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var retornoEnvio = servicoNFe.NFeAutorizacao(Convert.ToInt32(lote), IndicadorSincronizacao.Assincrono, new List <Classes.NFe> { nfe }, false /*Envia a mensagem compactada para a SEFAZ*/); OnSucessoSync(retornoEnvio); #endregion } catch (ComunicacaoException ex) { //Faça o tratamento de contingência OffLine aqui. throw ex; } catch (ValidacaoSchemaException ex) { throw ex; } catch (Exception ex) { throw ex; } }
public override RetornoNFe Emitir() { var servicoNFe = new ServicosNFe(null /*_configuracoes.CfgServico*/); var retornoEnvio = servicoNFe.NFeAutorizacao(Convert.ToInt32(Identificacao.Serie), IndicadorSincronizacao.Sincrono, null /*new List<Classes.NFe> { _nfe }*/, false); //Para consumir o serviço de forma síncrona, use a linha abaixo: //var retornoEnvio = servicoNFe.NFeAutorizacao(Convert.ToInt32(lote), IndicadorSincronizacao.Sincrono, new List<Classes.NFe> { _nfe }, true/*Envia a mensagem compactada para a SEFAZ*/); return(null); }
public void EnviarNfce(NFe.Classes.NFe nfe) { var servicoNFe = new ServicosNFe(CfgServico); var lote = 1; servicoNFe.NFeAutorizacao(Convert.ToInt32(lote), IndicadorSincronizacao.Assincrono, new List <NFe.Classes.NFe> { nfe }, true); }
private void BtnCancelarNFe_Click(object sender, RoutedEventArgs e) { try { #region Cancelar NFe var idlote = Funcoes.InpuBox(this, "Cancelar NFe", "Identificador de controle do Lote de envio:"); if (String.IsNullOrEmpty(idlote)) { throw new Exception("A Id do Lote deve ser informada!"); } var sequenciaEvento = Funcoes.InpuBox(this, "Cancelar NFe", "Número sequencial do evento:"); if (String.IsNullOrEmpty(sequenciaEvento)) { throw new Exception("O número sequencial deve ser informado!"); } var protocolo = Funcoes.InpuBox(this, "Cancelar NFe", "Protocolo de Autorização da NFe:"); if (String.IsNullOrEmpty(protocolo)) { throw new Exception("O protocolo deve ser informado!"); } var chave = Funcoes.InpuBox(this, "Cancelar NFe", "Chave da NFe:"); if (String.IsNullOrEmpty(chave)) { throw new Exception("A Chave deve ser informada!"); } if (chave.Length != 44) { throw new Exception("Chave deve conter 44 caracteres!"); } var justificativa = Funcoes.InpuBox(this, "Cancelar NFe", "Justificativa"); if (String.IsNullOrEmpty(justificativa)) { throw new Exception("A justificativa deve ser informada!"); } var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var cpfcnpj = String.IsNullOrEmpty(_configuracoes.Emitente.CNPJ) ? _configuracoes.Emitente.CPF : _configuracoes.Emitente.CNPJ; var retornoCancelamento = servicoNFe.RecepcaoEventoCancelamento(Convert.ToInt16(idlote), Convert.ToInt16(sequenciaEvento), protocolo, chave, justificativa, cpfcnpj); TrataRetorno(retornoCancelamento); #endregion } catch (Exception ex) { if (!String.IsNullOrEmpty(ex.Message)) { Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); } } }
public void GerarXmlNfe() { // EXERCICIO: trate os retornos da Sefaz e armazene o status da nota de acordo NFeSelected.StatusNota = 4; SalvarAtualizarNFe(); infNFe InfNFe = new infNFe { versao = Auxiliar.VersaoServicoParaString(_configuracoes.CfgServico.VersaoNFeAutorizacao), ide = GetIdentificacao(), emit = GetEmitente(), transp = GetTransporte() }; if (NFeSelected.NfeDestinatario.CpfCnpj != null) { InfNFe.dest = GetDestinatario(); } for (var i = 0; i < 1; i++) { InfNFe.det.Add(GetDetalhe(i, InfNFe.emit.CRT)); } InfNFe.total = GetTotal(); _nfe = new NFe.Classes.NFe(); _nfe.infNFe = InfNFe; _nfe.Assina(); string nomeArquivoXml = @"C:\T2Ti\NFe\XML\" + NFeSelected.ChaveAcesso + NFeSelected.DigitoChaveAcesso + ".xml"; _nfe.SalvarArquivoXml(nomeArquivoXml); var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var retornoEnvio = servicoNFe.NFeAutorizacao(1, IndicadorSincronizacao.Assincrono, new List <NFe.Classes.NFe> { _nfe }); // consultar protocolo var retornoConsulta = servicoNFe.NfeConsultaProtocolo(NFeSelected.ChaveAcesso + NFeSelected.DigitoChaveAcesso); _protocolo = retornoConsulta.Retorno.protNFe.infProt.nProt; string mensagem = ""; foreach (var atributos in Funcoes.LerPropriedades(retornoEnvio.Retorno)) { mensagem += atributos.Key + " = " + atributos.Value + "\r"; } MessageBox.Show(mensagem, "Informação do Sistema", MessageBoxButton.OK, MessageBoxImage.Information); }
public void ConsultarStatusServico() { var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var retornoStatus = servicoNFe.NfeStatusServico(); string mensagem = ""; foreach (var atributos in Funcoes.LerPropriedades(retornoStatus.Retorno)) { mensagem += atributos.Key + " = " + atributos.Value + "\r"; } MessageBox.Show(mensagem, "Informação do Sistema", MessageBoxButton.OK, MessageBoxImage.Information); }
// EXERCICIO: Faça as devidas adaptações na CC-e de acordo com sua necessidade public void CCe() { var idlote = Funcoes.InpuBox(null, "Carta de correção", "Identificador de controle do Lote de envio:"); if (string.IsNullOrEmpty(idlote)) { throw new Exception("A Id do Lote deve ser informada!"); } var sequenciaEvento = Funcoes.InpuBox(null, "Carta de correção", "Número sequencial do evento:"); if (string.IsNullOrEmpty(sequenciaEvento)) { throw new Exception("O número sequencial deve ser informado!"); } var chave = Funcoes.InpuBox(null, "Carta de correção", "Chave da NFe:"); if (string.IsNullOrEmpty(chave)) { throw new Exception("A Chave deve ser informada!"); } if (chave.Length != 44) { throw new Exception("Chave deve conter 44 caracteres!"); } var correcao = Funcoes.InpuBox(null, "Carta de correção", "Correção"); if (string.IsNullOrEmpty(correcao)) { throw new Exception("A Correção deve ser informada!"); } var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var cpfcnpj = string.IsNullOrEmpty(_configuracoes.Emitente.CNPJ) ? _configuracoes.Emitente.CPF : _configuracoes.Emitente.CNPJ; var retornoCartaCorrecao = servicoNFe.RecepcaoEventoCartaCorrecao(Convert.ToInt16(idlote), Convert.ToInt16(sequenciaEvento), chave, correcao, cpfcnpj); string mensagem = ""; foreach (var atributos in Funcoes.LerPropriedades(retornoCartaCorrecao.Retorno)) { mensagem += atributos.Key + " = " + atributos.Value + "\r"; } MessageBox.Show(mensagem, "Informação do Sistema", MessageBoxButton.OK, MessageBoxImage.Information); }
private static async Task CarregarNSUs() { try { Console.WriteLine("Informe o ultimo número de NSU que você tem. Se não tiver, informe 0 (zero):"); string ultimoNsu = Console.ReadLine(); Console.WriteLine("Informe a UF do autor"); string uf = Console.ReadLine(); do { RetornoNfeDistDFeInt retornoNFeDistDFe = null; using (var _certificado = CertificadoDigital.ObterCertificado(_configuracoes.CfgServico.Certificado)) using (var servicoNFe = new ServicosNFe(_configuracoes.CfgServico, _certificado)) retornoNFeDistDFe = servicoNFe.NfeDistDFeInteresse(ufAutor: _configuracoes.Emitente.enderEmit.UF.ToString(), documento: _configuracoes.Emitente.CNPJ, ultNSU: ultimoNsu.ToString()); var lote = retornoNFeDistDFe.Retorno.loteDistDFeInt; if (lote == null || !lote.Any()) { break; } Console.WriteLine($"{"NSU".PadRight(44, ' ')} | Xml"); foreach (var item in lote) { string linha = string.Empty; string xmlStr = string.Empty; if (item.XmlNfe != null) { xmlStr = Compressao.Unzip(item.XmlNfe); Console.WriteLine($"{item.NSU.ToString().PadRight(44, ' ')} | {xmlStr}"); } } await Task.Delay(2000); //https://github.com/ZeusAutomacao/DFe.NET/issues/568#issuecomment-339862458 } while (true); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
public Document SearchForDocumentDistribution(Company company, string accessKey = "") { var document = new Document(); // Normalize CNPJ number var companyCnpj = company.Cnpj.Replace(".", "").Replace("/", "").Replace("-", "").Trim(); #region Essential Validation //if (!Validation.ValidaCpfCnpj(companyCnpj)) // throw new ArgumentException("CNPJ inválido!", companyCnpj); if (string.IsNullOrEmpty(company.Estate.Trim())) { throw new ArgumentException("UF não informada!", company.Estate); } if (string.IsNullOrEmpty(company.CertificateSerialNumber.Trim())) { throw new ArgumentException("Nenhum certificado foi informado no cadastro da empresa!", company.CertificateSerialNumber); } if (string.IsNullOrEmpty(company.CertificatePassword.Trim())) { throw new ArgumentException("A senha do certificado não foi informada no cadastro da empresa!", company.CertificatePassword); } #endregion Essential Validation var certConfiguration = GetCertificateForConfig(company.CertificateSerialNumber, company.CertificatePassword); ConfiguraServico(GetEstateForConfig(company.Estate), ModeloDocumento.NFe, NFe.Classes.Informacoes.Identificacao.Tipos.TipoAmbiente.taProducao, TipoEmissao.teNormal, 10000, SecurityProtocolType.Ssl3, certConfiguration); using (var servicoNFe = new ServicosNFe(_configServico)) { // Get response from SEFAZ WS var response = servicoNFe.NfeDistDFeInteresse(company.Estate, companyCnpj, chNFE: accessKey); document = TurnIntoDFeDocument(response.Retorno.loteDistDFeInt); } return(document); }
private void BtnEnviaEpec_Click(object sender, RoutedEventArgs e) { try { /* * Atenção: * O campo dhEmi da nfe a ser vinculada ao EPEC deve ser exatamente igual ao informado m detevento do EPEC, assim como os demais dados, como emitente, destinatário, etc. * Vide a rejeição código 467 no manual do EPEC */ #region Enviar EPEC var idlote = Funcoes.InpuBox(this, "Enviar EPEC", "Identificador de controle do Lote de envio:"); if (String.IsNullOrEmpty(idlote)) { throw new Exception("A Id do Lote deve ser informada!"); } var sequenciaEvento = Funcoes.InpuBox(this, "Enviar EPEC", "Número sequencial do evento:"); if (String.IsNullOrEmpty(sequenciaEvento)) { throw new Exception("O número sequencial deve ser informado!"); } var numeronota = Funcoes.InpuBox(this, "Enviar EPEC", "Número da Nota:"); if (String.IsNullOrEmpty(numeronota)) { throw new Exception("O Número da Nota deve ser informado!"); } _nfe = GetNf(Convert.ToInt32(numeronota), ModeloDocumento.NFe, _configuracoes.CfgServico.VersaoNFeAutorizacao); var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var retornoEpec = servicoNFe.RecepcaoEventoEPEC(Convert.ToInt16(idlote), Convert.ToInt16(sequenciaEvento), _nfe, "3.10"); TrataRetorno(retornoEpec); #endregion } catch (Exception ex) { if (!String.IsNullOrEmpty(ex.Message)) { Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); } } }
public bool ManifestDfe(int idLote, int seqEvent, string accessKey, Company company, int eventCodeManifest = 0, string reason = null) { TipoEventoManifestacaoDestinatario eventCode; switch (eventCodeManifest) { case 0: eventCode = TipoEventoManifestacaoDestinatario.TeMdCienciaDaEmissao; break; case 1: eventCode = TipoEventoManifestacaoDestinatario.TeMdConfirmacaoDaOperacao; break; case 2: eventCode = TipoEventoManifestacaoDestinatario.TeMdDesconhecimentoDaOperacao; break; case 3: eventCode = TipoEventoManifestacaoDestinatario.TeMdOperacaoNaoRealizada; break; default: throw new Exception("Código de Manifestação não identificado!"); } var configCertificado = GetCertificateForConfig(company.CertificateSerialNumber, company.CertificatePassword); ConfiguraServico(GetEstateForConfig(company.Estate), ModeloDocumento.NFe, NFe.Classes.Informacoes.Identificacao.Tipos.TipoAmbiente.taProducao, TipoEmissao.teNormal, 10000, SecurityProtocolType.Ssl3, configCertificado); using (var servicoNFe = new ServicosNFe(_configServico)) { var retornoNFeDistDFe = servicoNFe.RecepcaoEventoManifestacaoDestinatario(idLote, seqEvent, accessKey, eventCode, company.Cnpj, reason); if (retornoNFeDistDFe.Retorno.cStat == 128) { return(true); } } return(false); }
/// <summary> /// Responsavel por enviar Carta de Correção para Sefaz /// </summary> /// <param name="idLote"></param> /// <param name="sequenciaEvento"></param> /// <param name="chave"></param> /// <param name="correcao"></param> /// <param name="cpfcnpj"></param> /// <param name="cFgServico"></param> /// <returns></returns> public RetornoRecepcaoEvento CartaCorrecao(int idLote, int sequenciaEvento, string chave, string correcao, string cpfcnpj, ConfiguracaoServico cFgServico) { var servicoNFe = new ServicosNFe(cFgServico); var retornoEnvio = servicoNFe.RecepcaoEventoCartaCorrecao(idLote, sequenciaEvento, chave, correcao, cpfcnpj); foreach (var evento in retornoEnvio.ProcEventosNFe) { var proceventoXmlString = evento.ObterXmlString(); if (evento.retEvento.infEvento.cStat == 135) { //Salva procEventoNFe this.SalvarXmlArquivo(evento.retEvento.infEvento.chNFe + "-procEventoNFe", proceventoXmlString, cFgServico.tpAmb); } } return(retornoEnvio); }
/// <summary> /// Envia EPEC para Sefaz /// </summary> /// <param name="idlote"></param> /// <param name="sequenciaEvento"></param> /// <param name="_nfe"></param> /// <param name="veraplic"></param> /// <param name="cFgServico"></param> /// <returns></returns> public RetornoRecepcaoEvento EnviarEPEC(int idlote, int sequenciaEvento, Classes.NFe _nfe, string veraplic, ConfiguracaoServico cFgServico) { var servicoNFe = new ServicosNFe(cFgServico); var retornoEnvio = servicoNFe.RecepcaoEventoEpec(Convert.ToInt32(idlote), Convert.ToInt16(sequenciaEvento), _nfe, veraplic); foreach (var evento in retornoEnvio.ProcEventosNFe) { var proceventoXmlString = evento.ObterXmlString(); if (evento.retEvento.infEvento.cStat == 135) { //Salva procEventoNFe this.SalvarXmlArquivo(evento.retEvento.infEvento.chNFe + "-epec", proceventoXmlString, cFgServico.tpAmb); } } return(retornoEnvio); }
/// <summary> /// Responsavel de Cancelar NFe Emitida /// </summary> /// <param name="cFgServico"></param> /// <param name="cnpjEmitente"></param> /// <param name="numeroLote"></param> /// <param name="sequenciaEvento"></param> /// <param name="chaveAcesso"></param> /// <param name="protocolo"></param> /// <param name="justificativa"></param> /// <returns></returns> public RetornoRecepcaoEvento CancelarNFe(string cnpjEmitente, int numeroLote, short sequenciaEvento, string chaveAcesso, string protocolo, string justificativa, ConfiguracaoServico cFgServico) { var servicoNFe = new ServicosNFe(cFgServico); var retornoEnvio = servicoNFe.RecepcaoEventoCancelamento(numeroLote, sequenciaEvento, protocolo, chaveAcesso, justificativa, cnpjEmitente); foreach (var evento in retornoEnvio.ProcEventosNFe) { var proceventoXmlString = evento.ObterXmlString(); if (evento.retEvento.infEvento.cStat == 135 | evento.retEvento.infEvento.cStat == 155) { //Salva procEventoNFe this.SalvarXmlArquivo(evento.retEvento.infEvento.chNFe + "-canc", proceventoXmlString, cFgServico.tpAmb); } } return(retornoEnvio); }
public void Prot(string caminho) { try { var arquivoXml = caminho; var nfe = new Classes.NFe().CarregarDeArquivoXml(arquivoXml); var chave = nfe.infNFe.Id.Substring(3); if (string.IsNullOrEmpty(chave)) { throw new Exception("A Chave da NFe não foi encontrada no arquivo!"); } if (chave.Length != 44) { throw new Exception("Chave deve conter 44 caracteres!"); } var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var retornoConsulta = servicoNFe.NfeConsultaProtocolo(chave); TrataRetorno(retornoConsulta); var nfeproc = new nfeProc { NFe = nfe, protNFe = retornoConsulta.Retorno.protNFe, versao = retornoConsulta.Retorno.versao }; var novoArquivo = _path + "\\Autorizados\\" + @"\" + nfeproc.protNFe.infProt.chNFe + "-procNfe.xml"; FuncoesXml.ClasseParaArquivoXml(nfeproc, novoArquivo); //Funcoes.Mensagem("Arquivo salvo em " + novoArquivo, "Atenção", MessageBoxButton.OK); Impressora.ImprimirDanferE(novoArquivo); } catch (Exception ex) { if (!string.IsNullOrEmpty(ex.Message)) { Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); } } }
private void BtnStatusServico_Click(object sender, RoutedEventArgs e) { try { #region Status do serviço var servicoNFe = new ServicosNFe(_configuracoes.CfgServico); var retornoStatus = servicoNFe.NfeStatusServico(); TrataRetorno(retornoStatus); #endregion } catch (Exception ex) { if (!String.IsNullOrEmpty(ex.Message)) { Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK); } } }