// ------------------------------------------------------------------------- // /// <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; }
/// <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(); } }
// ------------------------------------------------------------------------- // /// <summary> /// Método para executar a proc pr_alterar_nfe /// </summary> public void AlterarNfe(NfeVO identNfe, int? codUsuarioAlt) { new Nfe().Alterar(identNfe, codUsuarioAlt); }
// ------------------------------------------------------------------------- // /// <summary> /// Método para executar a proc pr_incluir_nfe /// </summary> public void IncluirNfe(NfeVO identNFe, int? codUsuarioInc) { new Nfe().Incluir(identNFe, codUsuarioInc); }
/// <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); }
/// <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!"); } }
/// <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(); } }
// ------------------------------------------------------------------------- // /// <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(); } }