Exemple #1
0
        // ------------------------------------------------------------------------- // 
        /// <summary>
        /// Método para executar a proc pr_incluir_nfe 
        /// </summary>
        public void Incluir(NfeVO identNfe, int? codUsuarioInc)
        {
            OpenCommand("pr_incluir_nfe");
            try
            {
                // Parâmetros de entrada
                AddInParameter("@CodNF", DbType.Int32, identNfe.CodNF);
                AddInParameter("@CodNumLote", DbType.Int32, identNfe.CodNumLote);
                AddInParameter("@ChaveNFE", DbType.AnsiString, identNfe.ChaveNFE);
                AddInParameter("@NumProtocolo", DbType.Int32, identNfe.NumProtocolo);
                AddInParameter("@NumRecibo", DbType.String, identNfe.NumRecibo);
                AddInParameter("@IndAmbiente", DbType.Boolean, identNfe.IndAmbiente);
                AddInParameter("@IndImpressao", DbType.Boolean, identNfe.IndImpressao);
                AddInParameter("@IndTipoEmissao", DbType.String, identNfe.IndImpressao);
                AddInParameter("@CRT", DbType.String, identNfe.IndImpressao);
                AddInParameter("@IndStatus", DbType.String, identNfe.IndStatus);
                AddInParameter("@UsuarioInc", DbType.Int32, codUsuarioInc);

                ExecuteNonQuery();
            }
            finally
            {
                CloseCommand();
            }
        }
 public frmNFeCancelar(NfeVO tempNFe, nfec.Parametro tempParametro) 
 {
     InitializeComponent();
     identNFe = tempNFe;
     parametroNfe = tempParametro;
     txtNFe.Text = identNFe.ChaveNFE;
     txtProtocolo.Text = identNFe.NumProtocolo;
 }
Exemple #3
0
        /// <summary>
        /// Método para executar a proc pr_selecionar_nfe 
        /// </summary>
        public List<NfeVO> Listar(int? codNF)
        {
            OpenCommand("pr_selecionar_nfe");
            try
            {
                // Parâmetros de entrada
                AddInParameter("@CodNF", DbType.Int32, codNF);

                List<NfeVO> lstNfeVO = new List<NfeVO>();

                IDataReader dr = ExecuteReader();
                try
                {
                    while (dr.Read())
                    {
                        NfeVO nfeVO = new NfeVO();

                        nfeVO.CodNFe = GetReaderValue<int?>(dr, "CodNFe");
                        nfeVO.CodNF = GetReaderValue<int?>(dr, "CodNF");
                        nfeVO.CodNumLote = GetReaderValue<int?>(dr, "CodNumLote");
                        nfeVO.ChaveNFE = GetReaderValue<string>(dr, "ChaveNFE");
                        nfeVO.NumProtocolo = GetReaderValue<string>(dr, "NumProtocolo");
                        nfeVO.NumRecibo = GetReaderValue<string>(dr, "NumRecibo");
                        nfeVO.IndAmbiente = GetReaderValue<bool?>(dr, "IndAmbiente");
                        nfeVO.IndImpressao = GetReaderValue<bool?>(dr, "IndImpressao");
                        nfeVO.DataCadastro = GetReaderValue<DateTime?>(dr, "DataCadastro");
                        nfeVO.UsuarioInc = GetReaderValue<int?>(dr, "UsuarioInc");
                        nfeVO.DataAlteracao = GetReaderValue<DateTime?>(dr, "DataAlteracao");
                        nfeVO.UsuarioAlt = GetReaderValue<int?>(dr, "UsuarioAlt");
                        nfeVO.IndTipoEmissao = GetReaderValue<string>(dr, "IndTipoEmissao");
                        nfeVO.CRT = GetReaderValue<string>(dr, "CRT");
                        nfeVO.IndStatus = GetReaderValue<string>(dr,"IndStatus");
                        lstNfeVO.Add(nfeVO);
                    }
                }
                finally
                {
                    dr.Close();
                }

                return lstNfeVO;
            }
            finally
            {
                CloseCommand();
            }
        }
Exemple #4
0
 // ------------------------------------------------------------------------- // 
 /// <summary>
 /// Método para executar a proc pr_alterar_nfe 
 /// </summary>
 public void AlterarNfe(NfeVO identNfe, int? codUsuarioAlt)
 {
     new Nfe().Alterar(identNfe, codUsuarioAlt);
 }
Exemple #5
0
 // ------------------------------------------------------------------------- // 
 /// <summary>
 /// Método para executar a proc pr_incluir_nfe 
 /// </summary>
 public void IncluirNfe(NfeVO identNFe, int? codUsuarioInc)
 {
     new Nfe().Incluir(identNFe, codUsuarioInc);
 }
Exemple #6
0
 /// <summary>
 /// Método que grava o status de envio da NFe
 /// </summary>
 /// <param name="identNFe"></param>
 // ------------------------------------------------------------------------- // 
 public void GravarStatusNFe(NfeVO identNFe)
 {
     new Nfe().GravarStatusNFe(identNFe);
 }
Exemple #7
0
 /// <summary>
 /// Método que grava o número do recibo NFe
 /// </summary>
 /// <param name="identNFe"></param>
 // ------------------------------------------------------------------------- // 
 public void GravarReciboNFe(NfeVO identNFe)
 {
     new Nfe().GravarReciboNFe(identNFe);
 }
        private void alteraStatusGrid(NfeVO identNFe)
        {
            List<NotaFiscalVO> lstNotaFiscal = new List<NotaFiscalVO>();
            for (int i = 0; i < dgvNotaFiscal.Rows.Count; i++)
            {
                NotaFiscalVO identNotaFiscal = (NotaFiscalVO)dgvNotaFiscal.Rows[i].DataBoundItem;
                if (identNotaFiscal.CodNF == identNFe.CodNF)
                {
                    identNotaFiscal.NFe.IndStatus = "1";
                    identNotaFiscal.NFe.ChaveNFE = identNFe.ChaveNFE;
                    identNotaFiscal.NFe.NumProtocolo = identNFe.NumProtocolo;

                }
               lstNotaFiscal.Add(identNotaFiscal);
            }
            dgvNotaFiscal.DataSource = lstNotaFiscal;
        }
        private void btnSalvar_Click(object sender, EventArgs e)
        {
            
            NotaFiscalControler controler = new NotaFiscalControler();
            //Seta o progressbar para o valor inicial
            progressBar1.Minimum = 0;
            //Seta o progressbar para o valor máximo
            progressBar1.Maximum = 100;
            //Setando quantidade por passo
            progressBar1.Step = 5;
            progressBar1.PerformStep();
            lblProcesso.Text = "Iniciando processos...";
            this.Update();
            progressBar1.PerformStep();
            lblProcesso.Text = "Verificando WebServices...";
            this.Update();
            //Verifica se o serviço está em operação
            try
            {
                string operacao = controler.StatusServicoNFe(parametroNfe);
                if (operacao == "Serviço em Operação")
                {
                    List<NfeVO> lstNfe = new List<NfeVO>();
                    StringBuilder sbArquivoAssinado = new StringBuilder();
                    bool selecaoNFe = false;
                    for (int i = 0; i < dgvNotaFiscal.RowCount; i++)
                    {
                        NotaFiscalVO identNotaFiscal = (NotaFiscalVO)dgvNotaFiscal.Rows[i].DataBoundItem;
                        //Verifica quais notas fiscais foram selecionadas para gerar e assinar o xml
                        if (dgvNotaFiscal[0, i].Value != null && (bool)dgvNotaFiscal[0, i].Value == true)
                        {
                            progressBar1.Visible = true;
                            progressBar1.PerformStep();
                            lblProcesso.Text = "Gerando arquivos XML...";
                            this.Update();
                            string mensagem = controler.GerarNFe(identNotaFiscal, parametroNfe);
                            if (mensagem.Contains("NFe"))
                            {
                                NfeVO identNFe = new NfeVO();
                                identNFe.ChaveNFE = mensagem.Substring(3, 44);
                                identNFe.CodNF = identNotaFiscal.CodNF;
                                identNFe.IndAmbiente = parametroNfe.Ambiente == "1" ? true : false;
                                identNFe.IndImpressao = false;
                                identNFe.UsuarioInc = 1;
                                identNFe.NF = identNotaFiscal.NF;
                                identNFe.Serie = identNotaFiscal.Serie;
                                identNFe.RazaoSocial = identNotaFiscal.Cliente.RazaoSocial;
                                identNFe.CNPJ = identNotaFiscal.Cliente.CNPJ;
                                identNFe.EnviarEmail = identNotaFiscal.Cliente.EmailNFE;
                                lstNfe.Add(identNFe);
                            }
                            selecaoNFe = true;
                        }
                    }
                    if (selecaoNFe)
                    {
                        //Após a geração e assinatura do xml segue o processo de válidação do arquivo
                        //os arquivos que forem validos, receberam um número de lote
                        string caminho = parametroNfe.PathPrincipal + @"\nfe\arquivos\assinado\";
                        string arquivo = ((parametroNfe.PathPrincipal == string.Empty) ? Application.StartupPath : parametroNfe.PathPrincipal) +
                        "\\nfe\\retornos\\retValidacao.txt";
                        foreach (NfeVO tempNfe in lstNfe)
                        {
                            string chNFe = "NFe" + tempNfe.ChaveNFE;
                            progressBar1.PerformStep();
                            lblProcesso.Text = "Válidando arquivos...";
                            this.Update();
                            string caminhoAssinado = caminho + chNFe + "-assinado.xml";
                            //Verifica a validade do xml
                            if (!new NotaFiscalControler().ValidarNFe(caminhoAssinado, parametroNfe, "nfe_v2.00.xsd"))
                            {
                                StringBuilder sb = new StringBuilder();
                                if (File.Exists(arquivo))
                                {
                                    StreamReader rd = new StreamReader(arquivo);
                                    while (rd.Peek() >= 0)
                                        sb.Append(rd.ReadLine() + "\r\n");
                                    rd.Close();
                                    File.Delete(arquivo);
                                }
                                controler.enviarEmailAnexo("smtp.nissimetal.com.br", "[email protected];", caminhoAssinado, "Falha de Válidação", sb);
                                progressBar1.Visible = false;
                                return;
                            }
                            //Se for valido armazena no lstNfe
                            else
                            {
                                progressBar1.PerformStep();
                                lblProcesso.Text = "Arquivo Válido:" + caminhoAssinado;
                                this.Update();
                                sbArquivoAssinado.Append(caminhoAssinado + ";");
                            }

                        }
                        //Gerando arquivo de Lote
                        LoteVO identLote = new LoteVO();
                        identLote.Nfe = lstNfe;
                        int codLote = ServiceClient.GerarLote(identLote);
                        progressBar1.PerformStep();
                        lblProcesso.Text = "Gerando arquivo de Lote...";
                        this.Update();
                        string refStatus = controler.GerarLote(sbArquivoAssinado.ToString(), parametroNfe, codLote);
                        string recibo = string.Empty;

                        progressBar1.PerformStep();
                        lblProcesso.Text = "Enviando arquivo de Lote...";
                        this.Update();
                        //Envia o lote
                        recibo = controler.RecepcaoNFe(refStatus, parametroNfe);
                        NfeVO identNFe = new NfeVO();
                        identNFe.CodNumLote = codLote;
                        if (!string.IsNullOrEmpty(recibo))
                        {
                            string[] recibos = recibo.Split('#');
                            
                            recibo = recibos[1];
                        }
                        else
                        {
                            MessageBox.Show("Falha ao enviar o arquivo de lote!");
                            return;

                        }
                        identNFe.NumRecibo = recibo;
                        ServiceClient.GravarReciboNFe(identNFe);
                        Thread.Sleep(3000);
                        //Faz consulta do lote processado
                        string retorno = controler.RetRecepcaoNfe(recibo, parametroNfe);
                        //Se autorizado gera o arquivo de distribuição.
                        if (retorno.Contains("Autorizado o uso da NF-e"))
                        {
                            progressBar1.PerformStep();
                            lblProcesso.Text = retorno;
                            this.Update();
                            foreach (NfeVO identNfe in lstNfe)
                            {
                                progressBar1.PerformStep();
                                lblProcesso.Text = "Consultando protocolo NF-e...";
                                this.Update();
                                string protocolo = controler.ConsultaNFe(identNfe.ChaveNFE, parametroNfe);
                                if (!string.IsNullOrEmpty(protocolo))
                                {
                                    string[] protocolos = protocolo.Split('#');
                                    protocolo = protocolos[1];
                                }
                                else
                                {
                                    MessageBox.Show("Falha no retorno do número de protocolo!");
                                    return;
                                }
                                controler.DistribuicaoNFe(identNfe.ChaveNFE, recibo, codLote.ToString(), parametroNfe);
                                identNfe.CodNumLote = codLote;
                                identNfe.IndStatus = "1";
                                identNfe.NumRecibo = recibo;
                                identNfe.NumProtocolo = protocolo;
                                progressBar1.PerformStep();
                                lblProcesso.Text = "Gravando número do protocolo: " + protocolo;
                                this.Update();
                                //Grava o status de Autorizado o uso da NF-e
                                ServiceClient.GravarStatusNFe(identNfe);
                                alteraStatusGrid(identNfe);
                                progressBar1.PerformStep();
                                lblProcesso.Text = "Enviando Email do Arquivo XML...";
                                this.Update();

                                //Cria objeto string builder  
                                StringBuilder sbBody = new NotaFiscalControler().getBody(identNfe.Serie, identNfe.NF, identNfe.RazaoSocial, identNfe.CNPJ, identNfe.ChaveNFE, identNfe.NumProtocolo); string caminhoDistribuicao = parametroNfe.PathPrincipal + @"\nfe\arquivos\procNFe\" +
       identNfe.ChaveNFE + "-procNFe.xml";
                                string caminhoPDF = parametroNfe.PathPrincipal + @"\nfe\arquivos\" + identNfe.ChaveNFE + ".pdf";
                                controler.enviarEmailAnexo("smtp.nissimetal.com.br", "[email protected];" + identNfe.EnviarEmail, caminhoDistribuicao, " NFe Nacional", sbBody);
                                progressBar1.Step = 100;
                                progressBar1.PerformStep();
                                lblProcesso.Text = "Imprimindo Danfe...";
                                this.Update();
                                Thread.Sleep(5000);
                                controler.NFeDanfe(caminhoDistribuicao + "|",
                                 caminhoPDF + "|",
                                Convert.ToInt32(parametroNfe.Ambiente),
                                3,
                                false,
                                parametroNfe.PathPrincipal + "|",
                                parametroNfe.TotalizarCfop + "|",
                                parametroNfe.DataPacketFormSeg + "|",
                                parametroNfe.TipoDanfe + "|",
                                parametroNfe.DanfeLogo + "|",
                                parametroNfe.DanfeInfo + "|",
                                parametroNfe.DataPacket + "|"
                                );
                            }

                        }
                        else
                        {
                            controler.enviarEmailAnexo("smtp.nissimetal.com.br", "[email protected];", "Falha de Válidação", new StringBuilder(retorno));
                            NfeVO identNfe = new NfeVO();
                            identNfe.CodNumLote = codLote;
                            identNfe.IndStatus = "0";
                            identNfe.NumProtocolo = "";
                            //Grava o status de Autorizado o uso da NF-e
                            ServiceClient.GravarStatusNFe(identNfe);
                            MessageBox.Show(retorno);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Selecione pelo menos uma NF para enviar!");
                    }
                    lblProcesso.Text = string.Empty;
                    progressBar1.Visible = false;
                }
                else
                {
                    MessageBox.Show("Serviço não está em operação tente novamente mais tarde!");
                }

            }
            catch (Exception ex)
            {
                controler.enviarEmailAnexo("smtp.nissimetal.com.br", "[email protected];", " NFe Nacional - Erro", new StringBuilder(ex.Message));
                MessageBox.Show("Um erro foi encontrado no sistema, um email foi enviado para analise! \nDesulpe-nos pelo incoveniente!");
            }
        }
Exemple #10
0
 /// <summary>
 /// Método que grava o status para NF-e
 /// </summary>
 /// <param name="identNFe">Classe VO do NFeVO </param>
 /// <returns></returns>
 public void GravarStatusNFe(NfeVO identNFe)
 {
     OpenCommand("pr_gravar_statusnfe");
     try
     {
         AddInParameter("@ChaveNFe", DbType.String, identNFe.ChaveNFE);
         AddInParameter("@IndStatus", DbType.String, identNFe.IndStatus);
         AddInParameter("@NumProtocolo", DbType.String, identNFe.NumProtocolo);
         ExecuteNonQuery();
     }
     finally
     {
         CloseCommand();
     }
 }
Exemple #11
0
 // ------------------------------------------------------------------------- //
 /// <summary>
 /// Método que grava o recibo para NF-e
 /// </summary>
 /// <param name="identNFe">Classe VO do NFeVO </param>
 /// <returns></returns>
 public void GravarReciboNFe(NfeVO identNFe)
 {
     OpenCommand("pr_gravar_recibonfe");
     try
     {
         AddInParameter("@CodNumLote", DbType.Int32, identNFe.CodNumLote);
         AddInParameter("@NumRecibo", DbType.String, identNFe.NumRecibo);
         ExecuteNonQuery();
     }
     finally
     {
         CloseCommand();
     }
 }