/// <summary>
        /// Responsavel por imprimir NFCe apos autorização direto na impressora padrão ou definida na configuração
        /// </summary>
        private void ImprimirNFCe(string xmlNFce, ConfiguracaoDanfeNfce configuracaoDanfe, string cIdToken, string csc, string nomedaimpressora = null)
        {
            try
            {
                nfeProc proc    = null;
                NFeZeus nfe     = null;
                string  arquivo = string.Empty;

                try
                {
                    proc    = new nfeProc().CarregarDeXmlString(xmlNFce);
                    arquivo = proc.ObterXmlString();
                }
                catch (Exception)
                {
                    nfe     = new NFe.Classes.NFe().CarregarDeArquivoXml(xmlNFce);
                    arquivo = nfe.ObterXmlString();
                }

                DanfeNativoNfce impr = new DanfeNativoNfce(arquivo,
                                                           configuracaoDanfe, cIdToken, csc,
                                                           0 /*troco*//*, "Arial Black"*/);

                impr.Imprimir();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        /// <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);
        }
예제 #3
0
        private static string ObtemUrlQrCode(NFeZeus nfce, string idToken, string csc)
        {
            var urlQrCode = nfce.infNFeSupl == null
                ? nfce.infNFeSupl.ObterUrlQrCode(nfce, _configuracaoDanfeNfce.VersaoQrCode, idToken, csc)
                : nfce.infNFeSupl.qrCode;

            return(urlQrCode);
        }
예제 #4
0
        private string ObtemUrlQrCode(NFeZeus nfce, string idToken, string csc)
        {
            var urlQrCode = nfce.infNFeSupl == null
                ? nfce.infNFeSupl.ObterUrlQrCode(nfce, _versaoQrCode, idToken, csc)
                : nfce.infNFeSupl.qrCode;

            return(urlQrCode);
        }
예제 #5
0
        private NFe.Classes.NFe GetNf(int numero)
        {
            var nfe = new NFe.Classes.NFe
            {
                infNFe = ObterInf(numero)
            };

            return(nfe);
        }
        private NFe.Classes.NFe GetNf(int numero, List <Produto> produtos)
        {
            var nfe = new NFe.Classes.NFe
            {
                infNFe = ObterInf(numero, produtos)
            };

            return(nfe);
        }
예제 #7
0
        private void ImprimirDanfeNfce(NfceLayoutQrCode layout)
        {
            try
            {
                #region Carrega um XML para a variável

                var arquivoXml = Funcoes.BuscarArquivoXml();
                if (string.IsNullOrEmpty(arquivoXml))
                {
                    return;
                }

                nfeProc nfeProc;

                try // Tenta carregar NFeProc
                {
                    nfeProc = FuncoesXml.ArquivoXmlParaClasse <nfeProc>(arquivoXml);
                }
                catch (Exception)  // Carrega NFCe sem protocolo
                {
                    NFe.Classes.NFe nfeContingenciaSemProc = FuncoesXml.ArquivoXmlParaClasse <NFe.Classes.NFe>(arquivoXml);
                    nfeProc = new nfeProc()
                    {
                        NFe = nfeContingenciaSemProc
                    };
                }

                if (nfeProc.NFe.infNFe.ide.mod != ModeloDocumento.NFCe)
                {
                    throw new Exception("O XML informado não é um NFCe!");
                }

                #endregion

                #region Abre a visualização do relatório para impressão

                var danfe = new DanfeFrNfce(proc: nfeProc, configuracaoDanfeNfce: _configuracoes.ConfiguracaoDanfeNfce, cIdToken: _configuracoes.CIdToken, csc: _configuracoes.Csc, arquivoRelatorio: string.Empty);
                danfe.Visualizar();
                //danfe.Imprimir();
                //danfe.ExibirDesign();
                //danfe.ExportarPdf(@"d:\teste.pdf");

                #endregion
            }
            catch (Exception ex)
            {
                if (!string.IsNullOrEmpty(ex.Message))
                {
                    Funcoes.Mensagem(ex.Message, "Erro", MessageBoxButton.OK);
                }
            }
        }
예제 #8
0
        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);
        }
예제 #9
0
        private static string MontaMensagemDadosNfce(NFeZeus nfce)
        {
            var mensagem = new StringBuilder("NFC-e nº ");

            mensagem.Append(nfce.infNFe.ide.nNF.ToString("D9"));
            mensagem.Append(" Série ");
            mensagem.Append(nfce.infNFe.ide.serie.ToString("D3"));
            mensagem.Append(" ");
            mensagem.Append(nfce.infNFe.ide.dhEmi.ToString("G"));
            mensagem.Append(" - ");
            mensagem.Append("Via consumidor");

            return(mensagem.ToString());
        }
        /// <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);
        }
예제 #11
0
        private static string GeraChaveAcesso(NFeZeus nfce)
        {
            string chaveAcesso      = nfce.infNFe.Id.Substring(3);
            string novaChave        = string.Empty;
            int    contaChaveAcesso = 0;

            foreach (char c in chaveAcesso)
            {
                contaChaveAcesso++;
                novaChave += c;

                if (contaChaveAcesso == 4)
                {
                    novaChave       += " ";
                    contaChaveAcesso = 0;
                }
            }
            return(novaChave);
        }
예제 #12
0
 private void CarregarXml(string xml)
 {
     try
     {
         nfeProc proc = new procNFe().nfeProc.CarregarDeXmlString(xml);
         _proc = proc;
         _nfe  = _proc.NFe;
     }
     catch (Exception)
     {
         try
         {
             NFeZeus nfe = new NFeZeus().CarregarDeXmlString(xml);
             _nfe = nfe;
         }
         catch (Exception)
         {
             throw new ArgumentException(
                       "Ei! Verifique se seu xml está correto, pois identificamos uma falha ao tentar carregar ele.");
         }
     }
 }
        /// <summary>
        /// Responsavel por Adicionar NFe a tag nfeProc e Salvar o XML
        /// </summary>
        /// <param name="ChaveNota"></param>
        /// <param name="nfe"></param>
        /// <param name="cFgServico"></param>
        /// <returns></returns>
        private void AdicionarNFeProc(string ChaveNota, Classes.NFe nfe, ConfiguracaoServico cFgServico)
        {
            try
            {
                var protocolo = this.ConsultarNfe(ChaveNota, cFgServico);

                var nfeproc = new nfeProc
                {
                    NFe     = nfe,
                    protNFe = protocolo.Retorno.protNFe,
                    versao  = protocolo.Retorno.versao
                };

                if (nfeproc.protNFe != null)
                {
                    if (nfe.infNFe.ide.mod == ModeloDocumento.NFCe)
                    {
                        //Função para salvar XML
                        SalvarXmlArquivo(nfeproc.protNFe.infProt.chNFe + "-nfce", nfeproc.ObterXmlString(), cFgServico.tpAmb);
                    }
                    else
                    {
                        //Função para salvar XML
                        SalvarXmlArquivo(nfeproc.protNFe.infProt.chNFe + "-nfe", nfeproc.ObterXmlString(), cFgServico.tpAmb);
                        //Função para salvar PDF
                        SalvarPDFArquivo(nfeproc.protNFe.infProt.chNFe + "-nfe", nfeproc.ObterXmlString(), cFgServico.tpAmb);
                    }
                }
            }
            catch (ComunicacaoException ex)
            {
                MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            catch (ValidacaoSchemaException ex)
            {
                MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #14
0
 public void SetValuesForMoriMo(NFe.Classes.NFe nfe)
 {
     nfe.infNFe.emit.CNPJ = "cnpj";
     nfe.infNFe.emit.IE   = "ie";
 }