Example #1
0
        /// <summary>
        ///     Assina um objeto CTe
        /// </summary>
        /// <param name="cte"></param>
        /// <param name="configuracaoServico"></param>
        /// <returns>Retorna um objeto do tipo CTe assinado</returns>
        public static void Assina(this CteEletronica cte, ConfiguracaoServico configuracaoServico = null)
        {
            if (cte == null)
            {
                throw new ArgumentNullException("cte");
            }

            var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;

            var modeloDocumentoFiscal = cte.infCte.ide.mod;
            var tipoEmissao           = (int)cte.infCte.ide.tpEmis;
            var codigoNumerico        = cte.infCte.ide.cCT;
            var estado           = cte.infCte.ide.cUF;
            var dataEHoraEmissao = cte.infCte.ide.dhEmi;
            var cnpj             = cte.infCte.emit.CNPJ;
            var numeroDocumento  = cte.infCte.ide.nCT;
            int serie            = cte.infCte.ide.serie;

            var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico);

            cte.infCte.Id      = "CTe" + dadosChave.Chave;
            cte.infCte.versao  = configServico.VersaoLayout;
            cte.infCte.ide.cDV = dadosChave.DigitoVerificador;

            var assinatura = AssinaturaDigital.Assina(cte, cte.infCte.Id, configServico.X509Certificate2);

            cte.Signature = assinatura;
        }
        public async Task <retEnvEvento> ManifestarAsync(ChaveFiscal chaveNFe, eTipoEventoNFe tipoEvento, string justificativa = null)
        {
            if (tipoEvento != eTipoEventoNFe.CienciaOperacao &&
                tipoEvento != eTipoEventoNFe.ConfirmacaoOperacao &&
                tipoEvento != eTipoEventoNFe.DesconhecimentoOperacao &&
                tipoEvento != eTipoEventoNFe.OperacaoNaoRealizada)
            {
                throw new Exception("Evento não permitido nesse serviço");
            }

            var xmlEvento = GerarXmlEvento(chaveNFe.Chave, tipoEvento, justificativa);

            var arqEnv = Path.Combine("Logs", Arquivo.MontarNomeArquivo("ped-eve.xml", config));
            await storage.SaveAsync(arqEnv, xmlEvento);

            await storage.SaveAsync($"{DateTime.Now.Ticks}-ped-eve.xml", xmlEvento);

            Schemas.ValidarSchema(eTipoServico.ManifestacaoDestinatario, xmlEvento, config);
            var envelope   = SoapEnvelopeFabrica.FabricarEnvelope(eTipoServico.ManifestacaoDestinatario, xmlEvento);
            var sefazUrl   = FabricarUrl.ObterUrl(eTipoServico.ManifestacaoDestinatario, config.TipoAmbiente, eModeloDocumento.NFe, eUF.AN);
            var xmlRetorno = await transmitir.TransmitirAsync(sefazUrl, envelope);

            var xmlRetLimpo = Soap.LimparEnvelope(xmlRetorno, "retEnvEvento").OuterXml;

            var arqRet = Path.Combine("Logs", Arquivo.MontarNomeArquivo("ret-eve.xml", config));
            await storage.SaveAsync(arqRet, xmlRetLimpo);

            var retEnvEvento = XmlUtils.XmlStringParaClasse <retEnvEvento>(xmlRetLimpo);

            return(retEnvEvento);
        }
        public async Task <retConsSitNFe> ConsultarPelaChave(string chaveAcesso, string versao)
        {
            var chave   = new ChaveFiscal(chaveAcesso);
            var consSit = new consSitNFe
            {
                chNFe  = chaveAcesso,
                tpAmb  = Configuracao.TipoAmbiente,
                versao = versao
            };

            var xmlEvento = XmlUtils.ClasseParaXmlString <consSitNFe>(consSit);

            var arqEnv = Path.Combine("Logs", $"{DateTime.Now.Ticks}-pedConsSitNFe.xml");
            await storage.SaveAsync(arqEnv, xmlEvento);

            var modeloDoc = chave.Modelo;

            var sefazUrl = Fabrica.FabricarUrl.ObterUrl(eTipoServico.ConsultaSituacaoNFe, Configuracao.TipoAmbiente, modeloDoc, Configuracao.UF);

            var envelope = Fabrica.SoapEnvelopeFabrica.FabricarEnvelope(eTipoServico.ConsultaSituacaoNFe, xmlEvento);

            var retornoXmlString = await Transmitir.TransmitirAsync(sefazUrl, envelope);

            var retornoXmlStringLimpa = Soap.LimparEnvelope(retornoXmlString, "retConsSitNFe").OuterXml;

            var arqRet = Path.Combine("Logs", $"{DateTime.Now.Ticks}-retConsSitNFe.xml");
            await storage.SaveAsync(arqRet, retornoXmlStringLimpa);

            var retEnvEvento = new retConsSitNFe().CarregarDeXmlString(retornoXmlStringLimpa, xmlEvento);

            return(retEnvEvento);
        }
Example #4
0
        public static MDFEletronico Assina(this MDFEletronico mdfe, EventHandler <string> eventHandlerChaveMdfe = null, object quemInvocouEventoChaveMDFe = null)
        {
            if (mdfe == null)
            {
                throw new ArgumentException("Erro de assinatura, MDFe esta null");
            }

            var modeloDocumentoFiscal = mdfe.InfMDFe.Ide.Mod;
            var tipoEmissao           = (int)mdfe.InfMDFe.Ide.TpEmis;
            var codigoNumerico        = mdfe.InfMDFe.Ide.CMDF;
            var estado           = mdfe.InfMDFe.Ide.CUF;
            var dataEHoraEmissao = mdfe.InfMDFe.Ide.DhEmi;
            var cnpj             = mdfe.InfMDFe.Emit.CNPJ;
            var numeroDocumento  = mdfe.InfMDFe.Ide.NMDF;
            int serie            = mdfe.InfMDFe.Ide.Serie;

            var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico);

            mdfe.InfMDFe.Id = "MDFe" + dadosChave.Chave;

            if (eventHandlerChaveMdfe != null)
            {
                eventHandlerChaveMdfe.Invoke(quemInvocouEventoChaveMDFe, dadosChave.Chave);
            }

            mdfe.InfMDFe.Versao  = MDFeConfiguracao.VersaoWebService.VersaoLayout;
            mdfe.InfMDFe.Ide.CDV = dadosChave.DigitoVerificador;

            var assinatura = AssinaturaDigital.Assina(mdfe, mdfe.InfMDFe.Id, MDFeConfiguracao.X509Certificate2);

            mdfe.Signature = assinatura;

            return(mdfe);
        }
        public async Task CancelarNFe()
        {
            var chave     = new ChaveFiscal("33211029310114000110550010000000041000000546");
            var protocolo = new ProtocoloAutorizacao("333210000440983");
            var infoNFe   = new InfoNFeCancelar(chave, protocolo);
            var retorno   = await nfServico.CancelarNFe.Cancelar(infoNFe);

            Console.WriteLine(retorno.XmlRecebido);
        }
Example #6
0
        /// <summary>
        ///     Assina um objeto NFe
        /// </summary>
        /// <param name="nfe"></param>
        /// <param name="cfgServico">ConfiguracaoServico para uso na classe Assinador</param>
        /// <returns>Retorna um objeto do tipo NFe assinado</returns>
        public static Classes.NFe Assina(this Classes.NFe nfe, ConfiguracaoServico cfgServico = null, X509Certificate2 _certificado = null)
        {
            var nfeLocal = nfe;

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

            var config = cfgServico ?? ConfiguracaoServico.Instancia;

            #region Define cNF

            var tamanhocNf = 9;
            var versao     = (decimal.Parse(nfeLocal.infNFe.versao, CultureInfo.InvariantCulture));
            if (versao >= 2)
            {
                tamanhocNf = 8;
            }
            nfeLocal.infNFe.ide.cNF = Convert.ToInt32(nfeLocal.infNFe.ide.cNF).ToString().PadLeft(tamanhocNf, '0');

            #endregion

            var modeloDocumentoFiscal = nfeLocal.infNFe.ide.mod;
            var tipoEmissao           = (int)nfeLocal.infNFe.ide.tpEmis;
            var codigoNumerico        = int.Parse(nfeLocal.infNFe.ide.cNF);
            var estado           = nfeLocal.infNFe.ide.cUF;
            var dataEHoraEmissao = nfeLocal.infNFe.ide.dhEmi;
            var cnpj             = nfeLocal.infNFe.emit.CNPJ;

            if (cnpj == null)
            {
                cnpj = nfeLocal.infNFe.emit.CPF.PadLeft(14, '0');
            }

            var numeroDocumento = nfeLocal.infNFe.ide.nNF;
            var serie           = nfeLocal.infNFe.ide.serie;

            var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao.LocalDateTime, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico);

            nfeLocal.infNFe.Id      = "NFe" + dadosChave.Chave;
            nfeLocal.infNFe.ide.cDV = Convert.ToInt16(dadosChave.DigitoVerificador);

            Signature assinatura = null;
            if (_certificado == null)
            {
                assinatura = Assinador.ObterAssinatura(nfeLocal, nfeLocal.infNFe.Id, config);
            }
            else
            {
                assinatura = Assinador.ObterAssinatura(nfeLocal, nfeLocal.infNFe.Id, _certificado, config.Certificado.ManterDadosEmCache, config.Certificado.SignatureMethodSignedXml, config.Certificado.DigestMethodReference, config.RemoverAcentos);
            }
            nfeLocal.Signature = assinatura;
            return(nfeLocal);
        }
        public async Task <retDistDFeInt> ConsultarPorChaveAsync(ChaveFiscal chaveNFe, bool validarXmlConsulta = true)
        {
            var distDFeInt = new distDFeInt
            {
                Versao    = "1.01",
                Cnpj      = Configuracao.Emitente.CNPJ,
                consChNFe = new consChNFe
                {
                    ChNFe = chaveNFe.Chave
                },
                cUFAutor = ((int)Configuracao.UF).ToString(),
                TpAmb    = Configuracao.TipoAmbiente
            };

            var retorno = await PrepararTransmissao(distDFeInt, validarXmlConsulta);

            var retDistDFeInt = XmlUtils.XmlStringParaClasse <retDistDFeInt>(retorno);

            return(retDistDFeInt);
        }
Example #8
0
        /// <summary>
        ///     Assina um objeto NFe
        /// </summary>
        /// <param name="nfe"></param>
        /// <returns>Retorna um objeto do tipo NFe assinado</returns>
        public static Classes.NFe Assina(this Classes.NFe nfe)
        {
            var nfeLocal = nfe;

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

            #region Define cNF

            var tamanhocNf = 9;
            var versao     = (decimal.Parse(nfeLocal.infNFe.versao, CultureInfo.InvariantCulture));
            if (versao >= 2)
            {
                tamanhocNf = 8;
            }
            nfeLocal.infNFe.ide.cNF = Convert.ToInt32(nfeLocal.infNFe.ide.cNF).ToString().PadLeft(tamanhocNf, '0');

            #endregion

            var modeloDocumentoFiscal = nfeLocal.infNFe.ide.mod;
            var tipoEmissao           = (int)nfeLocal.infNFe.ide.tpEmis;
            var codigoNumerico        = int.Parse(nfeLocal.infNFe.ide.cNF);
            var estado           = nfeLocal.infNFe.ide.cUF;
            var dataEHoraEmissao = nfeLocal.infNFe.ide.dhEmi;
            var cnpj             = nfeLocal.infNFe.emit.CNPJ;
            var numeroDocumento  = nfeLocal.infNFe.ide.nNF;
            var serie            = nfeLocal.infNFe.ide.serie;

            var dadosChave = ChaveFiscal.ObterChave(estado, dataEHoraEmissao, cnpj, modeloDocumentoFiscal, serie, numeroDocumento, tipoEmissao, codigoNumerico);

            nfeLocal.infNFe.Id      = "NFe" + dadosChave.Chave;
            nfeLocal.infNFe.ide.cDV = Convert.ToInt16(dadosChave.DigitoVerificador);

            var assinatura = Assinador.ObterAssinatura(nfeLocal, nfeLocal.infNFe.Id);
            nfeLocal.Signature = assinatura;
            return(nfeLocal);
        }
Example #9
0
 public InfoNFeCancelar(ChaveFiscal chaveAcesso, ProtocoloAutorizacao protocoloAutorizacao, string justificativa = "Nota Fiscal Emitida Indevidamente")
 {
     ChaveAcesso          = chaveAcesso ?? throw new ArgumentNullException(nameof(chaveAcesso));
     ProtocoloAutorizacao = protocoloAutorizacao ?? throw new ArgumentNullException(nameof(protocoloAutorizacao));
     Justificativa        = justificativa;
 }
        public void ChaveAcesso()
        {
            var chave = new ChaveFiscal(eUF.RJ, new DateTime(2020, 12, 01), "29310114000110", eModeloDocumento.NFCe, 1, 273, eTipoEmissao.Normal, "00028034");

            Assert.AreEqual("33201229310114000110650010000002731000280340", chave.Chave);
        }